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