What Languages Fix
Кевин Келлехер предложил интересный способ сравнивать языки программирования — описывать каждый через проблему, которую он решает. Удивительно, насколько многие языки можно охарактеризовать таким образом. Пол Грэм проходится по длинному списку: от Algol, Fortran и Cobol до C, C++, Java и C#, показывая, что каждый язык появился как ответ на недостаток предшественника. Также рассматриваются Lisp и его диалекты (Scheme, T, Common Lisp, Dylan), скриптовые языки (Perl, Python, Ruby) и логический Prolog. Общая закономерность: язык рождается, когда существующий инструмент оказывается слишком низкоуровневым, слишком пугающим, слишком неуклюжим или ему не хватает нужных типов данных.
Кевин Келлехер предложил интересный способ сравнивать языки программирования: описывать каждый через проблему, которую он решает. Удивительно, насколько многие языки и насколько хорошо можно описать таким образом.
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: Программирование недостаточно похоже на логику.