마츠모토 유키히로의 프로그래밍 언어 만들기

[…] 아는 범위에서 이야기하면 “설계자 자신이 자기가 쓸 목적으로 설계한 언어가 사랑받는다.”라는 점이다.

1

여전히 나의 가장 큰 관심사이자 궁극적인 프로젝트인 언어 설계 및 개발에 관한 책이라 냉큼 사서 읽었다. 책의 내용이 어렵다는 것은 뒤로하고(쉬울리 있겠는가?) 개인적으로 책에 담겨진 내용은 언어 설계나 개발에 도움이 되었다.

2

하지만 언어 설계에 대한 고민이나 경험도 내가 기대했던 것보다 작아서 아쉬웠다. 다음에 좀 더 경험을 공유할 수 있는 책을 기대해본다.


그렇다면 “이제 와서 자기 제작 언어를 만들자는 제안은 무의미한 것일까?”라는 질문에 어디까지나 개인적인 의견이지만, 대답은 “아니오”다. 비록 현대라도 새로운 언어를 개인 차원에서 설계하는 것은 꽤 중요한 의미가 있다. 게다가 현재 폭넓게 사용되는 언어의 상당수는, 개발 환경이 쉽게 갖춰지고 난 후 개인 차원에서 설계 및 개발된 것이다. 개인 차원의 언어 개발이 정말 무의미했다면 루비도, 펄도, 파이썬도, 클로저도 탄생하지 않았을 것이다.

[…] 지금 생각하면 커뮤니티 등의 엄청난 자산을 무시했던 것 같다. 이에 대한 잠재력을 전혀 눈치채지 못했던 것이다.

[…] 그래도 옛날 이야기만으로 치부하기에는 여러 가지 도움이 되는 지식이다. […] 1) 디자인은 결정이다. 2) 구문이라는 기본적인 것이라도 여러 가지 고려해야 할 사항이 있다 3) 생각을 잘 하지 않으면 잘못된 디자인이 나온다 4) 생각을 아무리 잘 해도 잘못은 하기 마련이다.

대부분의 소프트웨어 개발자에게 중요한 것은 컨커런트 프로그래밍이다. 즉 컨커런트한 소프트웨어를 개발해 두면 OS 실행 환경이 CPU의 수에 따라 하나밖에 없으면 외관상의 동시 실행에, 복수로 있으면 진정한 동시 실행으로 전화해 주면 되기 때문이다.

프로세스는 ‘실행 중의 프로그램’을 나타내는 OS의 구조다. 최근 OS는 복수의 프로그램을 동시에 동작시킬 수 있다.

스레드의 특징은 뭐니뭐니해도 메모리 공간을 공유하므로, 스레드 간의 통신 비용이 낮은 점이다.

Written on August 25, 2019