정이용

HTML은 사실 프로그래밍 언어입니다. 반박해 보세요.(번역)

원문: HTML Is Actually a Programming Language. Fight Me ⎯Wired(2025.1.6)

사실, HTML은 가장 중요한 컴퓨팅 언어입니다. 과소평가하지 마십시오.

by Tim Carmody

HTML은 속기 쉽습니다. 쉬워 보이죠. 그리고 쉬운 HTML은 정말 쉽습니다. 몇 개의 태그만으로 웹페이지에 이름을 적고, 크기를 조절하고, 굵게 또는 기울여서 “멋지다”를 추가할 수 있습니다. 심지어—좋았던 시절에 성인이 된 우리들에게는—깜빡이게 하거나 화면을 가로질러 스크롤하게 만들 수도 있습니다.

HTML은 쉬워 보이고, 정식 조건 논리나 튜링 완전성 같은 기능이 부족하기 때문에, 흔히 프로그래밍 언어가 아니라고 치부됩니다. “그건 진짜 코드가 아니야, 그냥 마크업일 뿐이지”라는 말을 흔히 듣습니다. 저 역시 스크립트 자동화부터 머신러닝 모델 훈련까지, 명령줄의 엄격한 아름다움을 모르는 사람은 아닙니다. 하지만 HTML을 과소평가하는 것은 큰 오산입니다. HTML은 지금까지 개발된 컴퓨팅 언어 중, 프로그래밍 언어이든 아니든, 가장 중요한 언어입니다. 다른 모든 프로그래밍 언어는 지난 30년 이상 HTML이 컴퓨팅을 어떻게 재정의해 왔는지에 대해 고심해야 합니다. 수많은 “순수” 프로그래밍 언어가 점점 더 많은 HTML 생성을 자동화하고 있습니다.

HTML을 프로그래밍 언어로 인정하지 않는 사람들은 언어의 본질을 제대로 이해하지 못하고 있다는 것을 보여주는 것입니다. 언어는 상대방에게 다른 해석의 여지를 남기지 않고 무엇을 해야 할지 지시하는 것이 아닙니다. 언어는 그보다 훨씬 더 풍부하고 심오한 것입니다. 인간의 언어처럼, HTML은 대화적입니다. 맥락에 놀라울 정도로 잘 적응합니다. 데스크톱 브라우저나 전자책 리더기 화면부터 모바일 앱이나 시각 장애인을 위한 화면 읽기 프로그램까지 (해당 기기가 하이퍼텍스트를 표시하도록 만들어진 경우), 어떤 기기에서든 다른 형태로 나타날 수 있습니다.

HTML은 어떻게 보면 전자 시대의 종이이자 인쇄기입니다. 우리가 쓰는 방식이자 우리가 읽는 방식입니다. 가장 민주적인 컴퓨터 언어이자 가장 전 세계적인 언어입니다. 우리가 서로 소통하고 전 세계에 정보를 공유하는 데 사용하는 매체입니다. 모든 디지털 지식을 위한 도서관, 즉 기록 보관소, 디렉터리, 연결 집합체로서 개발된 것은 당연합니다.

제 나이 또래의 많은 독자들처럼, 저는 1994년 넷스케이프 브라우저가 웹을 전 세계에 훨씬 더 많이 보급했던 그 흥분되는 시기에 HTML을 처음 접했습니다. 저는 당시 고등학교에 몇 대 없는 컴퓨터로만 인터넷을 이용할 수 있었고, 집에는 컴퓨터는 물론 전화 접속조차 없었지만, 팀 버너스-리와 그의 동료들이 만들어낸 낯설고 새로운 공간을 탐험하는 아마추어 전문가가 되기 위해 빠르게 노력했습니다.

나이가 좀 더 많은 친구가 애니메이션 "공사 중" GIF, 인터랙티브 매직 8볼, 그리고 엄청난 대역폭을 잡아먹는 사진 몇 장으로 가득 찬 자신의 홈페이지를 만드는 방법을 보여주었습니다. 이메일 주소가 없었던 저는 그 친구의 사이트에 텍스트 입력 필드를 만들어 그에게 메시지를 보낼 수 있었는데, 그 텍스트 상자는 "오직 TIM만을 위한 것"이라는 엄격한 지침이 붙어 있었습니다. 그는 자신의 답변을 웹사이트에 직접 게시했고, 그래서 나는(그리고 이론상으로는 누구든) 다음번에 컴퓨터를 사용할 수 있을 때 그 내용을 읽을 수 있었습니다. 그때는 그게 우리 둘, 딱히 위험할 일도 없던 우리에겐, 정보 보안이라고 여겨졌습니다.

친구들을 위해 재미있는 무언가를 만들 수 있다는 것, 하지만 잠재적으로 전 세계 누구든 그것을 발견할 수 있다는 생각은 정말 매혹적이었습니다. 언어 자체도 마찬가지였습니다. 당시의 순수 HTML은 대부분의 사람들이, 심지어 처음 접하는 사람들조차 이해하기 쉬웠습니다. 의도한 대로 작동하게 하려면 대부분의 태그를 열고 닫아야 한다는 것을 이해하기 위해 (수학 명제나 일반 문장의 괄호처럼) 형식 논리 입문서가 필요하지 않았습니다. 그리고 HTML이 "고장났을" 때 어떤 일이 일어나는지에서 가능성을 발견하기 위해 장난기 넘치는 십대가 될 필요도 없었습니다.

