Кевин Келлехер предложил интересный способ сравнения языков программирования: описывать каждый через проблему, которую он решает. Удивительно то, как много языков можно так описать, и насколько точно это получается.
Algol: Ассемблер слишком низкоуровневый.
Pascal: В Algol недостаточно типов данных.
Modula: Pascal слишком слаб для системного программирования.
Simula: Algol недостаточно хорош для симуляций.
Smalltalk: В Simula не всё является объектом.
Fortran: Ассемблер слишком низкоуровневый.
Cobol: Fortran пугает.
PL/1: В Fortran недостаточно типов данных.
Ada: Во всех существующих языках чего-то не хватает.
Basic: Fortran пугает.
APL: Fortran недостаточно хорош для работы с массивами.
J: Для APL требуется собственный набор символов.
C: Ассемблер слишком низкоуровневый.
C++: C слишком низкоуровневый.
Java: C++ — это костыль. И Microsoft нас раздавит.
C#: Java контролируется Sun.
Lisp: Машины Тьюринга — неудобный способ описания вычислений.
Scheme: MacLisp — это костыль.
T: В Scheme нет библиотек.
Common Lisp: Слишком много диалектов Lisp.
Dylan: В Scheme нет библиотек, а синтаксис Lisp пугает.
Perl: Shell-скрипты/awk/sed слишком мало похожи на языки программирования.
Python: Perl — это костыль.
Ruby: Perl — это костыль, а синтаксис Lisp пугает.
Prolog: Программирование слишком мало похоже на логику.