1.2.5 디자인 노트
대부분의 ‘프로그래밍 언어(programming language)’ 책은 엄밀히 말해서 ‘프로그래밍 언어 구현(programming language implementation)’에 관한 책이다. 언어 자체가 어떻게 디자인되어 그렇게 구현됐는지 친절하게 설명한 책은 거의 없다. 구현은 정확하게 정의되어 있기 때문에 재미가 있다. 프로그래머는 성격상 흑과 백, 1과 0을 좋아하는 것 같다.
나는 이 분야가 전문인 많은 언어 해커들을 알고 있다. 언어 스펙을 문지방 밑으로 밀어 넣고 몇 개월 기다리면 코드와 벤치마크 결과가 밖으로 나온다.
개인적으로 나는 이 세상이 포트란(FORTRAN) 77의 구현체를 너무 많이 필요로 한다고 생각한다. 어느 시점에 이르면 여러분은 새로운 언어를 디자인하고 있는 스스로를 발견하게 될 것이다. 일단 그 게임을 시작하면 더 부드럽고 인간적인 측면이 가장 중요해진다. 어떤 기능이 배우기 쉬운지, 혁신과 익숙함의 균형은 어떻게 맞출지, 어떤 구문이 누구에게 더 읽기 쉬운지 등등.
바라건대, 여러분이 만든 새 언어가 천공 카드의 너비를 가정하여 문법에 하드코딩하는 불상사는 없기를!
이 모든 것들이 새로 만든 언어가 성공하느냐, 실패하느냐에 지대한 영향을 미친다. 부디 여러분이 만든 언어가 성공하길 바라는 순수한 마음에서 프로그래밍 언어의 인간적인 부분을 달여 넣은 ‘디자인 노트’를 일부 장에 삽입했다. 나도 이 분야의 전문가는 아니므로 (정말 그런 전문가가 있을지도 의문이지만) 잘 알아서 소화하기 바란다. 잠시 생각을 하게 되어 여러분의 삶이 더 풍성해진다면 더 바랄 게 없겠다.