각 언어가 고치는 문제

케빈 켈러허는 프로그래밍 언어를 비교하는 흥미로운 방법을 제안했습니다: 각 언어가 해결하는 문제의 관점에서 설명하는 것이죠. 놀라운 점은 얼마나 많은 언어들이, 그리고 얼마나 잘, 이런 방식으로 설명될 수 있는지입니다.

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++는 땜질 처방이다. 그리고 마이크로소프트가 우리를 압도할 것이다.

C#: Java는 Sun에 의해 통제된다.

Lisp: 튜링 머신은 계산을 설명하는 어색한 방식이다.

Scheme: MacLisp는 땜질 처방이다.

T: Scheme은 라이브러리가 없다.

Common Lisp: Lisp의 방언이 너무 많다.

Dylan: Scheme은 라이브러리가 없고, Lisp 구문은 무섭다.

Perl: 셸 스크립트/awk/sed는 프로그래밍 언어답지 않다.

Python: Perl은 땜질 처방이다.

Ruby: Perl은 땜질 처방이고, Lisp 구문은 무섭다.

Prolog: 프로그래밍은 논리적이지 않다.