도메인 특화 언어(DSL)는 특정 도메인에 최적화된 작은 언어예요. DSL은 목적이 분명하기 때문에, 작성자가 _어떻게_가 아니라 _무엇_을 원하는지 선언할 수 있게 해 줘서 생산성과 이해도를 크게 높여줄 수 있어요.
DSL이 활용되는 대표적인 분야 중 하나는 복잡한 사용자 정의와 설정이에요.
예를 들어 DOT 언어를 사용하면 그래프를 텍스트로 설명할 수 있고, 그러면 Graphviz 도구(예: dot) 중 하나가 이를 그림으로 변환해 줘요.
간단한 그래프는 다음과 같아요.
graph {
graph [bgcolor="yellow"]
a [color="red"]
b [color="blue"]
a -- b [color="green"]
}
이 내용을 example.dot 파일에 넣고 dot example.dot -T png -o example.png를 실행하면, 노란 배경 위에서 초록색 선으로 연결된 빨간색과 파란색 원이 있는 example.png 이미지가 만들어져요.
Graphviz dot 언어와 비슷한 도메인 특화 언어를 작성해 봐요.
우리가 만드는 DSL은 그래프 데이터 구조를 만드는 데 사용된다는 점에서 Graphviz dot 언어와 비슷해요. 하지만 DOT 언어와 달리, 우리 DSL은 우리 언어에서만 사용하는 내부 DSL이에요.
내부 DSL과 외부 DSL의 차이에 대해 더 알아보세요.
이 연습 문제에서는 builder pattern을 사용해 구조체 여러 개를 만들어야 해요.
간단히 말해, 이 패턴을 사용하면 인자가 많은 구조체 생성 함수를 여러 개의 개별 함수로 나눌 수 있어요. 이 방식 덕분에 간결하면서도 매우 유연하게 구조체를 만들고 설정할 수 있어요.
자세한 내용은 다음 문서에서 확인할 수 있어요.