A Brief History of Programming Languages? 598
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?
I finally found Simula (Score:5, Interesting)
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.)
Re:I finally found Simula (Score:3, Interesting)
Actually, my first exposure to object oriented programming was in Simula when I took a programming course in early 90'ies.
Re:I finally found Simula (Score:5, Interesting)
C++ on the other hand, was heavily influenced by Simula, as Stroustrup has told in numerous interviews, books, articles, etc...
Whatever you mean by Python being the most recent strongly-typed language, I can't even imagine. If you haven't found a newer strongly typed language, you can't have looked very far. Wether Python really is strongly typed is also up for discussion, but mostly because there is no clear definition of what this implies.
Simula and Smalltalk (Score:5, Informative)
It's true on both time and causality.
Alan says so himself here [homedns.org]
Re:Simula and Smalltalk (Score:3, Funny)
How far did you get?
Re:I finally found Simula (Score:4, Informative)
Strongly typed languages (Score:3, Informative)
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 d
Re:I finally found Simula (Score:3, Informative)
You should try to find an archive containing old Byte Magazines. When Smalltalk-82 came out, they devoted a whole magazine to it and the Xerox Alto.
In the magazine you will find that the people based Smalltalk indeed on the work done for Simula, also for the first version of Smalltalk (Smalltalk-76, I think).
Re:I finally found Simula (Score:3, Insightful)
Re:I finally found Simula (Score:3, Insightful)
Python considers itself? How anthropomorphic.
Well, it does support introspection, after all.
Re:Python's not strongly typed (Score:2, Informative)
dynamically vs. static
strong vs. weak.
Perl is dynamic and weak
Lisp is dynamic and strong [or static and strong if you want
Python *is* strongly typed (Score:5, Informative)
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 [artima.com] for a good overview and a little information on "type" terminology.
Re:Python's not strongly typed (Score:5, Informative)
Dynamic vs. static (or runtime vs. compiletime) and strong vs. weak. Dynamic/static typing is determined by when the type requirements are detected and enforced. C is statically typed - there's no runtime manipulation (or even concept of) types at all. C++ is mostly statically typed but has some runtime typing capabilities. Java is largely statically typed but also checks types at runtime. Python is entirely dynamically typed.
Strong vs. weak affects what kind of type operations are allowed. Typeless (or single-type) languages like TCL are the weakest type, because they allow any operation on any type. Perl has multiple types but does lots of implicit conversions, making it weakly typed. Python performs very few implicit conversions (mostly between different representations of float) and therefore is strongly typed. Pascal doesn't even allow type conversion between pointers or different sizes of arrays and is therefore *really* strongly typed.
There's also some other characteristics of typing, like whether it's class based (C++), does or does not allow user defined types, distinction between UDTs and primitive types, Objects vs primitives, duck typing, etc.
Perl is indeed strongly typed (Score:3, Informative)
Not true. You cannot use a scalar variable where an array variable is needed, because the type is inherent in the syntax. Perl's type safety is syntax-driven for the built-in types (scalar, array, hash, subroutine, filehandle), and runtime enforced for references and user-defined types.
So, Perl is indeed strongly typed (for built-ins), and late-binding dynamically typed (for references and user-defined types).
Lisp (Score:4, Informative)
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.
Re:Lisp (Score:5, Interesting)
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.
Re:Lisp (Score:3, Interesting)
CL has CLOS, the Common Lisp Object System, which takes care of all the OO stuff. The MOP, meta-object protocol, allows you to really get in and mess with its behavior. MOP isn't 100% portable between Lisp implementati
It's an old and obsolete argument. (Score:3, Informative)
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);
This has been around forever (Score:5, Informative)
Don't believe him (Score:4, Funny)
Really
;)
Fine....here's the family tree for Windows then (Score:4, Interesting)
Inaccurate (Score:3, Funny)
looks familiar (Score:5, Informative)
Original and Updated (Score:5, Informative)
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.
Re:Original and Updated (Score:3, Informative)
Excuse me.. (Score:5, Funny)
Re:Excuse me.. (Score:5, Funny)
This is actually a common misperception. The Old Hebrew word for "rested" can also be translated into "rebooted." Hence the confusion. Billical scholars still debate which one is the more likely interpretation.
Re:Excuse me.. (Score:5, Funny)
Re:Excuse me.. (Score:5, Funny)
Behold, the OS Creed!!!
(it's a parody, relax. Don't get too uppity)
We believe in one OS,
the Father, the Almighty
Creator of Heaven, Earth, and the Internet,
Of all that is seen, unseen, and can be seen in beseen.com.
We believe in one Lord, Jesus Christ,
the only instance of The Father
eternally begotten of the Father
God from God, Light from Light,
true God from true God
Instantiated, not made. One in being with the Father
Through Him, all objects were initialized.
For us men and for our salvation,
He was downloaded from Heaven
By the power of the Holy Spirit,
He was ejected by the Virgin Mary, and became Man
For our sake he was executed under Pontius Pilate;
He had a GPF, froze, and was abnormally terminated.
On the third day he was rebooted
in fulfillment of the OS documentation;
He was uploaded into Heaven
and is installed as a plugin at the right hand of the Father.
He will come again in a future release as a patch to fix all bugs and viruses
and His kingdom will loop infinitely.
We believe in the Holy Spirit, the Lord the power supply,
who proceeds from the Father and the Son.
With the Father and Son He is worshipped and glorified.
He has flamed, spammed, and has sent streaming audio to the Prophets.
We believe in one holy catholic and apostolic user group.
We acknowledge one CTRL-ALT-DEL for the rebooting after errors.
We look for the final upload,
and life of the world to come. [OK]
Re:Excuse me.. (Score:5, Funny)
Re:Excuse me.. (Score:3, Funny)
B0 0C 0F 3E 9E 51 5 (Score:5, Funny)
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.
Karma Whoring! (Score:5, Informative)
Holy grail of programming languages (Score:2)
Re:Holy grail of programming languages (Score:2)
Re:Holy grail of programming languages (Score:5, Funny)
before the advent of culture and civilisation, althought without access
to any formal human-recognizable language structure they were amazingly
versatile in their skills to construct reality by pushing and popping strings of
little pebbles from holes dug in the ground. Ancient arcade machines
sometimes found in desolate pubs testify to their once glorious existance.
C - C Programmers are more like highly evolved alien beings from outer space
who spoke purely in binary and pointers. They often take the disguise as
unsightly middle aged man with beard and glasses amongst earthlings.
They do not care for the artifacts of language or culture, they only care
for the semantics. Their job is to construct and engineer the roads,
the transportation, the network lines, the infrasture that our civilazation
have come to depend very much on. They are very hard to communicate with as
intepreting their language requires unusually greater IQ than most of
our earthlings can aspire to.
C++ - C++ Programmers are born again C programmers who realised their
folly of seeing the world in pure binary and pointers. They want to see
reality more concretely thus they talk in objects and classes.
More often than not, C++ Programmers are still attached to their
old ways and their attempts to communicate with others often result
in abstrated hodgepodge just as complicated as the C
language. Most C++ Programmers feel they may have had a
deprived childhood.
Java - Java Programmers are like C++ programmers except they were
brought up in aristrocat families. Their manners in their language
are refined and elegant althought at times may appear slightly
pretentious and artificial. They are very socially closed and
mix with their own kind only, basically they dont like outsiders
playing in their upper-middle class private school sandbox.
Being economically previliged means they have ample access to inheritance
like network libraries, etc. Although their reputation is good amongst
corporate circles, they are rumoured to be impotent when it comes to GUI.
Visual Basic - Visual Basic programmers are perceived to be like your
every day a dime a dozen computer science graduates. They
are naive, confident and sometimes a little brash in their perceived
ability to deal with the real world. Their language developed from high school
jargons and street slang though highly vulgar in the eyes of other programmers,
were often effective (or adequate) in solving a lot of every day
ordinary kitchen and sink problems. Often the case, a job completed
by a Visual Basic programmer, thought cheap and fast leaves little to be desired,
tales of half patched pipes leaking from under kitchen sink are
well known in the industry.
C# - C# Programmers are Java programmers wannabes wanting to achieve the same
social status and previledge that Java programmers have, C# programmers
lacks the authentic social grace and ethics that could help them rise above the
Visual Basic suburbia coarse mentality that tends to predominate them. C# Programmers
also tends to like screen widgets that are glitzy. They are the type of people
that the marketing department love to target in their product focus group.
COBOL - Cobol Programmers are not really people, they were actually mutated
from hole-punch card readers. they have no human affectations
and thus are very capable of churning out millions of incredibly mundane and
humanly degrading pages and pages of printed accounts reconciliation codes.
although they were disbanded by the human rights organisation, Cobol
programmers were actively recruited just before the millineum to solve the Y2k bug
which they were originally responsible for.
Fabled Programmers - the are many species of programmers that claim
to exist but no one have ever met any of these illusive creatures in
Pretty funny... (Score:3, Funny)
Re:Holy grail of programming languages (Score:2)
Re:Holy grail of programming languages (Score:3, Insightful)
Lucky you. Maybe you can learn something useful then, instead of doing the trendy stuff.
So far the teacher said the only use it for AI.
Unlucky you. You have an idiot teacher that can't even explain why lisp is so great. Think about this: AI is the hardest problem computer scientists ever need to solve. If a language is good enough to be used for research in AI, it's good enough to solve most any other problem too.
The only problems with lisp are c
INTERCAL (Score:4, Funny)
INTERCAL vs. BF (Score:3, Informative)
That's a better idea. Putting "BrainFuck" on your resume will doubtless highly speed up its evaluation by most potential employers.
What about Assembly language? (Score:4, Insightful)
this is not even a dupe, a tripe or a quadruple (Score:3, Insightful)
Woops... (Score:2)
BBC BASIC!!! (Score:5, Interesting)
Half of the UK's current programmers cut their teeth on the BBC Micro/Archimedes BASIC implementations.
Re:BBC BASIC!!! (Score:3, Informative)
The Brandy Basic V Interpreter [argonet.co.uk]
What is it?
Brandy is an interpreter for BBC Basic (or Basic V as it is refered to here) that runs under a variety of operating systems. Basic V is the version of Basic supplied with desktop computers running RISC OS. These were originally made by Acorn Computers but are now designed and manufactured by companies such as RiscStation, MicroDigital and Castle Technology.
What does it run on?
The interpreter runs under RISC OS, NetBSD, Op
No teaching/learning languages? (Score:4, Interesting)
Re:No teaching/learning languages? (Score:3, Informative)
Re:No teaching/learning languages? (Score:5, Insightful)
Don't make guesses about what you don't know for a fact.
There are several million users world-wide running enterprise applications written in some varient of BASIC. One example is about 20% of the HMO's in the US are running an application owned by CA and written in either Pick Basic or UniVerse Basic (a product now owned by IBM).
Pick has it's own complex family tree [tincat-group.com]
Actually, no... (Score:3, Informative)
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
I'm disappointed (Score:5, Funny)
Oh maybe that's why they called it a "Brief History".
Re:I'm disappointed (Score:5, Funny)
It's like the Reader's Digest version of Stephen Hawking's A Brief History of Time:
"Well, here we are."
The end.
Re:I'm disappointed (Score:2)
Algol 68 influence on C (Score:3, Informative)
Pascal (Score:3, Interesting)
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.
Re:Pascal (Score:3, Insightful)
Re:Pascal (Score:3, Insightful)
Re:Pascal (Score:2, Interesting)
Re:Pascal (Score:5, Interesting)
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...
Re:Pascal (Score:3, Interesting)
Re:Pascal (Score:4, Informative)
Pascal is dead. Object Pascal with various other extensions lives on. It's called Delphi.
What do schools use now as the teaching language? Surely not C. I have nothing against it but it isn't for beginners.
They use Java. Or maybe soon C#
Re:Pascal (Score:5, Interesting)
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...
Re:Pascal (Score:5, Insightful)
Software Engineering has absolutely nothing to do with syntax. Nothing. Would you ever consider that philosophy is the study of spelling? No, so why would you think that forcing a naive user to stumble hither and yon against arcane syntax is a good way of teaching programming concepts? You want to start --START-- with a language that has incredibly simple syntax. Like Lisp, Scheme, and the like. Then you can spend time worrying about things like data structures, lexical and dynamic scoping, control structures, etc. Once these fundamental notions are understood, then you can spend time with syntax.
Re:Pascal (Score:3, Insightful)
Of course, I haven't ever tried this, so maybe it's just a load of crap.
Re:Pascal (Score:3, Interesting)
BECAUSE IT USES A COMPLETELY DIFFERENT THEORY OF COMPUTABILITY THAN EVERYTHING ELSE.
Most other languages use turing machines as their basic computability theory.
LISP uses micro recursive functions
Each is as strong as the other - but involved radically different thought processes.
Re:Pascal (Score:3, Interesting)
A functional language IS good to start with as it resembles math.
No, it is not. In fact, functional languages are useless. Yes, I am going against the establishment, but there is a perfect reasoning behind that; read on.
Side-effects like assignments makes program justification very hard
The problem is not about not changing state, but about respecting the constraints of state. Functional languages begin with the foundamental assumption that changing state is something wrong. Well, they are mistaken
Re:Pascal (lisp != simple) (Score:3, Informative)
[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 Comm
Re:Philosophy is nothing without communication (Score:3, Insightful)
So when you're trying to teach programming -- not just training someone how to use a particular software house's tool -- why no
Re:Awful Languages (Score:3, Insightful)
And I'm doing everything I can to correct that.
Re:Pascal (Score:3, Informative)
That shouldn't really surprise you too much, considering Niklaus Wirth was the man behind Pascal, Modula, Modula-2, and Oberon.
Caml missing (Score:3, Informative)
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 [inria.fr] information [inria.fr] here [ocaml.org].
Re:Caml missing (Score:4, Funny)
Re:Caml missing (Score:2)
They Missed one (Score:2)
No Actionscript (Score:2)
Note: (Score:4, Funny)
The Devil -> Fortran I
Where is Konrad Zuse's programming language ? (Score:2, Interesting)
Movie ++ (Score:5, Funny)
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!
Found in Wired (Score:2, Interesting)
For the author (Score:2)
you can get more info at www.jsoftware.com
Somewhat odd... (Score:3, Interesting)
And, finally, where's Scala (http://scala.epfl.ch/) on that graph?
Error on the second page (Score:2)
While this is reflected on the first link, it's not reflected properly on the second.
GJC
FOCAL (Score:2)
Googling for "FOCAL" t
Some corrections and additions (Score:5, Informative)
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.
The oldest language is still missing (Score:4, Informative)
Wikipedia has [wikipedia.org](as usual) for more information.
Balance (Score:3, Interesting)
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.
Roots (Score:3, Insightful)
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.
Gross oversight! (Score:3, Interesting)
There's also Whirl [bigzaphod.org] 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.
Business Basic - 750,000 + Users at the moment (Score:3, Informative)
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.
Resume (Score:3, Funny)
Then prospective interviewers can't point out my current 8 years of C# experience is a lie.
HyperTalk, AppleScript, Dylan, Squeak (Score:3, Informative)
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
Why No Mention of Mesa? (Score:3, Informative)
BASIC, not Basic, (Score:3, Informative)
Re:Java (Score:3, Informative)
Re:i learned something today (Score:2)
Just shows that good ideas survives for a very long time, and quite often re-surfaces when the time is right for general acceptance. Those original creators usually had to take alot of criticism for their "wacky" ideas.
Re:i learned something today (Score:3, Interesting)
Re:Hmmm (Score:2)
Re:How little improvement there has been... (Score:3, Insightful)
I suppose one could produce a graphical version of a current programming language, but that would be very complicated and slow to use.
If you can figure out how to write something like this that creates large applications like Firef
Re:How little improvement there has been... (Score:3, Interesting)
Take a look at LabView [ni.com] at some point
While it is primarily aimed at test and measurement applications, anything that can be done in a general purpose programming language can be done in LabView.
but that would be very complicated
It's not overly complicated. In some ways, it is significantly less complicated that text-based languages. For example, if you have a f
Re:Flaws with this chart (Score:3, Informative)
2. ASP = VB6. You could include ASP as an offshoot of Visual Basic if you like, but it has exactly the same snytax. The real changes came with VB.Net, which is included in both charts.
3. Dylan is included in the PDF chart as an offshoot of C++ and CLOS.
4. Nope, no Hypercard.
5. I suppose so. I don't really have any comment other than I'm not sure how legitimate sh