Language Oriented Programming: The Next Programming Paradigm by Sergey Dmitriev
Part 1에서는 Language Oriented Programming (이하 LOP)이란 paradigm이 어떻게 나오게 되었는가를 설명하고 있다. 지난 번에 소개했던 Martin Fowler의 글과 내용은 거의 중복된다.
To achieve this independence, I need the freedom to create, reuse, and modify languages and environments. For this freedom to be practical, it needs to be easy to archive.
OOP나 DSL과 같은 높은 레벨의 abstraction을 제공하는 것은 생산성 향상에 있어서 중요한 의미를 가질 것이라는 것까지는 누구나 공감할 수 있는 내용일 것이지만, 그냥 지나치기 어려운 대목은 아무래도 DSL을 쉽게 만들 수 있도록 함으로써 그러한 이익을 극대화할 수 있다는 논리일 것이다. 물론, LOP의 성공 여부는 그것이 얼마나 쉬워질 수 있느냐하는 문제일 것이다. 얼마나 쉬워질 수 있는가에 대한 설득력 있는 논리가 부족한 것이 약간 아쉽다.
Part 2에서는 JetBrains의 Meta Programming System (이하, MPS)에서 어떻게 Language Oriented Programming을 구현했는가에 대해서 설명하고 있다. 즉, DSL을 쉽게 만드는 것이 중요하다는 것을 강조하는 것이 Part 1이라면 어떻게 쉽게 만들 수 있도록 할 것인가를 보여주는 것이 Part 2의 내용이다. MPS는 현재 JetBrains가 개발한 상용 Java IDE인 IntelliJ IDEA의 플러그인으로 구현되어있다. MPS는 Early Access Program을 통해서 개발중인 제품이 공개되고 있기 때문에 튜터리얼 (스크린샷 포함)을 약간 따라가보았다. DSL을 설계하기 위해서는 기본적으로 Structure Language, Editor Language, Transformation Language/Template을 사용하여 DSL을 표현해야하는데, 이러한 과정이 GUI를 통해서 이루어지는 것이 상당히 흥미로웠다.
The ideas underlying LOP and MPS are not new, and have actually been around for more than 20 years. The term Language Oriented Programming itself has been around for at least 10 years. What is new is that these ideas have silently saturated the software development community, and their time has finally come.
결론 부분에서 얘기하는 것과 같이 현재에 주목을 받고 있는 여러가지 기술들은 대부분 옛날에 만들어진 개념으로부터 출발하고 있다. 하지만, 그것이 주목을 받는데에는 거기에 근접한 기술들이 충분히 성숙해야할 뿐만 아니라 그 기술을 사용하는 사람들로부터 유효한 기술이라는 공감대를 형성하는 것이 필요하다. LOP가 과연 그들이 얘기하는 것처럼 OOP를 대체하는 시대를 뛰어넘는 기술일까? 지켜볼만한 가치는 있는 것 같다.