지난달부터 제로베이스(Zero-Base)에서 자바스크립트 완주반 강의를 듣고 있는데,
배운 내용을 정리할 겸 강의 들으면서 궁금했던 점도 보완해서 같이 정리해두려 한다.
본격적으로 HTML/CSS 를 알아보기 전 마크업(Markup) 언어란 무엇인지,
그리고 마크다운(Markdown)언어란 무엇인가에 대해서 간단하게 알아보았다.
1. 마크업(Markup) 언어란?
위키백과에서는 마크업 언어의 정의를 아래와 같이 설명하고 있다.
마크업 언어(markup 言語, markup language)는 태그 등을 이용하여 문서나 데이터의 구조를 명기하는 언어의 한 가지이다.
태그는 원래 텍스트와는 별도로 원고의 교정부호와 주석을 표현하기 위한 것이었으나 용도가 점차 확장되어 문서의 구조를 표현하는 역할을 하게 되었다.
이러한 태그 방법의 체계를 마크업 언어라 한다.
요컨대 마크업 언어는 무언가를 "기록"하거나 "설명"하기 위한 언어로,
컴퓨터 "시스템을 구동"하기 위한 "소프트웨어"를 만드는 프로그래밍 언어와는 다르다.
마크업의 가장 대표적인 언어의 예로 HTML이 있는데, HTML은
(1) <header> <body> <footer>등의 태그를 사용해 웹 페이지의 "구조" 를 정의하며,
(2) HTML 단독으로는 프로그래밍 처럼 상호작용을 할 수 없다
라는 마크업 언어의 특징을 갖고 있다.
(참고로 우리가 일반적으로 접근하는 웹페이지들은 상호작용을 할 수 있는데,
이는 Javascript와 같은 프로그래밍 언어가 HTML과 함께 조합되어 있기 때문)
2. 마크다운(Markdown) 언어란?
위키백과에서 마크다운의 정의를 살펴보면 아래와 같다.
일반 텍스트 기반의 경량 마크업 언어다.
일반 텍스트로 서식이 있는 문서를 작성하는 데 사용되며, 일반 마크업 언어에 비해 문법이 쉽고 간단한 것이 특징이다.
HTML과 리치 텍스트(RTF) 등 서식 문서로 쉽게 변환되기 때문에
응용 소프트웨어와 함께 배포되는 README 파일이나 온라인 게시물 등에 많이 사용된다.
사실 나는 이름이 마크다운이길래 비슷한 이름의 마크업과 동등한 레벨의 개념인 줄 알았는데,
알고 보니 마크다운은 마크업 언어의 하위 개념이었다(머쓱).
개발자들은 깃허브(Github)의 README, Wiki 문서를 작성하는 용도로 종종 마크다운 문법을 사용해봤을 텐데,
비개발자일 경우에도 노션(Notion), 혹은 슬랙(Slack)을 써봤다면 꽤나 친숙한 언어일 것.
(노션, 슬랙 모두 둘 다 마크다운 문법을 지원하는 플랫폼)
.md라는 확장자를 사용하는 마크다운 언어는,
써보면 알겠지만 꺽쇠 <>로 감싸진 태그를 사용하는 HTML, 혹은 xml 등과 비교해 직관적으로 알아보기 쉬운 언어로,
서식이 있는 문서를 작성할 때 유용하다.
특히 문서에 ``(backtick)을 입력하는 것만으로도 코드 블록을 생성할 수 있어
개발자들이 문서를 작성하거나 코드를 공유해 소통할 때 매우 편리한 언어이다.
3. 마크업 언어의 구분
마크업 언어는 크게 세 가지로 구분할 수 있다.
1. 표현적 마크업 Presentational Markup
문서의 형태를 표현하기 위한 마크업이다. 대표적으로는 HTML의 style 태그가 있다.
2. 절차적 마크업 Procedural Markup
프로그램이 문서를 처리하는 방법을 서술하는 마크업이다.
3. 기술적 마크업 Descriptive Markup
가장 많이 사용되는 마크업 언어의 종류이며 (여기서 기술은 Technology가 아닌 기술(記述)이다)
문서가 표현하는 내용을 기술하는 데에 사용하는 마크업으로,
표현적 마크업과 절차적 마크업의 요소를 어느 정도 포함하고 있어 범용적 마크업이라고도 한다.
대표적인 예로는 HTML, XML, 마크다운이 있다.
4. 마크업 언어의 종류
위에서 설명한 HTML, 마크다운 외에도 마크업 언어의 종류는 여러 가지가 있다.
- HTML
- Markdown
- XML
- XHTML XML 기반의 HTML
- JSON
- YAML
- GenCode
- troff / nroff
- TeX
이번 포스팅에서는 간단하게 마크업 언어와 마크다운의 정의와, 두 언어의 차이를 간단하게 알아보았다.
사실 깊게 파고들면 추가로 설명할 것들이 많지만,
자세한 내용은 앞으로 HTML이나 다른 마크업 언어를 다루면서 설명해보도록 하겠다.
'Programming' 카테고리의 다른 글
Node.js 프로젝트에서 환경변수 관리하기(파일로 분리) (0) | 2023.01.17 |
---|---|
MacOS에서 MySQL Workbench 설치 및 데이터베이스 생성하기 (0) | 2023.01.16 |
Node.js 프로젝트 pkg 모듈로 빌드하기 (0) | 2023.01.15 |
구글 코랩(Google Colab/Colaboratory) 사용법 (0) | 2023.01.12 |
Node.js Error: Cannot find module /usr/src/app/nodemon 에러 해결 (0) | 2023.01.11 |