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.
Might have been updated lately, though. Always interesting, though. There's one for UNIX, too.
"These people look deep within my soul and assign me a number based on the order in which I joined" --Homer re:
here, maybe?
Better not tell IBM!
i never thought smalltalk dates back so far... i think i saw something like this on Wired a couple years back
This website also houses a timeline for UNIX and its derivatives/relatives.
Illegal? Samir, This is America.
Where's the equal time for creationism? I don't believe in this "evolution" stuff. I think God created .NET (cough, cough) and then rested on the seventh day.
And it was good.
Then, root created 1.
And that, too, was good.
Then, root created assembly.
And that totally rocked.
Then root created HCF.
And it was very, very bad.
Obliteracy: Words with explosions
In the beginning there was machine code, and it was code.
Then there was FORTRAN, and it was good.
Then there was LISP, and it was good.
Then there was C, and it was good.
Then there was Java, and it was good.
Then there was C#, and it was good.
On the 7th language, he rested.
Lisp.
It takes a man to suffer ignorance and smile
Be yourself no matter what they say
I don't see INTERCAL on there anywhere. Of course since it was written to be different from all existing languages, it can be kinda hard to fit in a language tree.
http://www.oreilly.com/news/graphics/prog_lang_pos ter.pdf
assembly!
The most significant programming language of them all is not even listed.
This is prolly the Slashdot record of n-ple repeated article. This comes up every few months :-O
I bet he ran out of arrows making that map.
The NSA: The only part of the US government that actually listens.
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.
Oh maybe that's why they called it a "Brief History".
An Indian-American Hindu committed to non-violent thought/speech/action alarmed by the global explosion of radical Islam
From the author
I didn't say it was.
Neither diagram shows any, but I think it could be argued to exist--the keywords struct and union, long and short (note that the "at least 64-bit type" C9X mandates is called long long int, just as it would likely be called in Algol 68 for a target where int is 16 bits), the notion of coercion. (There may well be others I am overlooking.)
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.
The Caml language (pronounce "Camel") is missing.
Caml is a programming language, easy to learn, easy to use, and yet amazingly powerful.
It is developed and distributed by INRIA (the main French research institute for computer science), since 1984. It is freely available for Unix, PC or Macintosh.
There exist two flavors of Caml: Caml Light and Objective Caml. Caml Light is merely a subset of Objective Caml, especially designed for teaching and learning the art of programming. In addition to the Caml Light's core language, Objective Caml features a powerful modules system, full support to object-oriented paradigm, and an optimizing compiler.
More information here.
HEY, they missed Centum! :-)
Just kidding, it's not like we really expect to be found on these lists.
Philosophy.
Admittedly 2004 is the first year it's a "real" programming language, so maybe that's too recent. But now it's OOP and everything.
Looking for freelance Actionscript (Flash/Flex) or ColdFusion work and/or freelance developers. Email me, put Slashdot
They misspelled:
The Devil -> Fortran I
The second link lists SQL99 as the latest. What happened to SQL03?
Plankalkul ??
Believe it. The only thing it influenced was the name.
For the Forth branch of languages, Joy and Factor are missing, which are both "functional forths", so with a large influence from lisp etc.
If I interpret this correctly, I see 6 major language families, which have heavily interbred. These are:
Apart from Joy and Lisp, which are not on the chart, the Forth subtree is the only one without outside influences.
Anyone else notice that theres a huge void between 1992 and 1995, followed with a big surge starting in '95? This is not a coincidence. :)
I'M NOT ANGRY!
The gaotse man was a programmer? Wow. Wouldn't want to touch his keyboard.
I think they forgot Movie++, which of course, runs on MovieOS. It's a great programming language, you navigate classes and objects in full blown 3d floating experiences!
Every video can be programmed to zoom up until you can see microscopic particles WITHOUT any loss of resolution!
My personal favorite is when hackers run virus attacks against giant "Gibson" computers. See, you just don't get a BSOD, you get an awesome 3d graphic eating your desktop!
IGB: More fun than eating oatmeal!
InterLisp
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?
I dont know if the author is going to read this but he has missed the progression of APL to the language 'J'
you can get more info at www.jsoftware.com
love is just extroverted narcissism
Shouldn't autocoder be in the lineage of COBOL, and shouldn't anaconda descend from Python a couple years ago? Where is CPM's compiled basic? And COBOL, I know a lot of people making money today developing in a language that disappeared back in 2002.
There's an amazing amount of detail in the chart, but there is no mention of vendor proprietary languages, like IBMs transaction control language that TSO was written in, or the DEC Forms Control Language for transaction processing.
I think this task is impossibly complex and the knowledge has often disappeared with the death of a company here and there.
"Sic Semper Path of Least Resistance"
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?
It's a documented fact that Objective-C was an influence on Java, at least as far as some of it's dynamic features are concerned.
While this is reflected on the first link, it's not reflected properly on the second.
GJC
Gregory Casamento
## Chief Maintainer for GNUstep
What, no xTalk!? Probably the most human readable language ever invented, and was the primary inspiration for JavaScript.
I believe xTalk kinda borrowed from Pascal, but Dan Winkler basically came up with the whole thing on his own.
Oh well. Just my $0.02USD.
One obvious problem with the first one is the failure to list C++ as a predecessor for ANSI C. This is corrected in the second link.
For those who don't know, ANSI C borrowed (at least) prototypes and the 'const' modifier from C++. ANSI C also influenced C++ of course, so the two have a cyclic relationship.
I don't like OOP but saying that it will never be useful is a little absurb. For certain tasks, it works better. It just happens that is a very small group.
Googling for "FOCAL" turned up this interesting page on the taxonomy of computer languages
[1]h tml
0 6&language=FOCAL
http://www.faqs.org/faqs/dec-faq/pdp8/section-11.
http://hopl.murdoch.edu.au/showlanguage.prx?exp=4
[2] my school had use of a HP 9830 for half a term a year, and I was the one usually found in front of it after school.
Really
;)
"It is a greater offense to steal men's labor, than their clothes"
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?
no, not in the gaming sense...
It and COBOL probably have the most LOC for business software hands down....
Twin/Triplet/Quad?
One from a safe source:
a ge poster_0504.html
http://www.oreilly.com/pub/a/oreilly/news/langu
At least it is an interesting read. Actually, I like OOP somewhat. When it is not overdone.
><////>
I didn't see C#, VB, hell any flavors of BASIC - they count every bit as much as ruby - even more so, since they actually see use day to day in the real world.
I didn't see Prolog or any logical languages. I didn't see a whole lot of stuff.
Wait, there's VB. As a decendent of MS Basic 2.0? What, no QuickBasic in between (or the million other flavors MSFT pumped out in the interim - PETBasic for the commies comes to mind).
Is Logo there? Because if you forget everyone's favorite turtle you missed the whole point of the excercise.
And what of brainfuck?
I don't need no instructions to know how to rock!!!!
Python is a strongly typed language. It is in the class of strongly- and dynamically-typed languages. Read this article on Python's type system for a good overview and a little information on "type" terminology.
the growth in cynicism and rebellion has not been without cause
Try to smile when you say that.
Don't blame me, I voted for Baltar.
Yeah, admit it I do... millions of lines of code in my misspent youth (and that was just one program). Grace, when I die I'm gonna look you up and kick your a--!
Same site
"These people look deep within my soul and assign me a number based on the order in which I joined" --Homer re:
I've had the O'Reilly poster on my wall since they released it. So when I saw the graphic on this guy's site, with a January 16, 2005 copyright, and no reference of O'Reilly's poster, I thought it smelled fishy.
g _lang_pos ter.pdfh tml#02
Just take a look at the two images:
http://www.oreilly.com/news/graphics/pro
vs
http://www.levenez.com/lang/history.
and tell me you don't see the similarities.
Anyway, so I thought this guy ripped off O'Reilly's poster, but, as it turns out, if you look in the small print on O'Reilly's poster, you'll see that he was the legitimate creator of the image. I even realized that it's been updated a little bit since O'Reilly released it.
So, yeah, we've seen this story before, however, the link provided in the summary above is new and newsworthy, becuase it gives more links to learn about each individual and family of languages and updated the previous graph.
She loves me: 09F911029D74E35BD84156C5635688C0 She loves me not: 09F911029D74E35BD84156C5635688BF
I'm suprised that Dibol didn't make it into either chart - for a while it was a fairly important business language. It was supplied with DEC VAX systems, and ran a *lot* of software for a *lot* of businesses. It even had its own ANSI standard.
It's not doing much any more (it still exists, on various platforms, but is mainly limited to legacy systems), but I think it was big enough in its day to be worthy of at least an entry.
(Spudley Strikes Again!)
FORTH is at the top - It came from nowhere, and is unrelated to anything else, yeagh!
dup 10 / dup s1 ! 10 * - s2 !
try { do() || do_not(); } catch (JediException err) { yoda(err); }
OOP can make any project employ more peole for longer while pretending to be cost effective. The fact that nobody outside the OOP world can graps what the stuff actually does is particularly beneficial. Its in the same league as COBOL when it comes to getting the most man-hours out of the contract.
Sent from my ASR33 using ASCII
This was a Pascal derivative invented by Control Data Corporation in the 80's. They wrote an entire operating system, NOS/VE, in it. It was a pretty nice system level language. The OS was pretty nice too, nothing like what most people are exposed to today, had a lot of nice security features and was well organized.
If we look at the tree, we see that three of the most modern languages where created about the same time (1991-1993), with a high fan-in (number of parent languages).
:-).
Java was called Oak then, but Python and Ruby didn't change names. If we try to preview the future, I would say that the ball is with C# now, but I really don't like this idea
INTERCAL represented true innovation. I mean come on, any language is worthless unless it has a COME FROM statement! (*)
(*) I'm aware that exceptions actually offer a (weaker) form of COME FROM statement... which is somewhat ironic since they were meant to improve structured programming.
...though I feel you are rather lucky having the last entry fall off the edge of the post and thus reduce significantly the flameage you may get.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
For those, like me, who have no idea what this guy is talking about, see this.
One of my favorites.
What about HyperCard for us Mac old-timers?
hack a day
Theo Van Gogh
The Armanious family of New Jersey
Deepika Thathaal
Fortran is always shown as having come from a vacuum, but surely it was inspired by the various "Autocode" languages, of which "Mercury Autocode" is the most famous. (Note: this was all before my time.)
:= ("x", 42);
Smalltalk is derived from Alan Kay's earlier language, Flex, which in turn stole heavily from Euler (Kay confirms this), which was the language Wirth designed before he did Pascal.
Euler was an early example of a dynamically typed, garbage collected language with an algol-like syntax. Now we have python, javascript, and so on.
Python is heavily based on ABC.
Euler must have been a primary influence on Setl, which in turn influenced other languages. Setl was a dynamically typed, garbage collected language with an algol-ish syntax, with arrays (called tuples) and sets as first class values. The List comprehensions of Haskell (and more recently Python) come from Setl. Setl is the first language I know to have the 'slice' notation for extracting subranges from a list:
list(i:j)
list(i:)
Although, i was 1 based, not 0 based, and j was a length, not an index. This slice notation was picked up by Icon, which changed j from a length to an index, and introduced negative indexes. From Icon, slice notation migrated into Python, presumably via ABC (I have no ABC documentation to check), where indexing changed from 1 based to 0 based.
The type names in C all seem to come from Algol 68. They couldn't have come from B or BCPL, which do not have types. Examples of C/Algol 68 type names include "int", "char", "long int" and "void", as well as "struct". This is C:
struct {char c; int x;} s = {'x', 42};
This is Algol 68:
struct (char c, int x) s
Algol 68 has a +:= operator, but I think that comes from C. This is speculation, based on the observation that C's += operator was originally spelled =+, then changed due to the ambiguity of parsing x=+y.
The second link shows Javascript decended from Java, which is surely wrong. Javascript was developed with no knowledge of Java. It was originally called LiveScript, then changed to Javascript for marketing reasons. I'm pretty sure that Javascript/Livescript got its object system from Self, the first prototype-based object oriented language. Self descends from Smalltalk.
I have written a truly remarkable program which this sig is too small to contain.
I thought we had posted this a while back?
e poster_0504.html
O'Reilly had even made a spiffy poster with it?
http://www.oreilly.com/pub/a/oreilly/news/languag
Uh... Where is Lua?
-- uh...
An annoying presentational issue about that graph is that it confuses language versions with implementation versions. This makes single-implementation languages with lots of small versions seem to be much more robust (in that their timelines don't die out in the late 90s) than languages with a separate language definition. For instance, I know that there are at least three SML compilers that are worked on actively in 2005 (and which each have language enhancements that would probably constitute a new "version"), despite the last published formal spec being in 1997.
...errr, shouldn't that be Yoda, not Spock? It doesn't even SOUND like Spock.
I would think the oldest programming language should be listed as the mathematical psuedocode Ada Lovelace wrote programs in for the Babbage Unniversal Calculating Machine.
...hasn't posted a "corrected" version of this, clearly showing they own C and every language ever derived from it.
There is some minor debate, but much of it is not heated.
In the programming world, the creation of a language often starts with a very small number of people. These people typically attribute concepts to various other languages as they see them. As a result, the author typically says, somewhere, that aspect foo comes from language bar. Sometimes that is in the language documentation, sometimes that is in the source, sometimes that is in an interview down the road.
I was wondering if anyone knew of a program that would create images like the one linked to. Often during programming assignmnets I find the need to debug complicated data structures. Sure I can try to piece them together using pen, paper, and System.out.println()... but if I could create some interface or create a text file that could be processed into an actual graph like these that would make debugging more intuitive and a lot faster.
Your CPU is not doing anything else, at least do something.
Coming from a procedural background and now being forced to adapt, my kneejerk reaction is to agree. However, it's becoming, whether I like it or not, a Java world. The one thing I hate is even if you're writing a pretty straightforward command line program, you still have these silly hoops to jump through
The world's burning. Moped Jesus spotted on I50. Details at 11.
Erlang was developed, starting in the late '80s. It was influenced by Prolog (in which the first interpreter was written), Parlog and LISP. This page shows a concise history.
demi
More proof that C# is just a big java ripoff
Naturally it was used for many things.
Plankalkül was developed in the first half of the 1940ies by Konrad Zuse.
Wikipedia has(as usual) for more information.
This Timeline of programming languages lacks the tree information of relationships but gives a lot more examples of milestones of developing a computer language... Okay, by using the "Predecessor" line, it could be something like a tree. Hmm. I'm too tired to do it myself.
I think it should be taught just to expand student's tiny little brains. It makes reading Godel, Escher, Bach a much more enlightening experience.
So tell me when I start to sound like an aging hippie.
Can somebody explain the link he did from VB 3 to Delphi ?
What does link VB to Delphi ?
I've used both, and they have nothing in common.
Delphi comes from Turbo Pascal, nothing to do with VB
Avoid the MS tax, always buy I.B.M. PC's (I Built-it Myself)
http://hopl.murdoch.edu.au/showlanguage2.prx?exp=2 07
I've worked with the AS400 and I know plenty of Cobol people (hell, my dad is one). However, I don't know a soul that's ever used it [RPG], let alone currently doing development/maintainence.
Anyone here actually use RPG (or it's descendants)? Any war stories?
Additionally -- it could be my eyes -- I didn't see RPG on the non-pdf 'family tree'.
Read Heinlein's 1953 Revolt in 2100, now more than ever.
It's true on both time and causality.
Alan says so himself here
Read more of this story at Slashdot.Read more of this story at Slashdot.Read more of this story at Slashdot.
http://strlen.com/proglang/index.html
If nothing else, his languages have cool names!
Still, the differences between C++ and Objective-C might provide for amusing distinction betweent the two...
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.
NewtonScript (not included in either list) was a really nice language based on the language "Self" (included in both lists) that was used to program the Apple Newton devices. In fact, the Newton OS itself had many important pieces that were implemented in NewtonScript.
It may have been obscure, but it was important to me as I made my living for a few years writing code in this language. It was really nice. When the Newton was canceled and I switched to C++, I kept having a feeling for years that I was writing inelegant code because of the elegance of NewtonScript.
BTW NewtonScript is not the same language as AppleScript and they are not really related. NewtonScript was created by Walter Smith.
Avoid Missing Ball for High Score
There are a number of dependencies which are not indicated on the chart, and a few dependencies which are on the chart but don't exist or are very weak.
For example, Python borrows tremendously from Lisp and its creator ackonwledges that. Python has dynamic lists in the grammar of the language, functions as first class objects, and LAMBDA expressions which are clearly derived from Lisp. Some people have maintained that Python is an attempt to bridge algol-derived languages (like C) with Lisp. Still, the chart indicates no dependency.
Java is shown as borrowing from SmallTalk and this is true but only to a very limited extent.
PHP/FI is seen as a derivative of Perl but the early syntax was borrowed from both C and Perl.
The influence of simula on everything is not indicated.
I've seen this chart before, and it's curious to me that there are no offshoots of FORTRAN since the 60's. Is this really true? I've been thinking about learning FORTRAN 95 for scientific simulations, but I'm curious about similar alternatives as well.
- Snobol, which didn't spread much, but eventually merged with a Fortran derivative to beget Perl.
- Flowmatic, which became Cobol, then Rexx.
- Fortran 1, which became pretty much everything else, via Algol. This is the main part of the main stream.
- Lisp, the other main stream, which joined with Fortran to make Scheme, and joined with it again to make Dylan.
- Prolog, which joined up with Lisp
- APL, which continues today (unlike Snobol) and has some recognizable descendants (unlike Snobol and Flowmatic).
- ISWIM and
- ML which are the only ones that I'd never heard of before, though I recognize their descendants Haskel and Camel.
This ignores sh and SEQUEL, which stand almost entirely alone.There are two main streams, Snobol/Flowmatic/Fortran and Lisp/Prolog. There isn't much communication between them. Their two points of convergence, Scheme and Dylan, so far show no signs of spawning the sort of tree of descendants which sprung from their ancestors, Fortran and Lisp.
ISWIM/ML and APL have almost no communication with either of the mainstreams. Chopping either of them out of the picture would leave few orphaned hybrids.
All those languages from just seven big ideas.
See what I've been reading.
In This chart, Fortran is the first Computer Language. This is not true, The first Computer Language, was "Plankalkül" (Plan-Calculus) invented 1936 by Conrad Zuse to program his "Z1" Computer (The first binary and programmable computer in the world). The Programs were fed into the computer using punched 35mm Celluloyd film-rols.
EOF
On the upside you didn't mention C#.
I'd have to read some of your Whitespace to see just what your coding style looks like (so to speak).
Your experience in Argh! and BlooP are interesting, but Ook! (however expressive) really shows off your skill as a coder monkey^H^H^H^H^H^H orangutan. Can we pay you in bananas?
Occam, anyone?
I'll go with the Prigaux chart over the Levenez one for that. Levenez shows Pascal, etc, as branching from the Algol line after Algol 68, which may be true chronologically but not syntacticall or symantically.
Prigaux has it right, Algol W (the W is for Wirth) is an Algol 60 deriviative (as is Simula and others), and Pascal (also created by Wirth) descends from that. Algol 68 is quite different.
Mind, I wouldn't put a line from PL/I to Pascal, well, maybe a dashed line. I think the only thing Pascal could be remotely said to inherit from PL/I is records (structures), syntactically PL/I is too different (it owes as much to Fortran and Cobol as to Algol, as Prigaux' chart shows, but Pascal doesn't.)
-- Alastair
True, but there are an entire family of bastards not included. And besides, bastardy can't really be an bar to inclusion-- BASIC is on the chart. =)
//Information does not want to be free; it wants to breed.
Java doesn't aalow multuple inheritance so how could c# come from Java/C++ and ECMAScript :)
"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?"
Of course there is.
And for the big boys, there is this.
No. No matter what you do with it, INTERCAL looks really, really, bad.
//Information does not want to be free; it wants to breed.
Many omissions there - the history of basic is as tangled as any West Virginia family tree.
(Yes I am from WV you insensitive clod.)
I am very small, utmostly microscopic.
For me, I sat in on a class on PL/I when I was in high school. The chart says it was created in 1964, which predates my birth by several years.
It's not wasting time, I'm educating myself.
I don't see Plankalkül on there.. It's a stone cold shame. For more detail:
http://www.epemag.com/zuse/part5.htm
Quite interesting stuff about for instance the Z1 there.. The mechanical memory(part 3b) is very neat
Incidentally, I didn't realize FORTRAN was older than Flowmatic. I was under the impression that Grace Hopper had basically invented the idea of human-readable-keyword based languages. And what's "B-O"?
Irritable, left-wing and possibly humorous bumper stickers and t-shirts
I wonder why he shows ML and Prolog as having appeared out of nowhere. I would consider these two languages (Prolog particularly so) as having evolved from LISP.
Someone should scan it...
I'd like to see the derivation of this family tree. I wonder why BASIC claims Fortan parentage.
Engineering is the art of compromise.
And then there's a whole different class of langauges: math packages that allow programming from within. Heck, minesweeper is even included in Matlab as an example. You an define classes, new data types, etc. I know that quite a bit can be done in Mathematica and Maple as well.
It'd be interesting to see where these fit in, since they have some elements of various languages. (e.g., in Matlab, indexing starts at 1, but much notation is C-like, and some other things are very Java-like.) -- Paul
OpenSource.MathCancer.org: open source comp bio
Verilog, VHDL and ABEL! How can you leave those off? Cut out the hardware-definition languages and you've omitted not just a family of programming languages, but an entire use of programming languages. I'd say that's pretty important.
Irritable, left-wing and possibly humorous bumper stickers and t-shirts
10. These languages finally brought the industrial revolution into the era when men could work in their underwear in their bedroom.
....
./ Slashdot itself not to mention the authors' website to oblivion.
9. The creator of this list is a wannabe Stephen Hawking but dont really have the smarts to achieve that.
8. Dot-coms were created using these languages
1. Any shorter history would have to be titled a 'Thong History of Programming Languages' and of course that would
This atrtribes Algol60 as a precursor to CPL. In fact CPL stands for Combined Programming Language as was an effort to Combine various languages at the Atlas Labs. These included APL - Atlas Programming Language and ACL - Atlas Commercial Language.
CPL failed but a cut down version was developed as a 'basic' (in the fundemental sense, nothing to do with BASIC) CPL. Hence BCPL - Basic CPL.
I'm quite sure I'd consider MUSHcode to be one of my first programming languages (along with BASIC, Pascal, and the WordPerfect and Lotus 1-2-3 macro languages).
I found references from 1989 from Usenet, where people were talking about the origins of MUDs being ten years earlier at Essex University; or possibly a game run in 1979. I don't know what their scripting or softcoding features were like. I also don't know how similar they'd be to the MUSHcoding system I'm familiar with, which I guess started with TinyMUSH in '90 or so?
demi
BTW, I know they are trying to change the spelling from FORTRAN to Fortran, but it just shows how old this language really is. The most recent FORTRAN versions, 80, 90, 95, 2000+, whatever, sound like saying, "no, our steam engines are up to date, they have been upgraded from burning bituminous coal to anthracite coal".
But then, it's pretty unclear what was being attempted, so analyzing its success is rather problematic.
Does TARBEL count? Tomita's "Bermuda Triangle" Album had a cool, er, bit.
From the liner notes:
Each side of this record contains coded data in the form of certain sound effects. The message can be recovered if the electrical signal from the record is interfaced with the input of a micro computer programmed to the TARBEL System.
- Isao Tomita
I never tried it myself. However, the decoded messages are:
Side A
THIS IS THE BERMUDA TRIANGLE, OVER. SLOW DOWN. TARGET 50 MILES OFF SOUTH FLORIDA, A GIANT PYRAMID AT OCEAN BOTTOM.
Side B
THIS IS THE BERMUDA TRIANGLE, OVER. LOOK OUT! THE CYLINDRICAL OBJECT JUST LIKE THE ONE EXPLODED OVER SIBERIA AND CRASHED INTO TUNGUSKA IN 1908, HAS JUST COME INTO THE SOLAR SYSTEM.
Although almost no one has heard of the language family to begin with, the MUMPS/M family of languages has a decendant which is not listed in the tree: Caché, which is a proprietary concoction from Intersystems. The only reason that I know about it is because the company that I work for uses it.
Also, what about the lead-up to Visual Basic? More or less, after QuickBasic 4.5, we got PDS 7.1 (IIRC - Professional Development System - essentially QB4.5 with some DOS windowing enhancements and a slightly modified IDE), then came Visual Basic for DOS (still a lot of similarities to QB4.5 and PDS 7.1 - but with much greater control of windowing capabilities, and I think it allowed for easy mouse integration and event-driven code routines), then VB 1.0, I think (for Windows 3.1? Can't remember)...
QBASIC 1.1 was some weird thing they threw into DOS around version 5 or so, and kept in some form or another all the way through Windows 98 or so. It came out after VB for DOS - it may have even been released after VB3.0 (??) - strange release...
Reason is the Path to God - Anon
Although only used in 4 computers, (IIRC), Plankalkul was the first 'real' language. Developed by Konrad Zuse. Check wikipedia:% FCl
r ogrammi ng_languages
http://en.wikipedia.org/wiki/Plankalk
http://en.wikipedia.org/wiki/Konrad_Zuse
Egads!
Wikipedia even has THIS:
http://en.wikipedia.org/wiki/Timeline_of_p
Fwiffo
So, Perl is indeed strongly typed (for built-ins), and late-binding dynamically typed (for references and user-defined types).
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
ACM SIGPLAN has has held a couple of History of Programming Languages conferences, with proceedings full of interesting papers.
http://cs.gmu.edu/~sean/stuff/java-objc.html Also, the chart appears almost designed to make Lisp look less influential than it was. It's organized to put all the Fortran influences as straight lines clustered near each other, and all the Lisp influences as scattered throughout the map to diffuse it. Several of languages which are heavily Lisp-influenced are missing arrows from it (ML? Prolog?). Various major Lisp language versions (Emacs Lisp) are missing entirely. Dylan is missing (!) Oh, but it gets better. Javascript, which is a proto-based language derived largely from Self, is instead listed as (bizarrely) being derived from C and C++, with which it has almost no semantic relationship at all. Python, whose semantics are almost entirely stolen from Self as well, is listed as being derived from C, ABC, and Modula 3! Languages which, again, it bears no relationship. And NewtonScript, the final big Self-derived language, isn't listed at all. I'm not getting a good feeling about this map...
Nice try, but but the author of the programming tree missed a few programming languages that are still in wide use today : LISP MAPPER RPGII and there are probably another half dozen 4th generation languages that you have not mentioned. So, please all of you new young hackers out there hiding behind your 19 inch monitors, wake up and try to understand that you have to come out of your hole more frequent than on Feb 2nd.
The language Inform is missing from the chart.
There is no line from SCO unixware to linux
Common Lisp is strongly, dynamically typed. It has been for a long time. There are, of course, other language attributes than strength and time of datatyping, but those are what you're talking about.
Common Lisp is also object-oriented and beats every other language I know in that arena.
On top of that, with a good Lisp compiler (such as SBCL, CMUCL, or even GNU Clisp, just to name a few free compilers), it is as fast as any other language, even statically typed languages such as C; but particularly faster than other dynamically typed languages.
Has anyone noticed that the Egyptian symbol Ankh resembles a 0 and a 1 separated by a line?
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.
C was designed and implemented between 1971 and 1973.
The design of Algol 68 took place over a longer period of time before there was a working compiler (corrections if this is wrong, please), but surely the design began in 1968. The earliest Algol 68 publication I'm aware of came out in 1969.
Doug Moen.
I have written a truly remarkable program which this sig is too small to contain.
No, not that Dylan, the other one!
http://www.pcai.com/web/ai_info/pcai_dylan.html
I would have given Python a bit of Lisp influence, myself, what with the lambda forms, and typical functioncal programming functions such as map and filter.
Seems to me, as I recall, 1995 is when the Internet went public. Looking at the chart, there were a lot of changes in programming languages in 1995. Interesting...
Currently still being developed and used globally, with at least 750,000 + users all around the world.
Currently offered by multiple vendors, runs on all Unix, Linux, M$ systems, except maybe on the 'big iron' IBM boxes. Current vendors with products that are supported are Thoroughbred, Basis, and Providex.
Me lost me cookie at the disco.
Where's the equal time for creationism? I don't believe in this "evolution" stuff. I think God created .NET (cough, cough) and then rested on the seventh day.
If God had worked on the seventh day, He could have debugged all of Creation. But no, He had to rest.
Q: Why does God permit evil to exist?
A: Because He is lazy. If he'd worked on the seventh day, we'd be living in Paradise right now.
-kgj
-kgj
If Plankalkul was added to the chart, then it would have no lines descending from it. The paper was written in German, there was never an English translation until relatively recently (in programming language history). Nobody was influenced by the language.
Doug Moen.
I have written a truly remarkable program which this sig is too small to contain.
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..
What struck me first about the schematic was the sexual reproduction or lateral gene transfer between languages in the '70s and '80s compared with the speciation into distinct languages by the late 1990s. In the past, it seems, ideas were often combined into new languages (Scheme = Lisp + Algol), while now they've stratified into identifiable species (Python, Ruby, Java, Perl, PHP, etc, where a recent exception would be C#).
However, further inspection shows that the timeline is distorted, making recent changes look more significant. Unlike more complete evolutionary records, this phylogeney shows languages that are important enough to remember (read: ancestors of currently used languages). A more complete tree would probably show that new languages are still being created that are amalgamations of ideas implemented in current languages. Some of these new languages we'll all be using in 15 years, but right now no one would think to include them in such a diagram.
A more interesting study would track language features, and show features transferring into languages, e.g., the addition of OO to Perl.
Thanks to everyone who replied. GraphViz was exactly what I was looking for. The guide seems solid. Apparently there is a decent Java viewer too, but I haven't played with it yet.
This makes me a happy boy.Your CPU is not doing anything else, at least do something.
I've programmed in Fortran (1954), Algol (1959), Cobol (1960) and Lisp (1960). Not at those times, mind you--these languages were all designed before I was born.
I've also programmed in Raw Machine Code, by patching a running system (late 1940's?).
Doug Moen.
I have written a truly remarkable program which this sig is too small to contain.
There seem to be a few errors with both charts. For instance, the pdf diagram shows JavaScript to be directly influenced by only Java, while the Éric Lévénez's history shows links from both C++ and C. However, JavaScript was actually designed to be Self in C's clothing. Some features of LISP and other object-functional languages also influenced it's design. I wonder how the links in these charts were determined.
It is impossible to enjoy idling thoroughly unless one has plenty of work to do.
- Jerome Klapka Jerome
Well,Basic and VB are mentioned a lot, but VB script (or ASP if that's your boat) is nowhere to be found...
I assumed he left off the scripting languages until I noticed both Javascript and Jscript floating around.
Pretty major oversite IMO.
I also had an undergrad class on this. Or, at least that's what the class description said. I really thought it was going to be handy in the same manner you specified.
:(
Until the first day of class, when we found that the class was being taught by one of the moldering-in-tenure professors. Who adored SML, and spent most of the day at his terminal, implementing parts of the standard C library in SMLNJ. Who, instead of covering anything like what the class description said(or assigning us a textbook like the one in the link), repeatedly handed us assignments to recreate various elements of Lisp using SML. Most of us were too scared to pipe up that we didn't have any grasp of Lisp(not to mention SML) besides the historical entries. Didn't matter to him anyways--asking him for help during office-hours would get you a random half-hour lecture on logic sets and proofs, with a few thoughts about his recent vacation thrown in.
It was almost three-quarters of the semester before we finally got together a petition to throw his ass out and get a competent replacement. Unfortunately, at that point all we had time left for was some basics of Java and garbage-collection. The grades the original prof had handed out still counted, so nobody ended up with anything better than a C or so at the end.
--
Where's befunge? Best. Language. Evar.
At my school, we are learning python, with the help of the livewires package. It's great for beginner programers, as it's taught for the computer science 1 class.
was probably the only version of rexx widely used. It was included in the Amiga o/s. Any Amiga app worth it's salt had an arexx port and could be easily scripted.
But It's not included.
if the egyptians used arabic numerals...... :-P
madprogrammer writes:
No teaching/learning languages?
I learned to program with GWBasic, QBasic, TurboPascal, Modula-3 - none of which made it into the chart...
I learned with MAD (given your handle there ought to be a joke there somewhere).
MAD - Michigan Algorithm Decoder - was a rather powerful language sometimes described as algol-like, contemporary with Fortran II, which compiled into object (or assembler) for the IBM 70x/70xx series.
It was quite powerful. It had complex numbers, matrix types and operations. Particularly useful to me was that it let the user define new types, new operators, and rules for the code generator to support them. It also could show you, inline in your listing, the assembler code generated to support each line - invaluable for learning what was going on, and optimizing, and often handy for debugging.
A lot of useful work was done using this language in the '60s and '70s in the University of Michigan (where it originated) and a number of other places - several other universities, the auto industry, etc.
It died when the 709x series was replaced by the 360 series (although a low-key effort was made to produce a 360 version).
Part of the problem was that some of the language features depended on being able to pass a second, hidden, address in each argument to its own routines on certain functions while still being compatable with the Fortran-supporting subroutine library. This would have been surmountable.
The main killer was that the University had built its own timesharing system for the 360 series (MTS) while waiting for IBM to get its act in gear with TSS, and this had cought on and become production, not just at umich but at many other places. The U didn't have the budget to simultaneously support MTS, a language, its library, the "data concentrator" terminal server, and Dr. Dave's "fuzzball" routers for the early internet.
In the absense of a compatible language on the new machines the still-in-production applications were ported to languages that WERE available, relieving the pressure to support MAD, and the language was allowed to die.
Bantam Dominique roosters crow a four-note song. Once you've heard it as "Happy BIRTHday" you can't NOT hear it that way
http://www.cs.washington.edu/education/courses/cse 413/03au/misc/language-chart.jpg
Automatically Programmed Tools isn't mentioned. I would think the first programming language to recieve an ANSI specification deserves at least a nod. Not to mention APTs enormous contribution to numerically controlled manufacturing.
bytecolor
"IMO they should choose something very simple, to emphasize the basics and self-discipline, rather than the syntax."
FORTH on the low end. Scheme on the high end.
Now I have a desktop background that's actually worth looking at.
ruled... Gregory books taught me how to code, Unisys coding taught me how to build my OWN classes and my OWN types, and my OWN methods from a 48 bit word. Bit shifting to the max! That was the best and most fun I ever had programming.. Ah the days of my youth!
LISP was designed for the IBM 704, not the System/360. The 360 series (and its subsequent 40 years of followons) weren't the source of CAR and CDR. The 704's word was divided into two parts, the "address" and "decrement". Hence "CAR" for "Contents of Address part of Register" and "CDR" for "Contents of Decrement part of Register". McCarthy is on the record about this.
I spent several years developing enterprise-class software in Quick Basic, before writing a converter that would convert our ~1M lines-of-code to VB6. Imagine the challenges involved in converting code written in a language designed to be procedural driven to one designed to be event driven! (I had to hand convert our primary toolset which has all of the GUI stuff. Then, it has to invoke the proper routines when the specific buttons were pressed. I have to admit, it was the most fun I've ever had on a software project.) What made it even more interesting is that some of the code written in Quick Basic was originally written in old-fashioned line-numbered BASIC, with the GOTO's still intact. (In fact, part of our programmer's handbook taught when to use GOTO's, and the answer was not "never".)
I have to admit, I also enjoyed the Quick Basic days when we had to make sure our program never used more than 590K. (We allowed no more than 50K be taken up by MS-DOS et al.) It encouraged statements like "intNumLinesOnForm = 15 - 5 * boolShowDetail", where "boolShowDetail" was actually an integer that was 0 if false and -1 if true. VB6 kept this behavior, but VB.NET turned true into +1. Luckily, I left (to go back to school) before that became an issue.
P.S. The company I worked for was a great one. The president and vice-president were both programmers that made a point of still doing a little coding on a regular basis.
Ben Hocking
Need a professional organizer?
I guess I'll just print this out as the second page on my resume as a timeline of what languages I know and when I learnt them.
Then prospective interviewers can't point out my current 8 years of C# experience is a lie.
---- The geek shall inherit the Earth.
Alan Kay also credits influence of LISP in the essay, as shown in the Levenez chart
And down the stretch, Ruby v1.8.2 takes the lead! Oh wait... this isn't a race, is it? Darn.
We reserve the right to serve refuse to anyone. -management
Awk is great. More people should use awk. It's like C without all the pointers.
:-(
Then again....it's like C without all the pointers.
such as Quick Basic. Not a big omission as far as I'm concerned, though. I didn't see HP BASIC and Rocky Mountain BASIC, as used on their technical computers and workstations - far more powerful than your typical BASIC, with good floating point math and lots of I/O flexibility.
HyperTalk had about a kajillion users. It certainly deserves a place in this geneology. I'm not sure exactly where to put it, but it's certainly related to Smalltalk as a close cousin if not a descendant. For completeness, AppleScript should be listed as a descendant of HyperTalk.
I don't know why the PDF lists C++ as an ancestor of Dylan. I was somewhat involved in the development of Dylan, and Scheme, CLOS and Smalltalk were the main parents.
Squeak is the current leader of the Smalltalk bloodline. www.squeak.org
Along the branch of the Lisp tree there was a wonderful development environment called Interlisp and Interlisp-D that were extremely easy to program and work with.
The Interlisp environments had variants built upon them like Notecards.
In the Lisp branches of both maps, the Interlisp variant is missing.
Venue had the Interlisp version Koto ported to the x86 platforms and it performed reasonably well.
Later versions of Interlisp could incorporate common lisp, Prologue and Interlisp all in one package that could compile and run programs built on all three.
Banjo - The more I know about Windoze, the more I love *nix
I could not find any reference in either list to Xerox PARC's Mesa, which is often credited as one of Wirth's inspirations for Modula-2.
Despite the naming of C#, I don't see why it is always shown as deriving from C. It is clearly a direct decendent of Java, maybe with a little Delphi thrown in for good measure. The value vs reference types, parameter passing, inheritance, scoping... all variations on Java.
Sure there are plenty features of C there, but most of those were in Java...
From the chart, it looks as if ISO and ANSI seem to mark the end of the line for most languages they standardize. Question is, are they executioners, vultures, or just plain slow?
I'd go even earlier than that. Boolean Algebra. Lowest you can go. Then BNF on top of that.
This programming language evolution tree is making a big mistake by not including GPU programming language such as RenderMan, the Stanford Shading Language, Cg, HLSL, and GLSL.
This discussion has been so CPU-centric.
The day of the GPU is coming; the day of the CPU will soon be past.
Looks like a lot of the scripting languages just improve themselves (versions) vs. the core languages either merging with others or evolving.
re: the first one http://www.levenez.com/lang/history.html it is BASIC, not Basic. Also, there was MS-BASIC, GW-BASIC, BASICA, Apple BASIC, MS QBASIC, MS QuickBasic, QuickBasic Extended/PDS. Also, they list JScript, and not VBScript; PHP and not ASP. Also, this one is missing Rexx. http://people.mandrakesoft.com/~prigaux/language-s tudy/diagram.pdf seems to have some data that is off to the right of the page, including what appears to say "PostScript".
Video Production Support
like S+, R, SAS, SPSS.
Also, I didn't see Matlab, which is
kind of popular in certain crowds.
Maybe so, but SCO own all the copyrights.
Where, pray tell, is D? And what about ECMAScript and VBScript? Assembly is more of a form of self-mutilation, but I think it could be mentioned.
And what about Emacs? *ducks*
http://www.99-bottles-of-beer.net/
In the course of every project, it will become necessary to shoot the scientists and begin production.
This is also handy as a TRON level map...
I didn't see "daisey" on there either.. i thought it was related to Common Lisp in some way... anybody see it on there at all??
- Hi I'm Linus Torvalds and I pronounce Linux, Lih-nix..
Shouldn't we include ADA and similar types also?!
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
Other than that, type inference is great, and it might be possible to find a better compromise than O'Caml (though it's theoretically impossible to solve it completely unless you're willing to introduce runtime elements). I could complain about the poor error messages in type conflicts, but that's a problem with the interpreter/compiler, not the language itself.
Sig:Why copyright isn't a fundamental human right
The term *used* to cover languages where variables have types that can be (and conventionally are) checked at compile time.
However, since the term had strong connotations, advocates of languages where values have types that can be (and conventionally are) checked at run time, started claiming that their languages are also strongly type cjecked.
As a result, the term is today meaningless. What I use instead is talking about static typechecking (type errors detected by the programmer at compile time) and dynamic typecheckig (type errors detected by the user at run time).
Python rely on dynamic typechecking.
So now in a few months, Doctor Who will be on air (the new series), while Star Trek won't be.
It used to be the other way round after Doctor Who was cancelled. Trek will come back, and it will be better, I hope.
SCIREV.NET - fanfics,reviews & more
Cache is still in very active use.
www.intersystems.com
in the financial and medical industries in particular.
"Almost every wise saying has an opposite one, no less wise, to balance it." - George Santayana
I haven't searched the 400 plus previous replies, so this is probably a dupe. The Naval Electronics Laboratory Algol Compiler was popular with certain super-secret federal projects from about 1960 til I dunno when.
or is it:
((((((((((neq lisp simple))))))))))))))
oh crap! to many close paransss...
lisp is the *worst* language to start out with.
For exactly the reason you point out. utterly horrible syntax. And that's all you worry about as
a beginner learning lisp. The back-assward syntax
of a back-assward langauge. That has never produced anything of use (actually maybe, but I'm keen to
hear of some *large* *all-lisp* program that does
something truly useful (not play ping-pong or some crap) )
As the first page can't be searched easily, it's difficult to find more obscure languages.
Trac seems to be missing from the PDF-page, as is Algol-Genius (Algol with Cobol-style I/O), SAL (a porting language for SNOBOL), and LAX.
They could be missing because someone evaluated them and found thy didn't have any influence on other languaages, of course. But I kind of doubt that.
Tutortext, a middle to late 1960's SOAP (Symbolic Operator Assembler Program) created to teach programing via a early paper hypertext, )"a la" choose your own adventure) textbook. Learned to program with it when the only computer in town was the Bank's. Made it easy to program a Bell Lab's "Cardiac" cardboard computer simulator when I got one in 1967 during a high school field trip to the local phone company office. Still have the "Cardiac" .
oh crap! to many close paransss...
So take a lisp variant that does away with the superfluous parentheses, like Logo. Anyway, there are some very cool editors (DrScheme, eg) that mitigate the whole parentheses thing.
That has never produced anything of use (actually maybe, but I'm keen to
hear of some *large* *all-lisp* program that does
something truly useful (not play ping-pong or some crap) )
This is completely irrelevant for learning how to program. For a beginner, ping-pong may be a gigantic leap. Once you have a good grasp on the fundamentals, THEN you are ready to move on to an industrial language.
Scheme is for PIMPS! :-D
That is all.
Well the strong/weak typing issue is pretty old fashioned.
... /* OK */ /* Compiler trusts you but shouldn't */
/* compiler trusts you */
Strong and weak typing is not about doing implicit conersions. It's about trusting what the programmer is doing.
K&R C was weakly typed (I'm reaching back decades here so cut me some slack). This was especially fun with pointers which were pretty much all just addresses to memory that usually were implemented as ints.
E.g.
int incrAt (int *x) {
return ((*x)+1);
}
int i = 1;
float f = 3.14;
i = incrAt(&i);
i = incrAt(&f);
ANSI C is more strogly typed:
i = incrAt(&f); / *compiler complains */
But, it is still happy to trust you if you insist:
i = incrAt((int *) &f);
Strong typing doesn't have anything to do with implicit conversions, in my opinion. Consider the following expression:
2 * 3.5
What every sensible language does is this (in prefix notation):
floatMult(intToFloat(2),3.5)
as opposed to:
intMult(2,2.5)
or
floatMult(2,3.5)
which would give the wrong answers. The situation is not different for complex types like objects where there are well defined operations and type promotion schemes.
What strong typing vs. weak typing is, or was about in any case, was safety vs. the amount of work the compiler or runtime system had to do.
These days with powerful systems and overcomplex problems, safety is paramount.
With respect to static and dynamic, they mean exactly as you say.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
How about graphical programming languages (GPLs) like LabVIEW which I believe was decended from a language called G.
And then there is the whole class of functional programming languages like FP and ML and their various derivates.
Another language I didn't spot was SAS , a high-level statistical programming language used by auditors and banks a few years back.
Not to mention anything about more hardware related languages like VHDL.
I'll stop now, before my background starts showing too much.
- Carnun, Son of Danu -
"Existentialism lead to nihilism. Nihilism lead to dancing"
I still have some old as/400 IBM miny main frame boxes. and they have os/400, a moguler language an also system 38 (or 36?) operating system. The os/400 operating system I think uses RP language an object language. I never ran these,the one machine I booted into the dedicated services tools using the defult pass word of all 2s. what confusing sh!t , with 20 min. boot times an all Im still clue less on these machines,they should win the most propritary system award.They are late 80's vintage,need to check back on that chart.
INTERCAL is the parent of Aspect-J.
For those of you who don't know, INTERCAL introduced the concept of COME FROM. Since GOTO is considered evil, COME FROM is exactly the opposite. You specify somewhere else in the code that you would like the control to pass from another part of the code.
Aspect-J is cool because you don't even have to label the COME FROM points. It can literally be anywhere in your code!
The radical sect of Islam would either see you dead or "reverted" to Islam.
Python is heavily based on ABC.
I think heavily is the wrong word, since it really only borrows the indentation. Most of the concepts were borrowed from C and Modula 3. ABC is a weak-dynamically typed language, while Python is strong-dynamically typed.
You'll also note that one of them got that. The other one doesn't mention ABC.
The radical sect of Islam would either see you dead or "reverted" to Islam.
If you started the computer programmer off with a background in hardware, and they understand how you go from RC circuits to transistros, to ICs, then they should learn C. Heck, they already understand assembler, so there won't be any surprises in store for them. Good C programmers are always able to compile the code in their head anyway, and good C teachers show how to compile the code into simple instructions.
However, if they have no idea what an RC circuit is, it's best if you led them into something simpler and designed to be understood. Sadly, that is not C or Java or even perl. I think Python is the current best education language for the layman.
The radical sect of Islam would either see you dead or "reverted" to Islam.
The chain of BASIC goes from a very early version number straight along to MS VB.net, I was looking forward to seeing a complete tree of the various versions of basic, yet this manages to exclude all the other windows versions, let alone the vast numbers of other basic clones generated for other platforms over the years.
The official Fortran 2003 standard was published on Nov 18 2004. It is ISO/IEC 1539-1:2004. Read more here.
and procreate!
Iverson passed away October 19, 2004 at age 83. So long Ken, and thanks for all the APL.
Err... Make that October 22, 2004. It's late, time for bed.
Heisenberg may have been here.
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.
K should be a descendent of A+, not J. K was written by the same guy that wrote A and A+. The only commonality with J is that K uses ASCII characters instead of funky APL glyphs.
If C# (even v2) is mentioned, the C++/CLI extension to C++, which makes all of C#'s features available in C++, definitely should be included.
[C++ 200x is in progress, ok to omit].
Having been a mac user last century, I think the Object Pascal compilers it supported in the eighteies (MacApp anyone?) should be included -- I believe it was a precursor to Borland's Delphi.
Hypercard, AppleScript, and (to a lesser extent) Dylan would also be worth mentioning.
Both are hardware description languages and IEEE standards (1364 and 1076 respectively). Both were stared in the 1980s -- Verilog-XL was started by Gateway Design Automation and VHDL was initiated by the DoD.
These languages are either interpreted at runtime/simulation time or compiled into a binary executable. So, if Java can be on the list, these should be too!
I hate to comment on a sig but the there are two things wrong with the sig "Try not, Do or Do not, there is no try -- Dr. Spock".
First, I believe that "Try not. Do or Do Not, there is no try." was said by Yoda in Starwars Episode IV (the first StarWars movie back in 1977).
Second, Dr. Spock was a child psychologist, Spock from Star Trek was called "Mr. Spock" not "Dr."
Argh. Do we have to? I'd tried to purge that from my memory. Then again, Occam was only ever used on Unisys transputers and how many of them are still around?
Anyone ever use comal? We were taught it at school. It was like a cross between pascal and basic. Strange stuff.
-Never argue with an idiot. They drag you down to their level, then beat you with experience-
where are they? Eiffel is a pretty nice object-language, and caml gave me the biggest headache :)
That's a better idea. Putting "BrainFuck" on your resume will doubtless highly speed up its evaluation by most potential employers.
//Information does not want to be free; it wants to breed.
Many of them are on non-mainstream platforms like the one I've been making a living on for the past 15+ years (the Unisys Clearpath IX mainframe line, also known at various times as the Unisys 2200-series, the Sperry 11000-series, and the UNIVAC 1108/1110 and friends).
I'd be curious to know where languages like PLUS (aka PLSS, the language used to write much of OS2200) would fall, as well as languages like CALL (an interpreted macro language developed at Unisys Roseville and used to write utilities) and SymStream (also known as SSG, the language used to control large system software compiles and other things). Even transaction-automation languages like TTS might be of interest.
On the Unisys A-series/MCP side of the mainframe world, the WFL command language surely deserves mention, and the "assembler" on that architecture is actually a variant of Algol I believe.
On the Macintosh, a number of folks used to use a nice little interpreted language called Hypercard, which allowed one to create a series of graphical panels with images and buttons and link them together graphically, and I remember some fairly powerful interfaces written in that languages under MacOS 7 and 8.
Many of those languages are still in use, but bear little resemblance to the somewhat mainstream languages that are shown on those trees...
Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
The Theorem Theorem: If If, Then Then.
Syntax is part of the job. Teach programming without it, and it's like writing without good spelling. You can't be truly effective until you master the discipline.
I'll bite on this troll because it plays on so many misconceptions.
[Lisp] has never produced anything of use (actually maybe, but I'm keen to hear of some *large* *all-lisp* program that does something truly useful
How about an entire operating system? Or have you never heard of Lisp Machines? A full-blown editor, or have you never heard of Emacs? How about a state-of-the-art compiler with incremental compilation, on-demand linking, better-than-human-hands optimization, or have you never heard of Common Lisp?
[L]isp is the *worst* language to start out with. For exactly the reason you point out. utterly horrible syntax. And that's all you worry about as a beginner learning lisp.
Have you spent time teaching programming courses? I have. Have you studied the pedagogy of programming? I have. When you teach programming based on C, and similar syntax-laden languages, you spend 1/2 to 2/3 of the course detailing syntax. When you teach Lisp or its derivatives, you spend one week on syntax, and the rest of the term on concepts. Why? Because the syntax of Lisp is incredibly simple and this frees the course to concentrate on more important issues in programming.
((((((((((neq lisp simple))))))))))))))
oh crap! to many close paransss...
You probably never used an editor that had proper indenting and parenthesis matching. In Emacs (and related editors like Epsilon, Jove, microemacs, mg, etc.) you never wonder how many parentheses you need because it's obvious. Parentheses are not a burden.
Put my fist through my alarm clock with its ding-dong death inside my ear. - The Blackjacks.
Didn't see it listed.
Ahhhh! And *NO* mention of dbaseII, dbaseIII, or even of dbaseIII+ !
That's so fucking gay.
And the performance.
Pirate.
I believe lisp is the language in which AutoCAD is written? Anyways there is AutoLisp for AutoCAD users.
NAVEX is written in lisp, and that's not a trivial application!
You did realize so were both of the responses?
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.
Not every programmer is a Software Engineer.
There is no such thing as "Java Script", only JavaScript.
The only connection between the two is that they were both big at Netscape around the same time. They were about to release a version of Navigator with support for Java, and at the same time, also coming up with this nifty little language for scripting page objects. Originally it had some other name, but some genius decided "hey, these are both shiny active-content things. Let's name the scripting one JavaScript, so it sounds more impressive next to Java!"
And thus was JS born.
I taught a university course "Advanced Business Programming" using C in the College of Business Administration when I was a graduate student. Prior to C, this class was taught using COBOL. Unfortunately, the students didn't have a good programming background coming into the course -- their idea of pointers (or a linked list) was drawing arrows on paper. I pleaded with the faculty administrators not to use C for this course, but they insisted on C. The course was a disaster -- just as I suspected. Don't get me wrong -- part of the blame could be placed on me as being a terrible teacher, although I did pretty well teaching other university courses.
Business programming is all I/O oriented. In C, you can't do much I/O without understanding pointers. I spent 2 or 3 lectures trying to describe pointers in every way that I could think of. 90% of the students just didn't get it - and ended up furiously hacking through every assignment without understanding what they were doing. Of about 40 students, I had about 2 or 3 that completed the course who really understood what they were doing. This was in the early 90's. Ironically, I'd say that the foundation that they would have received in COBOL (not taught by me) would have been far more useful and educational to them.
I've got nothing against C -- I actually like it. I just don't think it makes a good language for beginners. YMMV.
Both these diagrams leave out Carl Hewitt's Planner and MicroPlanner, which influenced Prolog, and his Actor languages like PLASMA which influenced Smalltalk, Conniver and Scheme.
What would be more interesting to me would be to see language feature evolution. E.g. C# copied packages from Java and Java copied foreach from VB. Where did foreach first orginate? PERL copied {} for statement blocks from C but where did it first originate? And those sorts of features. Personally, I like the charts that reflect that VB.Net is more like Java than BASIC et cetera.
Thanks for the fun and useful topic.
TimJowers
Expect Freedom.
How did this escape the attention of the oop.ismad.com moron?
Writers imply. Readers infer.