프로그래밍 언어를 배우는 것은 곧 디버깅하는 방법을 배우는 것입니다. 하지만 파이썬에서 잘못된 명령어를 사용하면 보통 코드가 실행되지 않도록 하는 오류 메시지가 반환되지, 창대하지만 기괴하게 실패하여 만든 이의 의도를 뛰어넘는 무언가가 나타나지는 않습니다. HTML에서는 우리 모두가 프랑켄슈타인 박사입니다.

제가 가장 좋아하는 웹사이트 중 하나는 자수 문제 해결 가이드입니다. 요즘은 (저처럼) 로컬 사본을 가지고 있지 않다면 인터넷 아카이브를 통해서만 이용할 수 있습니다. 맨 위쪽은 다소 구식이긴 하지만 전형적인 소규모 비즈니스 웹사이트처럼 보입니다. 하지만 아래를 훑어보면 즉시 이상한 점을 발견하게 됩니다. 모든 텍스트는 빨간색과 파란색 Arial로 번갈아 가며 가운데 정렬되어 있고, 점차 크기가 점점 더 커지며, 구문이 중간에 줄 바꿈되거나 단어 중간에서 가장자리에 닿아, 마치 이상한 나라의 앨리스가 점점 더 작은 문을 통과하려고 애쓰는 것처럼 화면을 가득 채웁니다.

소스 코드를 보면 (웹사이트처럼 소스 보기를 이렇게 쉽게 만든 다른 프로그램이 있었나요?), 무엇이 잘못되었는지 금방 알 수 있습니다. 가운데 정렬된 각 텍스트 줄은 닫히지 않는 <h2> 또는 <h3> 머리글 태그로 시작합니다. 상대적인 크기만 설정하고 절대적인 크기를 설정하지 않는 각 머리글 태그는—이는 웹의 유연한 문법의 의미적 풍부함의 일부입니다—이전 태그를 기반으로 점점 더 큰 중첩 인형을 만듭니다. 텍스트 계층 구조를 정의하기 위해 설계된 태그가 날뛰며 혼돈을 만들어냅니다. 단어 자체가 실이 어떻게 끊어지는지에 대한 내용이라는 사실은 그것을 시로 만듭니다.

자수 문제 해결 가이드 자체만으로도 꽤 영리한 발견된 개념 예술 작품이 될 것입니다. 하지만 소스를 보고 파일을 다운로드하여 일반적인 재봉 문제 해결 지침을 원하는 텍스트로 바꾸면 그 예술 작품을 자신만의 것으로 만들 수 있습니다. 저는 제가 좋아하는 시를 넣어 맥락에서 분리하고 새로운 시각으로 읽도록 강요하는 것을 좋아합니다.

이러한 "망가진" 사이트들은 시맨틱 HTML의 위대한 성과를 뒤집습니다. 시맨틱 HTML은 발전하면서 구조와 표현을 점점 더 분리했습니다. 텍스트를 이탤릭체로 표시하도록 엄격하게 지정하는 <i> 태그 대신, 강조를 나타내는 <em> 태그(또는 책이나 영화 제목 등을 나타내는 <cite> 태그)를 사용합니다. 이러한 요소들은 컴퓨터 화면에서는 이탤릭체로 표시될 수 있지만, 화면 읽기 프로그램에서는 다른 억양으로 읽힐 수 있습니다. 자수 문제 해결 가이드는 시맨틱 태그를 가로채서 예상치 못한 것을 표현하게 만듭니다. 하나의 웹사이트가 작은 휴대폰이나 거대한 텔레비전 화면에 반응형으로 표시되도록 하는 동일한 구성 요소가 웹사이트를 근본적으로 표시할 수 없게 만들 수도 있습니다. 이것은 정말 즐거운 일입니다.

콘텐츠 관리 시스템과 HTML을 동적으로 생성하는 복잡한 사이트의 유용성을 인정하지만, 손으로 편집할 수 있는 간단한 HTML 파일로 사이트를 구축하는 데에는 즐거움이 있습니다. 저는 여전히 제 웹사이트를 이런 방식으로 편집하며, 모든 태그, 섹션, 단락 구분을 볼 수 있도록 정리합니다. 저는 PDF 형식의 전자책을 직접 편집하여, 누구에게도 배포하지 않고 개인적으로 소장할 멋진 HTML 기반 EPUB 파일로 변환하는 작업도 즐깁니다. 제 자신만의 독립적인 웹사이트로 이루어진 개인 서재인 셈입니다. 팬데믹이 한창일 때, 이러한 파일과 스타일 시트를 손으로 편집하는 것은 위안이 되었습니다.

궁극적으로, HTML이 전문가의 영역이 되었음에도 불구하고, 그것은 특정 집단만이 독점할 수 없습니다. 이것이 많은 프로그래머들이 웹에 대해 불안해하고, 때로는 소프트웨어 엔지니어와 웹 개발자 사이에 세운 너무나도 현실적인 장벽을 유지하기 위해 애처롭게 필사적인 이유입니다. 하지만 HTML을 작성하는 사람들은 계층 구조는 무너뜨리기 위해 만들어졌다는 것을 알고 있습니다. 예상되는 곳에서 닫히지 않는 태그 하나만 있으면 됩니다.

다른 프로그래머들이 경멸적으로 말할 수 있는 것이 HTML 애호가들이 받아들이는 것입니다. 누구나 할 수 있다는 것. 복잡한 프레임워크를 사용하든 매우 간단한 도구를 사용하든, HTML의 약속은 우리가 원하는 무엇이든 만들고, 제작하고, 코딩하고, 실행할 수 있다는 것입니다.

이 게시물에 이메일로 답장하기

#읽을거리