newsmode
search
Меню
arrow_back Назад

What Languages Fix

auto_awesomeКраткое саммари

Кевин Келлехер предложил интересный способ сравнивать языки программирования — описывать каждый через проблему, которую он решает. Удивительно, насколько многие языки можно охарактеризовать таким образом. Пол Грэм проходится по длинному списку: от 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: Программирование недостаточно похоже на логику.