지난 20여 년간의 프로그래밍 언어 개발 흐름을 돌아보고, 왜 최근의 혁신이 느려진 것처럼 보이는지, 그리고 언어가 도메인으로 옆으로 퍼지는 변화와 앞으로의 가능성을 탐색한다.
The book The Burning World by J.G. Ballard is a post-apocalyptic science fiction tale about the near complete dissipation of water from the surface of the Earth.

The now defunct blog Strange Words had a beautiful description of The Burning World that I think is apt as a TL;DR of this post:
The Burning World is the tale of the long season. More specifically, it is a story of the timeless moment between the seasons, between end and the beginning of the cycle. It is the season of Shiva, whose eye opens and destroys the world in fire. And then it all begins again…
프로그래밍 언어 애호가들에게 지난 10년은 발라드가 말한 “긴 계절”처럼 느껴졌다. 2002년부터 2013년 사이의 폭발적 시기에는 Scala, Clojure, F#, Go, Rust, Idris, Dart, Kotlin, Elixir, TypeScript, Pure, Julia 같은 언어들이 등장했고(몇 가지만 들면), Python, JavaScript, Haskell 같은 오래된 언어들도 새로운 활력을 얻었다.1 그 이후에도 새로운 언어들이 꾸준히 등장했지만, 2013년 이후에 나온 언어들의 임팩트는 상대적으로 잔잔했다.
몇 해 전, 내 가장 인기 있던 글 중 하나인 /Programming Language Development, the past 5 Years/ 의 후속편을 써볼까 생각했다. 하지만 langdev 지형을 살펴보니, 내가 한눈을 판 사이에 판도가 바뀌어 있었다. 대략 2002년부터 ~2013년까지는 langdev 덕후들에게 경이로운 시기였지만, 2014년에서 2021년 사이의 시간은 싱겁게 느껴졌다. 물론 그동안에도 새로운 언어들이 만들어졌지만, 업계를 뒤흔드는 사례는 드물었다. 그때 트위터에서 친구들에게 물었고 매우 사려 깊은 답변들을 받았다.
비할 데 없는 Chas Emerick은 langdev 지형이 호스팅 모델로 바뀌었다는 중요한 지점을 짚었다:
Waaaay more interesting are languages as part of integrated systems that provide/ensure consistent semantics in various domains.
Languages as part of…
databases
distributed computing primitives
network infrastructure
fabrication machinery
robotics
마찬가지로, Jon Purdy는 이렇게 덧붙였다:
We recognise now that a PL is not just a PL, it’s the core logic of a system for making things; and over the years there have been demos of new programming environment concepts, which people clearly want, as they aim to solve serious pains with usability and accessibility.
즉, 언어들이 느려진 게 아니라 옆으로 번지고 있는지도 모른다. 쿼리 언어, 셰이더 언어, 빌드 언어, 로보틱스나 금융을 위한 DSL 등으로 용해되어 각 도메인에 스며들고 있다. langdev의 변화는 하나의 거대한 패러다임 전환이라기보다, 깊게 통합된 50개의 작은 변화에 더 가까울 수 있다.
Carin Meier는 더 높은 수준에서 생각하라는 메시지를 건넸다:
The pace of innovation in any field is not constant - it happens in waves. Also as you become more personally expert in a field, your expectations become higher.
이에 더해 Steve Klabnick은 이렇게 말했다:
1994-1995 was an amazing two years 2002 to ~2013 was an amazing ten years this is just gonna keep getting bigger and longer over time, i think.
다시 말해, 파도의 간격이 길어지고 있다. 다음 langdev의 계절은 아직 몇 년은 더 기다려야 할지도 모른다. 아래에서 위의 지점들을 조금 더 풀어보자.
Philip K. Dick’s science fiction novel Time Out of Joint presents a world where the familiar reality begins to peel away, revealing that the supposed infinite abundance was in fact a constructed illusion.

