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...
(L)unix users prefer unreadable font size/typeface combinations.
I've always suspected as much.
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?
From Chaos The Great Camel created Perl, which was only slightly less chaotic but vastly more useful.
- The Book of Wall
It is remarkable how little improvement there has been in ease of use between Fortran in 1954 and Java 2 in 2004, even though the power of the underlying hardware has increased by about 10**12. Where is the development environment that is as simple to use as lego blocks which anyone over the age of 6 can use to quickly create powerful apps? Is such a thing impossible, no matter how powerful the hardware becomes?
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.
" Where's the equal time for creationism? I don't believe in this "evolution" stuff."
:)
The funny thing is that almost any time when the word "evolution" is used in modern day lingo apart from biology, "creation" is in fact what they meant.
My favorite is Linus Torvalds saying Linux is the result of evolution. His thinking is that since the pressures on Linux developers are untamed, it is like evolution, but in fact, evolution is the opposite. In evolution, it is the development which is random, and the pressures which are fairly steady.
This is often known as "Berra's Blunder" after biologist Tim Berra, who used similarities in Corvettes as proof of evolution. It seems that Berra was unaware that Corvettes were designed, and their similarities were based on similarity of designer and requirements, not of heredity
Engineering and the Ultimate
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.
The oldest programming language might be the genetic code. If we restrict this exclusively to the human doman, then the ancient Indian language Sanskrit (http://www.a42.com/node/view/173) might be the oldest language in which computable expressions can be written. In fact many classical Sanskrit poems have been shown to be mathematical theorms, productions, computations etc..
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.
How is this parody? What is it parody of? It doesn't even sound like Apostle's Creed (for one, it's too long). Unless it's a mockery of a previously-existing, well-known work, it's just a mediocre sarcasm with no basis in real literature.
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
When you booted an Interlisp-D machine you were first put into MESA, where you then had the option of loading a sysout or performing wonderfull things on the machine. After you gave the secret password 'I-ACCEPT-THE-RISK'.
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.
You cannot convert between them, therefore Perl is strongly typed. That Perl doesn't have the same types as other languages (bool, int, float, etc) doesn't mean that it's weakly typed. It just means that Perl doesn't have the types you're expecting.
Parex, TPL, Varpro, Varpro 2, Newvar were all ComputerVision
(Now owned by Parametric Technology Corp.) programming languages for 2D CAD systems in the 1970's. These systems ran on $1,000,000 16bit minicomputers which ran ComputerVision's OS named CGOS 10. Each system had 1 to 10 storage tube graphics terminals which cost around $60K+.
EZGraph was a DEC (Digital Equipment Corp.) language for creating graphs and charts on PDP 11 microcomputers in the 1970s.
You could program 1970's IBM mainframes not with just Cobol or Fortran, but with OS batch like features like JCL (Job Control Language), JES (Job Entry System) and CLists (Command Lists).
Mainframes also ran huge special programs which amounted to software languages of their own, such as SAS (Statistical Analysis System) and GPSS (General Purpose Simulation System).
Still have some code in these forgotten languages.