Кевин Келлехер (Kevin Kelleher) предложил интересный способ сравнивать языки программирования: описать каждый в терминах решаемой им задачи. Удивительно, как хорошо языки могут быть описаны таким образом.
Algol: Ассемблер слишком низкоуровнен.
Pascal: В Алголе недостаточно типов данных.
Modula: Pascal слишком хлипок для системного программирования.
Simula: Алгол недостаточно хорош для симуляций.
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: MacList – вариантная запись.
T: В Scheme нет библиотек.
Common Lisp: Развелось слишком много диалектов Lisp.
Dylan: В Scheme нет библиотек, а синтаксис Lisp страшен.
Perl: Языки оболочек scripts/awk/sed недостаточно похожи на языки программирования.
Python: Perl – вариантная запись.
Ruby: Perl – вариантная запись, а синтаксис Lisp страшен.
Prolog: Программирование недостаточно похоже на логические размышления.