본문 바로가기
Computer Science

[CS] 저는 HTML 프로그래머입니다.

by jyc_ 2025. 12. 1.

 
개발을 처음 배울 때 “HTML은 프로그래밍 언어가 아니다.” 라는 말을 종종 듣곤 한다.
 
그런데 막상 HTML 파일을 뜯어보면 뭔가 코드 비슷한것을 적고, 브라우저는 그걸 또 해석해서 화면을 출력한다.
겉보기엔 프로그래밍 언어처럼 생겼는데…
도대체 왜 프로그래밍 언어가 아닐까?
 
튜링 완전성 관점에서 이 질문을 풀어본다.


1. 튜링 완전성(Turing Completeness)이란?

튜링 완전하다는 건 한 문장으로 요약하면 아래와 같다.

충분한 시간과 메모리가 있다면, 어떤 계산 문제라도 표현할 수 있는 능력.

 
조건문, 반복문, 상태 변화, 메모리 조작 등을 이용해
일반적인 계산 처리를 할 수 있어야 튜링 완전한 언어다.
 
C, Java, Python 등 익숙한 언어들이 여기에 해당된다.
즉, 위 언어들은 튜링 완전한 언어이다.


2. HTML은 어떤 언어인가?

HTML은 HyperText Markup Language, 이름 그대로 마크업 언어다.
컴퓨터에게 “계산”을 시키는 언어가 아니라, 구조를 표현하는 언어다.

<h1>제목</h1>
<p>본문 텍스트</p>

 
이건 “제목을 이렇게 표시해라”, “문단은 이렇게 구성해라”라는 명령일 뿐,
어떤 계산 로직도, 메모리 수정 로직도 없다.


3. HTML이 튜링 완전하지 못한 이유

3-1. 조건문이 없다

HTML에서는 “A이면 B를 보여줘”, “로그인된 사용자면 메뉴를 보여줘” 같은 조건/분기 처리가 불가능하다.
브라우저가 해석하는 시점엔 로직을 분기할 수 있는 기능이 없다.
 

3-2. 반복문이 없다

HTML 자체로는 “이 div를 10번 반복해서 생성해라” 같은 반복 구조를 만들 수 없다.
 

3-3. 상태 변화가 없다

HTML은 화면의 구조를 정의할 뿐,
시간이 지나면서 상태가 바뀌는 로직(예: 카운터 증가, 변수 갱신)을 정의할 수 없다.
 

3-4. 메모리 개념이 없다

프로그래밍 언어이면 값 저장, 연산, 업데이트 같은 기능이 가능한데,
HTML엔 그런 메모리가 존재하지 않는다.
 
요약하면, HTML은 계산을 할 수 있는 언어가 아니기 때문에 튜링 완전하지 않다.
그리고 “튜링 완전하지 않은 언어”는 “프로그래밍 언어”라고 부르지 않는다.