우리는 흔히 쟤는 못하는 것이 없어... 라고 하는 말을 종종 하곤 한다.
그러나 분명히 모든 것을 전부 다 잘하는 사람은 없는 법이다.
즉, 많은 부분에 있어 잘하는 사람이라고 부르는 것이 사실은 정확하다.
컴퓨터의 세계에서도 그런 법칙이 적용된다.
컴퓨터는 뭐든지 할 수 있다. 그래서 정말 만능 재주꾼이지만... 안타깝게 느리다.
콘솔 게임기는 CPU에 비해서는 낮은 클럭을 가지고 있는데도 훌륭한 성능을 보여주지 않는가? 단지 게임만을 보여줄 뿐이지만 말이다.
그렇다면 소프트웨어의 세계는 어떨까?...
아무리 이 세계가 소프트하다지만 이런 법칙에서 어긋날 수는 없다.
흔히 General-Purpose Language라고 불리우는 C, C++, Java 등의 언어를 생각해보자.
서로 자기가 잘났다고 뽐내는데도 불구하고 이 세계는 아직도 수많은 언어가 판을 치는 세상이다.
모든 일에 있어서 가장 훌륭한 언어가 있다면 다른 언어는 살아남지 못했을 텐데 말이다.
나는 그동안 절대적 존재에 대한 환상을 가지고 있었다고 생각한다.
오직 한 언어가 지배하는 세상 말이다. 그것이 프로그래밍 언어이든 사람의 언어이든 (그래도 모든 사람이 한글만 쓴다면 정말 행복하겠다;) 말이야.
그러나 이 세상의 일은 그렇게 단순하지 않다. 모든 일에 완벽한 해결방법은 없는 것이다.
그래, 이 세상을 단일 세상으로 통합할 수 있다는 환상을 버리자. 온톨로지 또한 Domain-Specific 이 아니던가. 이 모든 세계를 공통적으로 설명할 수 있다는 것 자체가 불가능한 일이다.
그러나, 내게 있어 특히 만능 언어에 대한 환상을 가지게 만들었던 존재.
그것은 UML .... 이다.
UML을 설명하는 그 수많은 미사어구들에 속아 그 존재를 너무나 높게 평가하고 마치 숭배했던 존재.
그래서 UML로 시스템을 완벽히 설명할 수 있을 거라 착각 속에 살았었다.
다른 표기법들은 다 바보 같았으며 오직 UML 이 강림하사 이 세계를 평안하게 만들 것이라 기대했었다.
그래, 수많은 시행착오를 겪으면서도 '아니 이건 내가 UML을 잘 모르기 때문이야'라고 생각했을 뿐이었으니 말이다.
UML은 분명히 훌륭한 모델링 언어이다. 그러나 만능은 아니다.
그 대안으로 Microsoft의 The Architecture Journal 9 호에는 General-Purpose Modeling Language와는 대비되는 Domain-Specific Languages (DSLs) 를 소개하고 있다.
링크 : http://www.architecturejournal.net/2006/issue9/F1_Bare/
즉 UML은 문서화를 쉽게 할 수 있도록 도와주지만 불명확한 설명만이 있을 뿐이다. 당신이 시스템에 대해 좀 더 정확하고 자세하게 표현하고 싶다면 UML은 전혀 도움이 되지 못할 것이다.라는 것이 요지이다.
UML은 generic abstraction과 비정규화된 의미를 허용하여 특정 도메인을 정확히 묘사할 수 없다. 반대로 DSL은 특정 도메인의 업무, 플랫폼, 프로세스를 정확히 나타낼 수 있도록 설계되었다. 또한, General abstraction 대신에 특정 도메인과 직접적으로 매칭되는 개념을 이용한다.
DSLs는 사실 전혀 새로운 것이 아니다. 우리는 이미 웹 페이지를 꾸미기 위한 전용 언어인 HTML과 데이터베이스에 질의를 하고 업데이트를 하기 위한 SQL을 사용하고 있지 않는가. 또한 문자열의 특정 패턴을 찾고 추출해낼 수 있는 정규화 문법을 사용한다. 이러한 것들은 모두 Domain-Specific Languages 들이다.
DSLs의 본질은 간단하다. 큰 문제를 좀 더 작게 만들자는 것이다. HTML없이 수백의 종류가 다른 컴퓨터 들에게 같은 화면을 보여주는 것은 어려운 일이다. SQL없이 동시성 문제를 해결하고 쿼리를 던지고 데이터를 결합하는 일을 해야한다면 광범위한 프로그래밍 업무가 요구될 것이다.
자, 이미 MS의 Visual Studio 2005에서는 DSLs를 사용할 수 있는 도구를 제작해 놓았다.
링크 : http://www.microsoft.com/downloads/details.aspx?FamilyID=57a14cc6-c084-48dd-b401-1845013bf834&DisplayLang=en
자세한 내용은 Architecture Journal을 참조하면 될 것이다. (아직 PDF 버전은 제공되지 않는다. 나도 오늘 배달된 책을 본 거니까 -ㅅ-; 게다가 한글 버전 PDF 는 나올 생각을 안한다;)
인생살이도 마찬가지다. 많은 사람들이 공무원, 의사를 최고로 친다.
그러나 나는 아니다. 그게 인생이다.
'Domain-Specific'에 해당되는 글 1건
- 2006/12/01 만능 재주꾼의 허상



