Introduction
In an essay Paul Graham wrote:
- Kevin Kelleher suggested an interesting way to compare programming
languages: to describe each in terms of the problem it fixes. The
surprising thing is how many, and how well, languages can be
described this way.
Here is a chart of the resulting dependencies.
Oh, and - added later - the original from PG is undated,
but the "enhanced" version below it was on the C2 wiki in
2003/2004 and possibly earlier, so don't for one minute
think it's supposed to be up-to-date, or refer to modern
version of these languages.
It's not. And it doesn't.
|
|
This is not an inheritance graph!
People seem to be assuming that this shows where
each language got its features from.
That's a mistake. That's not what it shows.
When a language is developed it's often because
the designers were irked by some perceived problem
with an existing language. This graph is showing
(well, sort of) that dependency. An arrow here
does not mean that the target got its features
from the source, but that the source had a problem
that the target was intended to fix.
There may be very little overlap in language
features.
|
|
In response to some comments ...
If you don't provide your email address when you
submit a suggested change, I can't respond to you.
And to the person who said:
- What about PHP, J#, J++, Turbo Pascal & Fortran?
I don't see those in the graphs.
Well, Fortran is there, Turbo Pascal is really just
Pascal, I don't know J# or J++, and PHP is being
discussed on the Hacker News page:
But this isn't intended to be complete. What about
INTERCAL? Or Conway's Life? Or BCPL? Or MCPL? There
are many, many languages omitted.
It will most likely stay that way.
|