The History of Programming Languages 684
Dozix007 writes "For 50 years, computer programmers have been writing code. New
technologies continue to emerge, develop, and mature at a rapid pace.
Now there are more than 2,500
documented programming languages and O'Reilly
has produced
a poster called History
of Programming Languages, which plots over 50 programming languages
on a multi-layered, color-coded timeline."
A program written in many of them (Score:5, Interesting)
Re:Meta Programming Language (Score:5, Interesting)
Starts with 3GLs. (Score:5, Interesting)
He was referring to Assembler.
Logo! (Score:3, Interesting)
Ok, so maybe LegoLogo is a little iffy, but LogoWriter included some pretty significant changes to Logo as a whole.
TMI (Score:5, Interesting)
That being said, the lighter connecting arrows between languages (Lisp to Logo, Algol to almost everything else) makes the chart easy to follow and interesting to look at.
VMs will solve this issue (Score:5, Interesting)
One thing that has always bothered me is the lack of standards for basic syntax. Why not just have a standard for basic operators? For example does anyone really lose flexibility if we say statements are delimited by ';'? Or a standard syntax for if-then-else? e.g. perl's syntax is a pointless departure that adds no value.
Check out Lisp (Score:5, Interesting)
It seems that Lisp holds the record for
"Longest Lived Language That Is Still Relevant Yet Underappreciated"
It just amazes me that something concieved that long ago is still going strong. I guess it makes sense, as it was concieved initially as a language for describing algorithms, then later implemented. With abstraction on the rise as it seems to be, this quality of being much closer to theory than practice is quite a useful one.
Re:Delphi from VBasic?? (Score:2, Interesting)
Re:Meta Programming Language (Score:5, Interesting)
Its interesting to note that most people don't see history repeating itself with Java and C# (the fourth level of abstraction). The story goes as follows: in the late 60s, almost all systems programming was done in assembler(1st level), just for speed. In fact, no operating system was ever written in anything else than assembler, so there was no portable OS. People scoffed when UNIX was implemented in C (second or third level depending upon who you ask) in the mid 70s because it would be too slow. Of course computers get faster and a portable easy to edit OS took off.
Its really funny to hear people give the same arguments against Java and C# that are word-for-word the same as what was said about C.
Re:I don't see Ruby on there (Score:4, Interesting)
cool programming challenge: figure out the optimal vertical order for the languages so as to minimize the length of relationship indicators
HyperTalk? (Score:2, Interesting)
Lisp (Score:3, Interesting)
Lisp is it.
Other "modern" (higher level than C) languages are special cases of primordial Lisp, optimized for various niches and programmer mentalities.
This does not imply that Lisp is the best programming language (Python is
Functional programming languages dying? F# XSLT? (Score:5, Interesting)
Anyway, I didn't see any programming language versions for functional languages (the ones I recognize are Haskell, ML and Miranda) after some time in -99.
Does that mean that they are dying out?
I've heard rumors of F# from Microsoft but I don't know if that is true.
It would be a pity if functional languages would die at this point in time since proponents of functional languages always used the argument that "they may be slow now but they scale really well on massively parallell computer systems" (because of no side effects) and we are at the brink of seeing multi-processor systems starting to go mainstream.
On a separate note, XSLT, which isn't a programming language in the traditional sense, is functional in its design. I think the designers of XSLT really put some thought into it. In any event, XSLT doesn't have any side effects, making it a functional language in a sense, and this means that it also should scale really well on massively parallell systems.
So, I guess the theory behind functional languages live on in one of the hottest technologies around today.
Also, the last version of Prolog was in -97. Pity, you can really do some magic in that language.
Re:VMs will solve this issue (Score:4, Interesting)
This is how we end up with completely inscruitable languages like Visual Basic. BASIC was designed to not look like a programming language and instead look like an English sentance. When we removed the line numbers, the end of a line signified the end of a statement. Of course, adding object oriented syntax to Basic made it even more apocryphal, and we ended up with the mess we have today. We can't change it, because if we did than older stuff wouldn't work. Besides, if you want to use VB with a better syntax, you can just use C# (which is either C++ without the hassles of memory management, pointers or header files or Java without the hassles of explicit declaration of exception handling, separate Get and Set methods for properties, or cross platform execution).
Re:Delphi from VBasic?? (Score:5, Interesting)
Coincidentally, the guy who (for the most part) made Delphi actually left Borland and went to Microsoft, and he's now the lead architect of... C#. :o
Re:Lisp (Score:5, Interesting)
Where is a language with the power of Lisp and the ease of Python? Python has some wonderful features in terms of speed and readability, but it is too tied to its primitives. After reading on Lisp, then going back to coding Python, I was really frustrated that the language wasn't better generalized - that all statements (if, import, etc) are hard coded - what if I want to make a custom block statement (like if or while) or something similar? Can't do that in Python, because you don't really have access to parsed code objects the way you do in Lisp.
I've looked at the modern Lisp languages (Common Lisp and Scheme) and I can't figure out which ones are worthy of my attention. Scheme seems like it has lost the intelligent simplicity of Python in favour of clumsy "special character" based syntax, while Common Lisp has many detractors that don't complain much of details. Is your complaint about Common Lisp based on all Lisp variants? Or is CL especially bad?
I know Lisp is not the ideal language - its ugly, illegible, and slower than compiled languages - but the fact is it existed at a time so far before many languages that pathetically failed to implement its features, so I'm a little confused at the way the computing world has ignored it, instead of trying to work its principles into modern languages (Python does a little, but ends up feeling cobbled together and inconsistent).
Re:Check out Lisp (Score:5, Interesting)
From the classic essay by Richard Gabriel, Worse is better [jwz.org]: "Unix and C are the ultimate computer viruses." (Follow the link to see why he's saying this.)
Re:Check out Lisp (Score:3, Interesting)
- On Lisp
a few months ago. You can get a copy in PDF format online for free, and it's a great book to help you start thinking in Lisp.I've been through a lot of languages, and I've found some favorites, but Lisp is the only one that I can't directly fault the language for anything (C++ is a close second). I haven't found anything in any other language that Common Lisp doesn't have, and a lot of things are really easy to do in Lisp compared to doing them in other languages.
For example, years ago I started a brand-new cutting-edge object-oriented MUSE-like server in C++. Last month, I decided to try in Lisp. In 1 week of coding at most 2 hours a day, I was about twice as far along as I had gotten in months with C++. I couldn't do this in Ruby, my favorite scripting language, because of the lack of real multiple inheritance, and I couldn't do it in C#, my favorite bytecode-compiled C++ ripoff, for the same reason.
Give Common Lisp a real, honest try. You'll be surprised.
Re:A program written in many of them (Score:5, Interesting)
Re:What? No Algol 68 - C link? (Score:1, Interesting)
Similarity also includes 'union' and struct,
use of pointers (those the syntax is different the model is similar ).
the += family of operators,
pragmas
( a
the stdio library borrows extensively from the formatted transput features,
and so on.
I think it rocked, and if you compare Algol60 to Fortran and Cobol, you have to admire its stunning elegance and influence (for its time).
C++ is even more derivative of the algol family
operator overloading, ref modes and all that goodness came from there.
Re:Wait a minute! (What about Atlas Autocode?) (Score:3, Interesting)
-wb-
Ha! I was right! (Score:2, Interesting)
I still don't understand why people have such a burning hatred for Pascal. Is it because they were forced to learn it in school? It's a very complete language and has nice structure. It can be extremely powerful if used correctly and defines a large chunk of how the modern programming languages operate, just as Algol and Fortran have.
I should break out my installation CD and convert some of my recent programs to Delphi, just for kicks. Man, I miss Borland.
Well, duh! (Score:3, Interesting)
Because they want you to by more books. They are not in the poster business, they are in the book business.
Re:Lisp (Score:5, Interesting)
No, I just don't think that a proper Lisp has been implemented yet - I'm thinking of a language with all of the semantics of Lisp *plus* easily readable syntactic sugar. I'd like to see a standardized lisp that I can write and read as quickly and Python.
In Python we have a very succesful programming model, in Lisp we have potential for every conceivable programming model. Specializing the Lisp a little bit to optimize for pythonic programming would do a world of good.
I want do do
o = SomeClass()
instead of
(setq o (make-instance SomeClass) )
The latter might be semantically more elegant, but boy, it doesn't flow like the python variant.
As far as non-language-feature issue goes, Lisp does need a better (quantitavely and qualitatively - no "Functional Programming" people but people who can recognize the realities of programming today) community and one standard open source implementation. Availability of commercial implementations just doesn't cut it. And the one open source implementation should run on Windows too (no, Debian doesn't cut it).
Re:Great! (Score:4, Interesting)
"...develop a BASIC computer language for the Altair 8800."
So at least in one place they were a little more humble....
only 50 years? Ada Lovelace? (Score:3, Interesting)
Re:Meta Programming Language (Score:5, Interesting)
>arguments against Java and C# that are
>word-for-word the same as what was said about C.
Not really: if java is going to replace c/c++ the way c/c++ replaced assembly for systems programming, then everyone would already be using lisp.
If java and the like are going to replace anything, its going to be vb/pascal and friends.
They should tree it out. (Score:3, Interesting)
Re:VMs will solve this issue (Score:2, Interesting)
What do they mean by programming language? (Score:4, Interesting)
They didn't define what they consider a programming language (Turing complete? General purpose?). Powerbuilder and m4 are general purpose languages but I didn't see them on the diagram.
If domain-specific languages are allowed, I think these were overlooked:
BTW, you can download a more printer-friendly version here: Eric Levenez's Computer Languages History [levenez.com]
Also, a German version is available here: German PDF [oreilly.de]
Re:Lisp (Score:5, Interesting)
IMHO, a real, true, ultimate pure _language_ (not standard library) needs to be polished up for an opensource successor. Something with the power of Lisp and the legibility of Python. I'm thinking of something very similar to python except that code-based blocks should be handled as custom objects like everything else in Python.
In Python, the statement
class foo(bar):
def __init__(self):
self.baz = "foo bar baz"
is using the interpreter to auto-insance a bunch of standard Python objects (a class and a method, which is than in turn wrapped with an instancemethod) based around code objects. I can subclass the interpreter "method" object or create new substitute ones in its place, but if I want to use them in the interpreter, then I have to instance them the normal way, using
mycustommethodinstance = mycustommethodclass(constructorarguments)
whereas the main method object gets the nice
def funcname(args):
statement. This is the biggest failure of Pythons generalism - its inorexicably tied to its core objects, so that if you are using it like Lisp as a fully custom-made lexicon, you still have to either a) tear the contents out of the engine objects and relocate them into your own objects or b) use stupid constructors like
myfunc = myfuncclass("myname", "my massivestring of text that is actually the whole code block that this contructor will compile into code but I have to enter it as a string like this its kinda stupid eh?")
Not very nice. I want to make custom if and class statements, replace the implicit behaviour that typing i=1 creates an int object instead of some other custom object I want it to make. Likewise, I want to use other datatypes otehr than a true python Dictionary object as the local namespace or the global namespace (well, the globals can be any kind of mapping, actually).
A generalized Python would be my dream language - Python, but where all the core objects and statements (like "if" or "class") were part of the standard library.
BASIC is incomplete (Score:1, Interesting)
BASIC -> DEC BASIC-PLUS -> DEC BASIC-PLUS2 -> VAX BASIC -> then around here is when it appeared in MS Windows.
Re:A program written in many of them (Score:2, Interesting)
I actually think it makes sense. (Score:3, Interesting)
The semicolon is often used at the end of a clause or list, therefore it does not defer to the right and thus is a suitable indicator for a logical break.
I would think language programmers at some point flirted with the idea of using the period for an end-of-statement marker, but perhaps because it is also used as a decimal point in the ASCII character set, they might have been worried about determining whether a trailing decimal point after a numeric expression indicated end-of-statement or a decimal point missing the rest of it's significand.
Re:Delphi from VBasic?? (Score:2, Interesting)
char *x = malloc(10);
(malloc returns void*, C++ does not allow automatic pointer promotion).
Re:only 50 years? Ada Lovelace? (Score:3, Interesting)
Earlier than that: she translated an article on the Analytical Engine (written by L. F. Menebrea) with several added notes of her own, including a sample program to compute Bernoulli numbers. This was published in the October 1843 issue of Scientific Memoirs.
See http://psychclassics.yorku.ca/Lovelace/lovelace.ht m#G [yorku.ca]
VisualBasic from Pascal (Score:3, Interesting)
Which happens to "feel" exactly the same as VB. It's not simply the language syntax but also the structure, and programming in Delphi is practically the same as VB
This is backwards. VB and Delphi both came from Pascal, although Delphi was an improvement and VB was a translation.
In the late 80s, Pascal was the language being taught at most colleges, although C was starting to gain some marketshare. Microsoft needed to replace BASIC with a functional language. They took Pascal, changed the keywords to the ones from BASIC, added line numbers, and called it VisualBasic. This had the effect of killing the market for Pascal programmers. The good ones upgraded to Delphi; the rest moved to MS VB.
VB 1.0 had much more in common with Pascal than it did with BASIC. "Pascal format function calls" are still used by VB, in contrast to "C format function calls". Pascal and VB have "procedures" (or "subroutines") which allow the values of parameters to be overwritten in calling routine. C requires that one and only one value can be returned, which must be explicitly assigned in the calling routine (although fun with pointers can cause many other effects.) BASIC did not have procedures, and subroutines overwrote the global variables, because BASIC was also missing local variables.
Re:Check out Lisp (Score:3, Interesting)
Saying Lisp is mathematical but not practical is the same as saying Linux is powerful but not useful. You just haven't learned how to use it, yet.
Re:VisualBasic from Pascal (Score:2, Interesting)
Qbasic NEVER NEEDED line numbers... that was GWBasic, halfwhit. You COULD use line numbers, if you wanted too... hell, you STILL CAN in VB.
I trust you work for Borland... that, or you are one of the poor suckers too stupid to REALLY understand anything but Delphi, and even then the concepts past their VCL/CLX boggle you. Never in my life have I read such completely made up crap
Re:"And no one will be definitely right" (Score:4, Interesting)
Not to mention a fair understanding of algorithms, data structires and computation theroy not because you will remember the exact things you learned a year out of school but so you know they exist, why they exist and to prevent you from coming up with crazy ideas that are not computationaly feasable. I would love to see how many programs use a bubble sort to sort a large set of data, ya know.
As for high level languages lowering the bar, it's marketing telling people these things that are simply not true. Marketers will tell clients "this language, anyone can write in it..". It's not that anyone can write in it, sure anyone can get a book and program some codes, but will they understad the consequence of what they are doing? It's hard for people that haven't at least had a math background or engineering (which includes much math) to really understand what they are doing unless they have done a bunch of research themselves, been trained by someone else over a period of time or gone to school for CS.
On another rant, I really hate how the study of Computer Science has been basterdized by vocational programs and get rich quick schemes (tech skills "universities" or "schools".."start your new carrer in IT in 3 months!") such that most people think they teach you how to fix computers, install software, how to program a bit and how to become an "IT Professional" who makes sure all the computers are networked in the office. When I try and explain my fascination of algorithms, languages and computational theroy (Turing-Church Thesis)
Re:VisualBasic from Pascal (Score:3, Interesting)
I did not mention QuickBasic because it is not on the chart, but most of my previous post really applied to QuickBasic since it was not called VB until it moved to Windows.
I did not state that QuickBasic or VB "required" line numbers. I stated that MS added the ability to use line numbers as part of the transition from Pascal to QuickBasic.
When I first encountered QuickBasic, I already knew BASIC, Pascal, and C. I could replace the keywords in my Pascal programs and then do minor debugging to have functional QuickBasic programs. The API for VB has grown since then, but it still looks like Pascal with different keywords.
It was a smart move for MS. Most college grads were learning Pascal, and the transition to developing in the MS-proprietary language was easy since few of the rules were different.
---
Today I work with Java and LotusScript with Domino because it is allows much faster business application development than any other platform. LotusScript was based on VB, and still looks similar: same keywords, different API, and it has the List variable type. I also use Java for applets, servlets, and server applications; and one of my Java projects will require a GUI-based client, although I have not written it yet. (I prefer Java over C/C++ because the native memory management saves development and QA time.) I have never developed with Delphi, although several friends are good with it, and their code looks like super-charged Pascal.
---
Fun fact: One of my IBM redbooks states that VisualBasic is a trademark of IBM. I think it was a misprint.
---
BTW, there is only one 'h' in "half-wit".
This site has more languages (Score:2, Interesting)
The HOPL [murdoch.edu.au] is an "Interactive historical roster of computer languages". It has more languages, but also contain non-programming languages (like query-languages).
The editor of the site has made two color-coded posters: Version 1 [murdoch.edu.au] and Version 2 [murdoch.edu.au].
Other lists are here [ic.ac.uk], here [bton.ac.uk] and here [idiom.com].
Ulrik