Language Oriented Programming

Language Oriented Programming: Java IDE로 유명한 IntelliJ의 Sergey Dmitriev가 메타프로그래밍에 대한 자신의 생각과 현재 개발중인 툴에 대해 쓴 글. LISP이래로 메타프로그래밍에 대해 많은 시도가 있었으나 아직까지 메인스트림에서 성공한 경우는 없었다. 이 글에 대한 Martin Fowler의 Bliki에서도 앞으로 몇년동안 지켜봐야 할 분야라고 말하고 있지만, 과연 몇년 내에 큰 변화가 있을까. 90년대 말이었던 것 같은데, 메타프로그래밍이 뭔지 모르는 선배에게 한참 개념을 설명한 후 10년 후면 그 당시의 OOP만큼이나 중요한 개념이 될 것이라고 얘기했던 기억이 나지만 지금은 정말 그렇게 될 지 자신이 없다. 사실 industry에서 보면 OOP조차도 제대로 쓰는 사람이 많지 않은데 이들에게 하나의 dimension을 더 이해하라고 하는 것이 무리라는 생각도 든다. 하지만 J2SE 5.0에 annotation processing을 위한 툴이 표준적으로 포함되어 있고 Eclipse 프로젝트에서도 AspectJ가 진행되고 있으며 IntelliJ와 같이 많이 사용되는 툴 메이커에서도 메타 프로그래밍을 도와주는 툴을 내놓는다면, 예상하지 못했던 방식으로라도 메타프로그래밍이 실용화될 수도 있지 않을까? 구체적으로 예상하긴 어렵지만, 예를 들어

  • LaTeX의 경우처럼 Domain Specific Language package를 전문가들이 만들면 일반 프로그래머들은 사용만 하는 시스템
  • OO 개념을 visual tool에서 쉽게 사용하게 해주는 것처럼 MP를 제한적이지만 쉽게 사용하게 해주는 툴

등이 나올 수도 있지 않을까.