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...
Sadly, my university moved away from teaching Pascal (at 100-level) in 2000 and started teaching Java instead. Has caused headaches for the teaching staff and tutors ever since ever since:
And here I was thinking it was just the students getting dummer...
Maybe it's just me, but I think C is a excellent language for beginners. The year after I finished undergrad (about 3 years ago now, so not too long out) they started using Java as the first language you learn, and I personally think it's a terrible mistake. Now, I am in no way saying I'm some superb programmer, but I definitely think I know my stuff more that the students coming after me who began their base of knowledge with Java.
Don't get me wrong, it can be a tough one to start out with, especially if you've never programmed before. But the learning curve is steep, and in the end you come out with a much better understanding of very crucial stuff; data manipulation, memory, pointers, bits/bytes, and simply when the heck is going on internally with a program, because of everything C lets you muck with (and true, perhaps screw up). And so maybe it's just due to my personal experience, but learning Java after drove me nuts. I just felt like there was whole additional level of abstraction because of all the stuff that I feel java does/hides for you. Not to mention that I think Java came easier, having the more low-level (admittedly not super-low) understanding that C gives you.
Anyway, I'll come down off my soapbox now...
4 out of 3 people have trouble with fractions
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.