본문 바로가기

Book

[책] DSL : 고객과 함께 하는 도메인 특화 언어 - 인사이트

사실 원래 '에릭 에반스'의 '도메인 주도 설계'라는 책을 읽으려고 하다가 DSL이라는 책이 있어서 선택을 하게 되었다.

저자는 '리팩토링'이라는 책으로 유명한(공저) '마틴 파울러'이다.


세상의 책을 일기 쉬운 책과 어려운 책으로 나눈다면 이 책은 후자에 속한다. 코드가 나오기는 하지만 어디에 적용할 지는 개인의 내공이 뒷받침 되어야 한다. 하지만 이 책은 그리 만만하지 않다. 왜냐하면 DSL이라는 것은 '객체지향프로그래밍'같은 하나의 패러다임이다. 처음 프롤로그에서 OOP라는 개념이 나왔지만 실제 이런 개념을 다양한 사람이 사용하기에는 10년 이상이 걸렸던 것 같다. (실제 객체라는 말은 1960년대 MIT에서 나왔고, 프로그래밍적으로 구현은 1960대의 Simula 67에서 이루어졌다.)


따라서 DSL이라는 개념을 다된 밥에 숟가락 올려놓듯이 거져먹기로 가져가기는 어려울 것 같다.

하지만 책을 읽다보니 DSL 개념을 적용한 응용은 도처에서 볼 수 있었다. 하나는 BDD라는 행위주도개발이라는 것인데 마틴파울러와 에릭 에반스가 만든 신조어인 플루언트 인터페이스(fluent interface)와 매우 흡사하다. 이런 것은 메서드 체이닝 같은 호출을 통해 이루어진다.


책이 두껍고 진도가 오래 걸려 도중에 그만 두었지만 다음에 읽을 것을 대비해 블로그에 기록을 해 두었다.

컴파일러나 인터프리터를 공부하는 사람이라면 많이 도움이 될만한 책이다.


[책안에서]

p.45 게토 언어(ghetto language) - 빈민가(ghetto)

두 번째 이슈는 이미 만들어져 있어 가져다 써야 할 기능을 직접 만든다는 점이다. 이 문제는 DSL뿐만 아니라 라이브러리에도 똑같이 적용된다. 예를 들어, 현재는 객체-관계 매핑 시스템을 직접 개발할 이유가 전혀 없다. 소프트웨어에 관한 나의 일반적인 규칙은 "직접 해야 할 일이 아니라면, 직접 만들지 말라. 대신 다른 사람이 만들어 놓지 않았는지 찾아보라"다. 특히 오픈 소스 툴이 발전했으므로, 맨바닥에서 직접 만들려고 하지 말아야 한다. 대신에 검증된 오픈 소스를 확장해서 작업하는 게 더 효과적이다.

p.70  3.6.2 파서 테스트하기

이처럼 양쪽 모두 테스트하는 코드를 보면, 내게 편집증이 있지는 않은지 하는 생각이 들 수도 있다. 하지만 코드는 흔히 나를 배신하낟.


[읽기기록]

  1. 9/6 ~p.2
  2. 9/9 ~p.28
  3. 9/10 ~p.38
  4. 9/11 ~p.78
  5. 9/13 ~p.106
  6. 9/16 ~p.128
  7. 9/23 ~p.160
  8. 10/10 ~p.164
  9. 10/14 ~p.174