ESR's choice of language is based not only based on the paradigms, but also on their usage, with each is represented by:
- C/C++: system programming language (the metal)
- Lisp: functional paradigm (the enlightenment)
- Java: Object Oriented (the framework)
- Perl: better shell language (the administrator)
- Python: Because it's python, doh. (the paradise -- http://xkcd.com/353/)
More seriously, python is the most well-designed language; all of its features just fits together very nicely into a clean, well-designed, and easy-to-learn language that isn't a toy language. It's a versatile, well-rounded, general purpose language that has been in use in almost any situations: desktop applications, web applications, embedded scripting language, system administration, etc, and from the very smallest one-liner script to the hundreds of thousands of lines. Its highlight is the language's design itself. AFAIK, there is no other language in this class.
Perl represents a class of language used for shell scripting or job automation, where you need to call a series of programs, do some transformation on its output and feed the result as on input of another program. Other languages in this class is bash, however bash lacks the many powerful string manipulations that perl has (don't start saying that bash can call perl or sed or awk).
Java represents a class of language that is used widely in the industry and has a large amount of time and money invested on them. Because they're ubiquitous, there is wide range of good libraries and framework for nearly anything; if you can think of a problem, it's likely the problem has been solved by someone else and they have written a library for it. A hacker should know these languages since it increases productivity if you can avoid writing any code (or avoid writing too much code). Other languages/frameworks in this class are .NET, Django, RoR.
Lisp represents the functional paradigm. Knowing how to think and write in functional paradigm has many benefits that I won't reiterate here. Additionally, Lisp has a very powerful meta-programming features, which is almost unique to Lisp. Other language in this class (functional, not meta-programming) includes Haskell, Scheme, Clojure, F#, etc.
C/C++ represents the low-level languages used for writing OS kernel, device drivers, and speed-critical codes. This class of language have semantics that is close to the bare metal (especially C, less so in C++), and a hacker should know how the metal called CPU works, otherwise he can't call himself a hacker. Other language in this class is Assembly, but I think even ESR agrees that Assembly is too low-level to do anything productive.
While it's true that many of the languages he mentioned shares a large portion of overlaps (e.g. Python, C++, Perl supports OOP, for example); each of the classes of languages have a highlight that is unique to its own class.
Personally, if I were to be given the opportunity to add one other language, I'd add PHP to the mix. Web application is getting more and more ubiquitous. PHP represents a class of language used for web applications, other languages in this class includes JSP, ColdFusion, etc.
In short, a hacker is someone that:
- knows how computer works in low level
- knows how to think in abstract terms
- knows how to use frameworks appropriately
- knows how to administer his own system
- knows the design a good language