INTERPRETER 2.1 언어의 구성 요소
컴퓨팅의 암흑기 이래로 엔지니어들은 줄곧 프로그래밍 언어를 제작해왔다. 컴퓨터와 대화를 나누기가 워낙 어렵고 까다롭다 보니 언어의 도움을 받지 않을 수 없었다. 요즘 컴퓨터는 그때보다 수백만 배는 더 빨라지고 스토리지 용량은 몇 자릿수 더 증가했지만, 프로그래밍 언어를 개발하는 방법은 사실 거의 변하지 않았다.
언어 디자이너들은 광활한 영역을 탐험했지만 그들이 새겨놓은 흔적은 그리 많지 않다. 모든 언어가 똑같은 길을 밟진 않았지만(일부는 한두 개 지름길을 택했다), 다행히도 미 해군 제독 그레이스 호퍼(Grace Hopper)가 만든 최초의 코볼(COBOL) 컴파일러부터 요즘 새로이 각광받는 (깃 리포지터리(Git repository) 어딘가에 성의 없이 대충 만든 README 파일로 문서화된) 자바스크립트 트랜스파일러(transpile-to-JavaScript)까지 거의 비슷하다는 것은 확실하다.
막다른 골목에 다다른 경우도 있었다. 인용 횟수가 0으로 사장되어버린 CS(Computer Science, 컴퓨터 과학) 논문들, 메모리를 바이트 단위로 측정했던 시절에만 의미가 있던, 지금은 잊혀진 최적화 기법들도 많다.