A Brief History of Programming Languages?
Aviancer asks: "French computer historian Éric Lévénez has compiled a family tree of programming languages that I found quite interesting. This prompted me to wonder if there was any controversy on the issue of language lineage and my searches found another page on the same topic. I thought I'd pull an 'ask the audience' to see if there were any corrections on either (both?) pages to be made." What other computing language origins are you aware of that may not be mentioned in either page?
It is (a) percursor to object-oriented languages such as Smalltalk and C++, and was the first strongly-typed language (Python being the most recent.)
Try not. Do or do not, there is no try.
-- Dr. Spock, stardate 2822-3.
They have transparantly missed out BBC BASIC. A BASIC language, which included some of the better programming constructs of Pascal.
Half of the UK's current programmers cut their teeth on the BBC Micro/Archimedes BASIC implementations.
I learned to program with GWBasic, QBasic, TurboPascal, Modula-3 - none of which made it into the chart...
The pascal branch seems to die out around 1996ish. I remember using it in 2nd year programming as a teaching language. That was in 1995.
Is Pascal all but dead?
What do schools use now as the teaching language? Surely not C. I have nothing against it but it isn't for beginners.
Plankalkul ??
A similar historical relationship of programming languages was featured in a "centerfold" of Wired within the past two years. I forget the exact issue, but was more colorful. Unfortuneately, wired.com tends to not put these up on their web archieve. Any one else remember this?
Nice... but is it really neccessary to list tiny little update releases for current languages? And what precisely "defines" a language here-- should we treat SML/NJ as a different language than SML, because it supports continuations? Or current GHC as something other than Haskell98 because of its rank-n polymorphism and built-in support for arbitrary Arrows? And if drafts are in there (Fortran 2000), what about other drafts (ML 2000)?
And, finally, where's Scala (http://scala.epfl.ch/) on that graph?
At least it is an interesting read. Actually, I like OOP somewhat. When it is not overdone.
><////>
Same site
"These people look deep within my soul and assign me a number based on the order in which I joined" --Homer re:
The Smalltalk implementation Squeak is AWESOME. With their eToys you can do amazing things without typing any code. It is truly a wonder to behold.
Engineering and the Ultimate
I suppose it is inevitable that something like this shows uneven treatment of different areas.
For example, it seems to list about every time a vendor released a Java version, showing version numbers with 3 digits as worthy of note. By that kind of accounting, there should probably be several thousand Fortran entries.
How could they possibly miss my two languages? COW is a revolutionary system allowing for easy entry of bovines to the computer industry. There is a clear human bias in the list presented here.
There's also Whirl which was designed as an advanced and modern Java replacement.
I don't see why these two critical and important languages weren't included. I feel shocked and saddened by the dreadfully low academic standards represented here. Shocked, I tell you.
Hexy - a strategy game for iPhone/iPod Touch
At UNI (15 years ago) one of the lecturers had written an OO language that we all had to use in his subject. A bit like ADA but with looser typing. At my last job (a large Financial institution) they had written their own finacnial programming language called A+ for their IBM mainframes.
RPG was first offered as a language on the IBM 704 computers in the 1960's and was even promoted as an end-user language--funny, until you realize that programming in those days was done in assembler, and the original RPG was at least a level higher than that. I recall when I was programming in RPG II on an S/34. The boss brought the entire computing staff of 3 people to attend a seminar in Structured Programming. In preparation for that, I was reading a book on Structured Programming in Basic (can't remember the author or exact title). The intro assured me that "you can do structured programming in any language, wheter it's COBOL, PL/I or (God forbid) RPG." We wer all laughing at that, as it is indeed hard to do structured programmming without loop constructs (use GOTO) or even an if/else statement (use indicators). But, as you say, RPG has evolved since then and is even moving to free-form instead of the original form-filling metaphor.
I suppose one could produce a graphical version of a current programming language, but that would be very complicated and slow to use.
Take a look at LabView at some point
While it is primarily aimed at test and measurement applications, anything that can be done in a general purpose programming language can be done in LabView.
but that would be very complicated
It's not overly complicated. In some ways, it is significantly less complicated that text-based languages. For example, if you have a function (VI is labview terminology) that is blocked, it will automatically run other code that does not depend on the output from the blocked function. I don't have to think about threading or setting up a polling loop since it is handled automatically. Also, things like 'Do I need to make a copy of this data?' are handled by the compiler rather than being explicitly specified by the programmer.
and slow to use
With regard to speed, I have a couple of reasonably complex LabView programs that are running on PII's in the 300MHz range with no issues at all. Labview complies to machine code, so there is no issue of interpreting the graphical language at run-time. If you can figure out how to write something like this that creates large applications like Firefox, Word, or Visual Studio, you'd stand to make a fortune.
Well, at a previous employer, we had a LabView application that queried data from a SQL database based on user-specified criteria, pulled statistical data from the results and wrote it into a report, and the created an excel spreadsheet from the queried data. I'm not sure that LabView is the best language for that sort of thing, but it will work.
As far as the fortune bit, at $2000+ for the development environment, I imagine that NI makes a tidy profit off of LabView. Add to that hardware sales for embedded systems and real-time controllers capable of running LabView programs and I have to think that 'fortune' is probably a good description.
Come test your mettle in the world of Alter Aeon!
As an Emacser, you should definitely get into Common Lisp. I don't know Inform, so I can't compare the object-oriented parts of the two languages, but I have yet to come up with an object-oriented feature that I really wanted and Common Lisp didn't provide. (Incidentally, that includes multiple inheritance, which is only present in one of the more popular programming languages.)
One of the niftiest things in Common Lisp's object system is multi-methods (I can't remember if that's the right term for them...I am back in school and programming has taken the back seat.) Essentially, the polymorphic methods in Common Lisp can specialize on any of their parameters, and you can specialize not only at the type level but also at the instance level.
And you get all the great features of Lisp right along with it.
Since you use Emacs, what you want is called SLIME - Superior Lisp Interaction Mode for Emacs. It interfaces to your choice of Lisp environments (I use, and recommend, SBCL; but have used Clisp and CMUCL with it, as well.) and provides an REPL, an interactive debugger, a Lisp editing mode with HyperSpec lookup (meaning you can type a command while over a symbol and a web browser will come up with the HyperSpec page for that symbol, the HyperSpec being a really helpful Lisp resource), and really easy incremental development features like "Compile and load this file" from which you can then go to the REPL and test out your functions.
But, needless to say, it blows C++, Java, Python, Perl, C#, and even Ruby right out of the water. And it's older than many Slashdotters' parents.
And as usual, ColdFusion has been ignored by both. It was out before Rebol, Asp, PHP, etc. It's still running strong and it's a proof of concept that tag based languages (as now seen in JSP and Asp.Net) work. Where's the recognition?!?
Michael Dinowitz House of Fusion http://www.houseoffusion.com
Don't see the language JOVIAL. We should. Used in many, many USAF systems, JOVIAL was a true precursor to Ada, and influential in its own right.
If nothing else, JOVIAL should be recognized for the role it plays in things-that-go-BOOM, and therefor in the flow of world history.
However, JOVIAL is significant computationally for the way it introduced real-time extensions, suport for embedded systems, and for very-large-scale systems engineering.
All that could be done in CL, although the object forest would take slightly more work than one provided by the language directly. I'm not sure about an individual object being an instance of two classes without an intervening class, but the distinction probably makes no real difference.
CL has CLOS, the Common Lisp Object System, which takes care of all the OO stuff. The MOP, meta-object protocol, allows you to really get in and mess with its behavior. MOP isn't 100% portable between Lisp implementations, and I haven't learned how to use it, but I know that you can do wacky things like say "This class should have a metaclass not of 'class, but of 'my-special-mega-class." and probably completely interfere with method calls, etc.