별난 언어들

2021년 8월

사람들이 자신들의 경험상 모든 프로그래밍 언어가 기본적으로 동등하다고 말할 때, 그들은 언어에 대해 말하는 것이 아니라 자신들이 해온 프로그래밍의 종류에 대해 말하는 것이다.

프로그래밍의 99.5%는 라이브러리 함수 호출을 이어 붙이는 것으로 이루어진다. 모든 인기 있는 언어들은 이 점에서 동등하게 뛰어나다. 따라서 사람들은 인기 있는 프로그래밍 언어들의 교집합 영역에서 평생을 쉽게 보낼 수 있다.

하지만 나머지 0.5%의 프로그래밍은 불균형적으로 흥미롭다. 그것이 무엇으로 이루어져 있는지 배우고 싶다면, 별난 언어들의 특이함이 따라야 할 좋은 단서가 된다.

별난 언어들은 우연히 별난 것이 아니다. 적어도 좋은 언어들은 그렇다. 좋은 언어들의 특이함은 대개 일반적인 라이브러리 호출을 이어 붙이는 것 이상의 어떤 형태의 프로그래밍이 존재함을 암시한다.

구체적인 예시: Lisp 매크로. Lisp 매크로는 많은 Lisp 프로그래머들에게조차 별나게 느껴진다. 그것들은 인기 있는 언어들의 교집합에 속하지 않을 뿐만 아니라, 본질적으로 언어를 Lisp의 방언으로 만들지 않고서는 제대로 구현하기 어렵다. 그리고 매크로는 분명히 접착식 프로그래밍(glue programming)을 넘어선 기술들의 증거이다. 예를 들어, 특정 유형의 문제를 위한 언어를 먼저 작성한 다음, 그 언어로 특정 애플리케이션을 작성하여 문제를 해결하는 방식이다. 매크로로 할 수 있는 것이 이것이 전부도 아니다; 그것은 심지어 지금도 완전히 탐구되지 않은 프로그램 조작 기술 공간의 한 영역일 뿐이다.

그러므로 프로그래밍이 무엇이 될 수 있는지에 대한 당신의 개념을 확장하고 싶다면, 별난 언어들을 배우는 것이 한 가지 방법이다. 대부분의 프로그래머들이 별나다고 생각하지만, 평균적인 사용자가 똑똑한 언어를 선택하고, 이 언어와 인기 있는 언어들의 교집합 사이의 차이점에 집중하라. 이 언어로는 말할 수 있지만 다른 언어로는 불가능할 정도로 불편하게 말해야 하는 것은 무엇인가? 이전에 말할 수 없었던 것을 말하는 방법을 배우는 과정에서, 아마도 이전에 생각할 수 없었던 것을 생각하는 방법을 배우게 될 것이다.

감사의 말씀: 이 글의 초고를 읽어준 Trevor Blackwell, Patrick Collison, Daniel Gackle, Amjad Masad, Robert Morris에게 감사드립니다.