마크업 언어

 

1. 개요
2. 프로그래밍 언어와의 차이
2.1. 전공자를 위한 설명
2.2. 비전공자를 위한 설명
3. 종류
3.1. 표현적 마크업
3.2. 절차적 마크업
3.3. 기술적 마크업


1. 개요


마크업 언어(Markup Language)는 문서가 화면에 표시되는 형식을 나타내거나 데이터의 논리적인 구조를 명시하기 위한 규칙들을 정의한 언어의 일종이다. 데이터를 기술한 언어라는 점에서 프로그래밍 언어와는 분명한 차이가 있다.
본래는 교정 부호 등을 표기하는데에 사용했지만, 점차 용도가 확장되어 문서의 구조를 표현하도록 발전하였다. 최초의 마크업 언어로 부를 수 있을 정도로 발전한 언어는 IBM의 GML을 기반으로 한 SGML.

2. 프로그래밍 언어와의 차이



2.1. 전공자를 위한 설명


마크업 언어는 절차성을 가지는 일반적인 프로그래밍 언어와 달리 느슨한 튜링 완전이 아니다. 튜링 머신에서 튜링 완전하기 위해서는 조건 분기문을 가지고 있고 메모리의 임의의 값을 수정할 수 있어야 한다. 하지만 마크업 언어는 이러한 과정을 하지 못하기 때문에 튜링 완전하지 않으며 프로그래밍 언어의 정의에 부합하지 않는다.

2.2. 비전공자를 위한 설명


실제 책을 하나의 프로그램이라고 생각해보자. 사람이 책에 볼펜으로 밑줄을 긋거나 볼펜으로 필기를 하는 행위는 마크업의 일종이라고 할 수 있다. 또는 그래픽 디자이너들한테 '책 표지는 배경을 무지개 그라데이션으로 넣어주시고 제목은 중앙에 검은색 굴림체로 크게 박아주세요' 라고 말하는 것 또한 자연언어 기반 마크업 언어라고 할 수 있다.
만약 책에 프로그래밍 언어를 적용할 수 있다면 책을 펴는 날짜에 따라 내용이 달라지거나, 편 사람이 누군지에 따라서 다른 내용을 보여줄 수 있어야 한다. 하지만 현실에선 당연히 그게 불가능하다. 쉽게 말하면 마크업 언어는 현실의 아날로그적인 기록매체와 유사한 역할을 한다고 볼 수 있다. 일단 한번 작성하면 누가 언제 보든 동일한 모습을 보여준다는 점이 같다.
우리가 흔히 웹사이트에서 보는 로그인 시스템이나 계정에 따라 다르게 보이는 프로필 등은 모두 프로그래밍 언어가 조합된 웹사이트다. 일반적인 마크업 언어만으로는 이러한 기능을 구현하는 것이 불가능하다.
보다 컴퓨터 상의 실제 사례를 보자면, 우선 한컴오피스 한글에서 수식 입력기를 들 수 있다. 한글의 수식입력기에서는 마우스로 기호를 하나하나 찾아 골라서 클릭을 하는 식으로도 수식을 입력을 할 수 있지만, 수식이 나타나는 화면의 아래창에 몇가지 명령어들을 규칙에 맞춰 직접 타이핑하며 마우스를 사용하지 않고도 여러가지 수식들을 입력할 수도 있다. 이때 사용되는 명령어들도 한컴오피스 한글 문서에서 수식 문자가 화면에 표시되는 모양과 형식을 결정하는 마크업 언어에 해당된다.[1]
위키를 작성하는 것 또한 마크업 언어를 활용하는 대표적인 사례다. 위키를 작성하기 위해선 하이퍼링크를 넣거나, 표를 그리기 위해 여러 기호들을 사용하고 이를 통해 문서를 깔끔하게 작성할 수 있다. 위키 내에 통용되는 문법을 기초로 마크업을 한 것이다. 물론 위키에서 일부 매크로 문법을 지원하기 때문에 보는 시점에 따라 다른 내용을 보여주는 경우도 있지만 이러한 일부 예외를 제외하면 프로그래밍적 요소는 없다.

3. 종류



3.1. 표현적 마크업


문서의 형태를 표현하기 위한 마크업.
대표적인 예로 HTML의 '''style''' 태그를 들 수 있다. 메모장이나 워드프로세서에서 제목 앞에 몇 칸의 공백을 넣는 등의 행위도 표현적 마크업의 일종이라고 할 수 있다.

3.2. 절차적 마크업


프로그램이 문서를 처리하는 방법을 서술한 마크업.
LaTeX가 이 분류에 속한다.

3.3. 기술적 마크업


가장 많이 사용되는 마크업 언어의 종류.
문서가 표현하는 내용을 기술하는 데에 사용한다. 표현적 마크업과 절차적 마크업의 요소를 어느 정도는 포함하고 있어 범용적 마크업이라고도 한다.
대표적인 예로는 HTML, 마크다운이 있으며, 물론 나무위키의 문법도 마크업 언어의 일종이다.

[1] 참고로 한컴오피스의 수식 입력 마크업 언어는 독자적으로 개발된것이 아니라 LaTeX로부터 따온 것이다.