더북(TheBook)

1.1.1 미니 언어는 곳곳에 있다

모든 성공한 범용 언어에는 성공적인 틈새(niche) 언어가 천 개는 될 것이다. 이런 언어를 보통 ‘미니 언어(little languages)’라고 하는데, 전문 용어(jargon)가 차고 넘치는 세상에서 ‘도메인 특화 언어(DSL, domain-specific languages)’라는 멋진 이름으로 부풀려졌다. 도메인 특화 언어는 어떤 작업에 특화된 피진어5다. 애플리케이션 스크립팅 언어(application scripting language), 템플릿 엔진(template engine), 마크업 포맷(markup format), 구성 파일(configuration file)을 떠올려보라.

 

여러분이 지금껏 한 번쯤 마주쳤을 만한 미니 언어를 내 마음대로 고른 그림이다.

거의 모든 큰 소프트웨어 프로젝트에서 이런 미니 언어가 한 다발은 필요하다. 그래서 가능하면 여러분이 직접 만들어 쓰기보다는 기존 언어를 재사용하는 편이 낫다. 문서화(documentation), 디버거(debugger), 편집기 지원(editor support), 구문 강조 표시(syntax highlighting) 같은 기능을 처음부터 직접 다 만들기란 상당히 힘들다.

하지만 본인의 필요에 부합하는 기존 라이브러리가 없으면 파서(parser, 구문 분석기) 같은 도구의 필요성을 절감할 좋은 기회가 된다. 또 기존 구현체를 재사용하더라도 결국 디버깅을 하거나 내부 구조를 샅샅이 뒤져봐야 할 필요성을 느끼게 될 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.