pageinfo | |
---|---|
status | Draft |
<!DOCTYPE markdown>
마크다운은 아마도 세계에서 가장 유명한 마크업 언어 중 하나일 것이다1). 마크다운은 다른 마크업 언어와 달리, 가독성에 충실하기 위해 노력한 언어이다. 즉 마크다운으로 쓰여진 문서는 따로 파싱과 렌더링이 없어도 인간이 읽기에 불편함이 없다. 혹은 그러한 목적으로 디자인되었다. 이 점이 마크다운의 장점과 단점을 모두 규정한다. 왜냐하면 마크업 언어는 필연적으로, 가독성과 직관성 간의 모순에 직면하게 되고, 둘 중 하나를 선택해야 할 수밖에 없기 때문이다2). 마크다운은 가독성에 거의 모든 것을 희생하는 접근방식을 택했다. 기본적인 마크다운 문법은 매우 단순하며, 최소한의 html element만을 지원한다. 테이블 등 필요한 문법은 그냥 html을 사용하거나 확장기능을 도입해야 한다. 역설적으로, 마크다운은 그 덕분에 성공할 수 있었다. 수많은 사람들이 구현체를 만들어내며 독자적인 문법을 붙였고, 이러한 '사투리'들이 폭발적인 확산 속도를 견인했기 때문이다.
그러나 마크다운은 결코 잘 설계된 언어는 아니다. 존 그루버가 아론 슐츠와 처음 명세서와 펄 스크립트를 발표한 이래, 이 마크업을 다듬으려는 시도는, 최소한 창시자들 자신들에 의해서는, 결코 이루어지지 않았다. 기본적으로 마크다운은 플레인 텍스트를 html로 렌더링하기 위한 것이다. 그러나 명세서나 스크립트에서 정의한 것만으로는 불확실성을 해소하기가 어려운 점이 많았고, 심지어 명세서와 스크립트 간에도 구현이 다르게 이루어지는 경우가 있다. 이러한 불확실성은 제3자에 의해 제작된 많은 구현체들 간에, 추가된 것이 아닌 기본적인 문법 하에도, 렌더링되는 결과가 다르다는 문제점을 안게 되었다. 이것은 사투리(예컨대 가장 널리 쓰이는 사투리 중 하나인 GFM)의 문제가 아니다. 명세서에 정의되지 않았기 때문에 고민할 필요가 없었던 부분들이 빚어내는 모순이다.