There was some discussion a while ago:
Added in edit: That's a shame - someone has flagged this item so it's no longer on the front page. 8-(
That link is in the original version of the essay, and that's why it's in the diagram that's described as a graph of the dependencies that PG gave.
The version on the WayBack machine has:
Python: Perl is a kludge.
Agda: when Turing completeness gets in the way of your mathematical logic.
TCL, "It should be easy to extend your scripting language in C."
SQL, "We need a standard way to talk to our databases."
PL/SQL, "We want to push complex logic into our databases."
BASIC, "We need an easy language for absolute beginners."
And so on.
But one historical comment. The ACTUAL problem that Ruby was created to fix was that Matz needed a scripting language that could handle Japanese text. People may adopt it now for different reasons, but that is not the historical inspiration.
The ACTUAL problem that Ruby was created to fix was
that Matz needed a scripting language that could handle
Now, Ruby must be differentiated by other things.
Ruby natively supports multipleincompatible Japanese encodings, including Unicode and shift-JIS. This is a lot harder than just marking off a Unicode checkbox.
Perl did a lot of things right, e.g. regex literals, wide range of terseness possible (one-liners vs. large modular programs), CPAN, but I could never get over its ugly, hacked-in implementation of objects that kinda-sorta behaved like hashes and didn't do information hiding well.
That's classic: PHP guy say, "we have objects in PHP5 so now it is Object Oriented".
It's not. To say that language is Object Oriented because it has classes is like to say that language is Functional because it has functions.
So, Moose is a clever thing, but does it make every hash an object (I genuinely wonder)? Does it provide OO API for I/O? With exceptions? Does it make everything behave consistently? Because consistency seems to be the main reason that Perl did not become the final stop.
Everyone's using Smalltalk now? Consistency seems to be overrated; most of the popular languages these days seem to be multi-paradigmatic.
MUMPS: All other languages weren't written for/by medical doctors/professionals.
Lua: Python and Ruby are each too big to embed.
In 1993, the only real contender was Tcl, which had been explicitly designed to be embedded into applications. However, Tcl had unfamiliar syntax, did not offer good support for data description, and ran only on Unix platforms.
C# [n] (where n > 1) --- C# [n - 1] would be more awesome if it had...
I was just trying to stick with the form of the essay.
>Go was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame. One had to choose either efficient compilation, efficient execution, or ease of programming [...]
>Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. It also aims to be modern, with support for networked and multicore computing.