
Forgotten Language: Jorf could have been Python or Ruby (2005) - wtbob
http://ralsina.me/weblog/posts/P328.html
======
V-2
Intrigued, I did some googling and found this God-forgotten FTP :)
ftp://ftp.chatnfiles.com/Simtel-CDroms/Simtel-for-Ms-Dos-
march-97-2-of-2/disc2/misclang/00_index.htm - jorf21_3.zip contains a manual
:)

Some interesting constructs / keywords, eg.

    
    
        For (Col = 0 thru 4) | Display B Music 5 times
    

And some insights:

    
    
              The Windows culture is the culture of the WinProc; programs
              dominated by massive unstructured switch statements that handle
              esoteric message flags. As different products convert to Windows,
              they unquestioningly adopt the WinProc culture.  BASIC, the
              language for the beginner, becomes Visual Basic, a language for
              precious few.  C programs become full of global values.  
    
              MS-Windows is so complicated that not even full time programmers
              can learn every command and every subsystem.  This leaves no time
              for Windows programmers to learn about their customers.  They are
              doomed to write programs that cannot meet the particular needs of
              these customer.  The legacy of Windows threatens to be like the
              legacy of UNIX; expensive techies, weak programs.
    

And design approaches:

    
    
                                      Memory Management
    
              Why is it my fault when my computer runs out of memory?  It is
              not my memory, why is it my fault?   Why do I have to "Open" a
              file just to read data from it?  What exactly is "Opening"?  Why
              can't I have two records available at the same time? 
    
              The JORF language handles its own memory, and your reward is
              freedom to allocate large structures, arrays and text.  The JORF
              memory can flush variables, methods, windows, internal values,
              and even the program stack to disk whenever memory gets scarce. 
              Data is read from file when you reference it, so there is no need
              to "Read" it, and no difference between a "memory variable" and a
              field in a record.

~~~
brusch64
Regarding the "Windows culture":

WinProc programming was indeed pretty horrible. Didn't really program a lot in
WinProc - but I've cut my teeth with MFC which was supposed to make it better.

They broke down the big switch in the program and created classes (the c in
MFC) and macros.

The VCL of Borland was more abstracted, but we've used MFC.

I am pretty happy that I don't have to do this any more.

When I started with C# and Windows Forms it seemed like a revelation for me.

~~~
gecko
You know what's ridiculous? I totally agree that WndProc was horrible. But the
web community is now reinventing it so directly that all I can do is bang my
head repeatedly on my desk.

Have you seen Facebook's Flux/Dispatcher framework, for example? The
Dispatcher is usually a massive switch statement that takes a single argument,
which will be a record field that corresponds with the event type. It's
exactly like switching on uMsg and then casting lParam to the relevant struct.
And this is considered one of the absolute best web frameworks available right
now.

On the bright side, I suppose we can look forward to equivalents of message
crackers, OWL, and MFC for React soon enough.

~~~
gecko
And the comment is now a blog post with more context for those who were lucky
enough never to write raw Windows code: [http://bitquabit.com/post/the-more-
things-change/](http://bitquabit.com/post/the-more-things-change/)

~~~
nubianwarrior
Good article.

------
mmahemoff
"If he start­ed Jorf in 1987, that means he start­ed it around the same time
Perl 1.0, (and the syn­tax is much nicer ;-). He start­ed it around the same
time Gui­do start­ed Python."

This is quite interesting as it's not really clear a better syntax would
automatically make it "win" over other languages, or even that it's a
significant factor. Maybe a prerequisite in most cases, but I think here are a
lot of other factors that can be more important:

* Surrounding library and tooling and documentation

* System requirements to comfortably run it

* Initial community

* Ability of the author to promote it

* The nature of the early adopter individuals and companies (thought experiment: young Mark Zuckerberg sits down one night and proceeds to write thefacebook v0.0.0.0.1 in Perl, not PHP)

"So, he became a suit ;-)"

I saw the emoticon ... but CTO of a startup != suit in many cases

~~~
laumars
> * _The nature of the early adopter individuals and companies (thought
> experiment: young Mark Zuckerberg sits down one night and proceeds to write
> thefacebook v0.0.0.0.1 in Perl, not PHP)_

A couple of points:

01) PHP was already very well established when Zuckerberg wrote thefacebook.
As was Perl, Python, ASP.NET, Cold Fusion, and a few Java solutions (such as
Tomcat) too. While it feels like Facebook has been around since forever, it's
actually quite a recent development relative to the age of the web. My point
being that it wasn't Facebook that made PHP big.