오랜 세월 동안 프로그래밍 언어 개발은 극적인 패러다임 전환을 몇 번밖에 겪지 않았다. 대신 새로운 언어들은 보통 특정 문제를 풀기 위해 기능들을 섞고 맞추는 방식을 택한다.2 하지만 조합할 수 있는 가지수가 유한하다 보니 결국 “사소한 차이의 나르시시즘”에 부딪힌다:
남는 것은 점점 더 틈새적이거나 바로크적인 확장들이다. 종속 타입, 이펙트 시스템, 선형 논리 같은 것들은 흥미롭고 중요하지만, 컴퓨팅 풍경 전체를 바꾸는 광범위한 패러다임은 아니다. 그렇다고 해도, 희소성 자체가 영감을 주기도 한다. 오늘이 “우물이 말랐다”고 생각한 첫날도 아니고 마지막 날도 아니다. 우리는 가능한 조합들을 다 탐색했다고 믿는 경향이 흔하지만, 지금까지 그런 주장들은 번번이 틀렸음이 드러났다.
프로그래밍 언어 발전이 시간에 따라 들쑥날쑥 파동을 그린다는 생각은 매우 그럴듯하다. 역사 속 langdev를 훑으며 추세를 찾아보고, 오늘 우리가 어디쯤 서 있는지 통찰을 줄 만한 패턴이 있는지 살펴보면 흥미로울 것이다. 대충 훑어봐도 큰 변화들은 덩어리로 몰려 있는 듯하다:
다만 이런 분석은 교란 변수가 너무 많다. 무엇보다도, 특정 시점의 컴퓨팅 산업 자체의 상태가 langdev 추세에 어떤 영향을 줬는지 분리해내기가 대단히 어렵다. 나는 langdev가 그 시대의 경제적, 문화적, 기술적 힘과 분리될 수 없다고 본다. 우리는 아주 특정한 계산 환경 속에 살고 있고, 다음 게임 체인저 언어도 그 환경에서 자랄 것이다. 2002~2013년 즈음의 langdev은 의미심장했으며 함수형 프로그래밍, 타입 추론, 동시성 모델, 점진적 타이핑, 위생적인 매크로, 메타프로그래밍, 불변성 등이 채택되었다. 새로운 언어가 자랄 토양은 지금 막 그 언어들에서 나온 큰 아이디어들로 비옥해지는 중이다. null 안전성, 패턴 매칭, async/await, 데이터 주도 설계, 고차 종류 타입 같은 것들 말이다. 큰 아이디어는 뿌리내리는 데 시간이 걸린다.
오늘날 새로운 프로그래밍 언어는 한층 높아진 기대 속에서 태어난다. 우아한 문법이나 영리한 타입 시스템만으로는 충분하지 않다. 진지하게 받아들여지려면, 새로운 언어는 복잡한 “배터리 포함” 세트를 동봉해야 한다:
그리고 이 “배터리”들 중 어느 것도 신규 언어가 직면하는 AI 문제를 해결해주지 못한다. 즉, LLM은 새로운 언어의 코드를 효과적으로 생성하지 못해 자기강화적인 “선도자 독주” 문제가 생긴다. 인기 있는 언어일수록 학습 데이터가 더 많아지고, 그럴수록 LLM에서 더 유용해지며, 그 결과 더더욱 인기가 높아진다. 프로그래밍의 미래가 Python이나 JavaScript처럼 보이게 될까봐 걱정된다.

1970년대에는 논문과 (가능하면) 컴파일러나 인터프리터 하나만으로도 새 언어를 세상에 내놓을 수 있었다. 2025년에는 통합된 제품, 서사, 생태계를 부트스트랩할 만한 추진력, 그리고 지속적 사용으로만 쌓을 수 있는 방대한 코드 말뭉치가 필요하다. 현대의 langdev은 엄두가 안 날 정도로 벅차다.
최근 몇 년 사이에 Mojo, Vale, Carbon, Gleam 같은 흥미로운 새 언어들이 이런 변두리를 실험하며 등장했다. 이 언어들이 내일의 언어가 될지는 두고 볼 일이다.
:F
Rust, Kotlin, Dart는 _새롭다_고 느껴질지 몰라도 이미 10년(혹은 그 이상)이 지난 언어들이다.↩︎
물론 가끔은 무작정 섞어보며 “뭐가 나오나 보자”는 식으로 언어가 만들어지기도 한다 — 그게 매우 재미있을 때도 있다. 그런데 그런 언어가 인기를 끌 때도 있다