언어들이 해결하는 것
## 언어들이 해결하는 것
프로그래밍 언어는 각각 특정 문제를 해결하기 위해 설계되었으며, 이를 통해 언어의 특징과 장점을 이해할 수 있다.
주요 내용 요약:
프로그래밍 언어는 "해결하려는 문제"를 통해 특징을 정의할 수 있음.
각 언어가 겨냥한 특정한 약점이나 불편함이 있었음.
언어별 해결 대상:
Algol: 어셈블리어는 너무 저수준이다.
Pascal: Algol은 자료형이 부족하다.
Modula: Pascal은 시스템 프로그래밍에 불충분하다.
Python: Modula-3은 어렵고 무섭다.
Simula: Algol은 시뮬레이션에 적합하지 않다.
Smalltalk: Simula의 모든 것은 객체가 아니다.
Fortran: 어셈블리어는 너무 저수준이다.
Cobol: Fortran은 어렵다.
PL/1: Fortran의 자료형이 부족하다.
Ada: 기존 언어들에는 항상 무언가가 빠져 있다.
Basic: Fortran이 어렵다.
APL: Fortran은 배열 처리에 적합하지 않다.
J: APL은 별도의 문자셋을 필요로 한다.
C: 어셈블리어는 너무 저수준이다.
C++: C는 너무 저수준이다.
Java: C++는 복잡하고, MS가 우리를 위협하고 있다.
C#: Java는 Sun이 통제하고 있다.
Javascript: Java는 어렵다.
Lisp: 튜링 기계는 계산을 설명하기에 부적절하다.
Scheme: MacLisp는 복잡하다.
T: Scheme에는 라이브러리가 없다.
Common Lisp: Lisp는 방언이 너무 많다.
Dylan: Scheme에는 라이브러리가 없고, Lisp 문법은 어렵다.
Curl: Lisp 문법은 어렵고 XML은 중복된다.
Arc: Scheme에는 라이브러리가 없고 더 간결할 수 있다.
Perl: 쉘 스크립트/awk/sed는 충분히 프로그래밍 언어 같지 않다.
Python: Perl은 복잡하다.
Ruby: Perl은 복잡하고 Lisp 문법은 어렵다.
Prolog: 프로그래밍은 논리와 충분히 닮지 않았다.
추가 언급:
새로운 언어는 기존 도구들의 틈새 요구를 충족시키거나 초기 사용자들에게 매력을 제공하는 방식으로 발전해 왔음.
언어가 해결하려는 문제에 따라 설계 동기를 쉽게 이해할 수 있음.
What Languages Fix - (폴 그레이엄 에세이 요약)