10) You theorise about what might have happened if early prototypes of
thefacebook written in Perl but that was actually the original language
Zuckerberg favoured (eg
[https://gist.github.com/philfreo/7257723](https://gist.github.com/philfreo/7257723)).

~~~
mmahemoff
1) True, I was a casual user of PHP before TheFacebook and remain so. The main
point of the counterfactual is about Perl, ie that Perl probably would have
retained a bigger part of the dev ecosystem. Though it's also true that a
product like HHVM may never have happened.

2) Nice! #TIL

~~~
laumars
I don't think it's fair to say that Perls lack of retention for any sizable
part of the modern web development ecosystem was down to it's performance.
Since the days of Apache 1.x Perl has had native C bindings for httpd via
mod_perl, which unsurprisingly runs circles around FastCGI and the even slower
standard CGI.

It's also worth remembering that Ruby didn't really take off as a major force
for web development until around a decade ago - after Facebook was created -
when the Rails framework was released. The reason I bring Ruby into the
discussion is because Ruby's performance is roughly on a par with Perl's while
having an arguably superior web framework (Rails) to Perl's CGI or mod_perl
modules.

As much as I love Perl (it's genuinely one of my favourite languages), it
really can be a complete pig to work with at times due to it's tendency to
encourage code golfing and the many counterintuitive language features that
were presumably inspired from shell scripting / awk. This weird and often
unexpected complexity is what I think drove a lot of people away. PHP on the
other hand, was purposely designed to be a simple language for web
development. So while PHP did take some inspiration from Perl, it was more
idiomatic to C than Perl was. Which meant it was an easier language for
developers to adopt (also be in mind that ASP - which was predominantly
VBScript - was heavily used and PHP was easier to adopt than Perl).

At least that's how I remember things back when I used to develop in the 90s

~~~
leejo
mod_perl and CGI are no longer recommended for modern perl development. We
have Mojolicious, Dancer, Catalyst, Plack, and many other modern frameworks
(and libraries). Most of _these_ will run circles around mod_perl, without
giving you the horror that is mod_perl's global variables + namespacing hacks
and its propensity to segfault.

~~~
laumars
I'm aware mod_perl and CGI aren't recommended for modern projects (I spent a
good few years as a Perl developer too). The reason I neglected to mention
Catalyst et al was because my post was a historical piece and the frameworks
you've discussed didn't exist back then.

As an aside, mod_perl's tendency to segfault was easily the single most
frustrating thing about Perl development. I've lost count of the number of
times I've ran strace against apache processes trying to trace whatever was
causing the code to crash. Ugh, glad I don't have to do that any more.

------
dreen
Looks like he only has a short unshaven facial growth [1], that barely
qualifies as a beard, which we all know are the true reason behind successful
programming languages [2]

[1] [http://assets.bizjournals.com/portland/print-
edition/p%2019%...](http://assets.bizjournals.com/portland/print-
edition/p%2019%20Companion%20link*150.jpg?v=1) [2]
[http://www.wired.com/2012/06/beard-
gallery/](http://www.wired.com/2012/06/beard-gallery/)

------
z3r0d4v3
[http://mnml.is/hn/jorf_on_war.png](http://mnml.is/hn/jorf_on_war.png)

~~~
Johnny_Brahms
Meh, that is a bit like the iTunes EULA. You are not allowed to use it to make
weapons of mass destruction.

Maybe it is removed by now, but I found it hillarious back in the day.

~~~
z3r0d4v3
yeah, let me just upload the last few songs - then my WMD is ready to rock
that continent

vs

an IDE - kinda...

~~~
dahart
Weapons of Mass Disco? Weapons of Mass Droppin beats?

In all seriousness, since we have used loud music against our enemies, and
many consider it torture, and it was banned by the UN, there may be probable
cause for the anti war clause.

------
jim_lawless
In that same era, there were other proprietary programming languages just
outside the mainstream that also attempted to abstract the low-level details
of working with the Windows API.

The Whitewater Group's Actor:

[https://en.wikipedia.org/wiki/Actor_(programming_language)](https://en.wikipedia.org/wiki/Actor_\(programming_language\))

Liana ( the formatting for the article below renders strangely in my browser
):

[http://www.drdobbs.com/cpp/the-liana-programming-
language/18...](http://www.drdobbs.com/cpp/the-liana-programming-
language/184409088)

------
stuaxo
I wonder if the author would release it to free software ?

I'm sure the archive.org people would have a runnable version, and it could be
distributed as a freedos package.

~~~
V-2
I found this: ftp://ftp.chatnfiles.com/Simtel-CDroms/Simtel-for-Ms-Dos-
march-97-2-of-2/disc2/misclang/00_index.htm

Three Jorf archives there, binaries, manual etc. could be the whole thing for
all I know. Not tested : )

~~~
z3r0d4v3
whoa - ty 4 the link man,

i just tested it and got ethically blewn away!

screener:
[http://mnml.is/hn/jorf_on_war.png](http://mnml.is/hn/jorf_on_war.png)

~~~
V-2
Anyway, it's interesting that he singled out nuclear weapons, but eg.
landmines would be just fine

~~~
neoeldex
I always figured landmines, and ammo are considered chemical weapons

------
oconnor663
I feel like history has not been kind to languages that are tightly integrated
with a GUI toolkit, unless that toolkit is HTML.

~~~
jimbokun
Objective C? Not used much outside of AppKit/UIKit applications.

------
dahart
Question- the article's premise seems to be that a language's popularity may
be based on timing and language features, as opposed to language authors
"selling" their language. How did Perl and Python gain "traction", if you
will? Was it organic and due to people finding them and seeing they were
better, or due more to Larry and Guido pushing the languages and getting the
word out, or other factors, or a combination?

------
nefitty
Well, that name probably didn't help much either.

~~~
Reason077
Yeah. "Josephine’s Recipe Fil­er"? JORF?! It all just sounds so _un-cool_
compared to "Perl" or "Python".

Not being open-source wouldn't have helped either.

~~~
tjr
Make it GPL, assign copyright to the FSF, and release it as GNU JORF. Sounds
much better.

------
ralsina
Thanks to a reddit user, you can see JORF on the web now:
[https://www.reddit.com/r/programming/comments/3okwt1/forgott...](https://www.reddit.com/r/programming/comments/3okwt1/forgotten_language_jorf_could_have_been_python_or/cvy86tf)

------
x5n1
borf? barf? can't think of many words ending in rf. bark?

    
    
        Barf
        Corf
        Curf
        Kerf
        Serf
        Surf
        Turf
        Zarf

~~~
INTPenis
Serf would be a nice marketing word today I think, you could make a little
picture that depicts the language as being in serfdom to the user. ;) Maybe
I've had too much coffee, or not enough, I forget how that works. Whatever the
case, I haven't drunk the exact right amount.

~~~
icebraining
[https://www.serfdom.io/](https://www.serfdom.io/)

~~~
skissane
and [https://serf.apache.org](https://serf.apache.org) too

~~~
INTPenis
I'll just assume those two started in the 7 hours since I posted that comment.
;)

------
beyondcompute
Wow! Awesome story! And unfortunately yet another human-oriented tool which
got dumped by the IT crowd in favor of obscurantist arcane machine-oriented
engineerism-ridden hacks that break most of the possible principles of design
and HCI and that are fantastically performant (i.e. have mind-boggling
throughput) but often quite slow (i.e. take 300ms to react to key press and
start for long seconds).

------
osswid
Did something change recently with the HN ranking algorithm?

~~~
dang
No. Why do you ask?

~~~
kristofferR
Things on the front page has way less votes and seems fresher (more quickly
replaced) than before.

There are multiple stories on the front page right now with less than 10 votes
and only one story older than 9 hours.

~~~
JonnieCache
The voting behavior of the users varies with time of day and day of the week.

