HTML 은 Hyper Text Markup Language로 인간의 언어인 텍스트를 기계가 알아 들을 수 있도록 규칙을 정한 것입니다. 물론 기계는 아직 인간의 언어를 이해하지 못합니다. 기계가 해석할 수 있는 것은 어느 부분이 제목이고 어느 부분이 문단인지 등 그 문서의 구조 뿐입니다.
여러분이 MS Word나 한글을 사용해서 워드 프로세싱을 한다고 가정해보죠. 제목과 내용을 구분하기 위해 글자의 크기를 늘리고 볼드체로 변경할 수도 있고, 계단식 리스트로 만들어 단락을 구분할 수도 있습니다. 또는 워드프로세서가 제공하는 스타일 지정 기능으로 할 수도 있을 것입니다. 기계는 어떤 것을 제목이라 알아볼 수 있을까요? 결론부터 이야기 하자면 인간은 글자 크기와 볼드체로는 그 부분이 제목인지 알 수 있지만 기계는 그렇지 못합니다. 문장 중간에도 강조를 위해 크고 두꺼운 글꼴을 사용할 수도 있기 때문입니다. 기계에게는 “여기가 제목이야”라고 콕 찝어 알려주어야 합니다. 즉 계층이 있는 리스트로 만들거나 미리 정의된 스타일로 지정해야 합니다.
HTML 은 이렇게 인간의 텍스트 속에 기계가 알 수 있는 코드를 삽입한 것입니다. 제목을 나타낼 땐, <h1>대제목…</h1>, <h2>소제목…</h2> 등으로, 문단을 나타낼 땐 <p>문단…</p> 등으로 표현하는 것입니다. 여기서 <>로 묶인, 문서의 부분을 정의하는 요소를 태그라 합니다.
HTML은 새로운 요소들이 필요함에 따라 버전업을 해왔습니다. 현재 최신 버전은 HTML 4.01로 곧 5.0이 나온다는 소문이 돌고 있습니다. HTML은 HTML을 표현하는 매체인 웹브라우저가 버전업을 함에 따라 발전되었습니다. 최초의 웹브라우저는 HTML을 표현하기 위해 만들어졌으나, 새로운 기능에 대한 사용자의 요구에 따라 웹브라우저를 만드는 회사들이 새로운 태그들을 추가하였습니다. 이렇게 추가된 태그를 사용한 페이지는 다른 웹브라우저로 볼 때 제대로 보이지 않는 문제를 가지게되었습니다.
예를 들어 MS에서 “우리는 볼드체를 쓸 땐 <b></b>로 할 거다”고 선언해서 익스플로러 2.0를 새로 출시한고 하면, 이 기준으로 만들어진 웹사이트는 익스플로러에서는 잘 보이지만 넷스케이프 등 다른 브라우저 뿐 아니라 익스플로러 1.0에서도 표현되지 않을 것입니다. 그래서 HTML을 표현하는 웹브라우저들은 HTML이란 언어의 해석을 엄격하게 하지 않도록 만들어집니다. 모르는 부분은 무시하고 넘어가는 것이죠. 이런 이유로 파이어폭스에서는 잘 보이는 페이지가 익스플로러에서는 깨져서 나온다던지 하는 현상이 벌어지고 “이 페이지는 익스플로러 6.0에서 최적화 되었습니다”라고 표시하는 일도 일어났습니다.
웹 표준을 제정하는 W3C(World Wide Web Consortium)에서는 이런 젼차로 어린 백셩을 위하야 HTML의 버전을 제정해서 발표하고 있습니다. 제발 아무 태그나 쓰지 말라는 것입니다. Web2.0을 주도하는 사람들은 이런 문제로 인해 표준적인 태그만으로 웹사이트를 만들 것을 권고하고 있습니다. Web2.0의 시대에는 표준코딩의 필요성에 대한 인식이 발전되었습니다.
하지만 아무리 권고를 해도 많은 사람들이 지키지 않는 것이 현실입니다. 기계가 해석하기 편하도록 설계된 HTML이 웹브라우저들의 경쟁으로 기계가 알아 볼 수 없는 일들이 왕왕 벌어지다 보니 보다 엄격한 언어체계가 필요하게 되었습니다. 이래서 등장한 언어가 XHTML입니다.
XHTML 은 XML에 기반해 만들어진 표준입니다. XML에 대한 설명을 안 할 수가 없는데, 간단히 말하면 HTML과 같은 태그 기반으로 이루어진 데이터를 표현하는 표준 규약입니다. 아래와 같이 데이터를 계층으로 구조화 시켜 만들어집니다.
여러분은 이 사무실에 책상이 몇 개 있는지, 컴퓨터는 몇 대가 있는지, 다리가 세 개가 있는 책상이 있는지 등 사무실을 구성하는 물품들의 정보를 쉽게 알 수 있을 것입니다. 그것은 여러분 뿐 아니라 기계도 마찬가지입니다.
XML은 자료를 표현하는 것이기 때문에 매우 엄격한 규칙을 가집니다. 가령 위 XML에서 마지막 </사무실>이 없다면 이 XML은 HTML과 달리 에러가 날 것입니다. (HTML은 마지막 태그를 닫던 말던 잘 표현됩니다. 위에서 언급했던 대로 웹브라우저가 엄격하게 해석하지 않기 때문이죠.)
규격에 잘 맞는 XML은 문서의 정의를 필요로 합니다. 위의 예에서 문서 정의를 하자면, 이 문서에서는 “사무실 속에 책상이 있고 책상은 다리와 상판을 포함하고 상판은 컴퓨터를 포함하여 컴퓨터는 키보드와 마우스를 포함한다.”가 문서 정의가 되겠습니다. 문서가 어떻게 구성되는지 규칙을 정하는 것입니다. 사람들은 특별한 필요에 의해 규칙을 정한 XML들을 만들어 냈습니다. 웹페이지의 내용을 다른 기기나 다른 프로그램에서도 읽을 수 있도록 만든 RSS, 그리고 매우 엄격한 HTML인 XHTML 등이 있습니다.
XHTML이 이렇게 규칙에 맞게 만들어 졌기때문에, 기계는 HTML보다 더욱 올바르게 문서를 해석하고 그 문서를 이용해서 여러 일을 할 수 있게 됩니다. 위의 예에서 다리가 세 개인 책상을 찾아낸다거나 마우스가 광마우스인 컴퓨터를 찾아 볼마우스로 바꾸는 등 정보의 열람과 가공이 용이해진 것입니다.
Web1.0의 시대에는 HTML을 해석하여 웹브라우저에 표현하는 것에 초점이 맞춰졌다면, Web2.0의 시대에서는 규격에 잘 맞는 HTML 또는 XHTML을 사용하여 브라우저에 표현하는 표준화 작업 후 문서의 내용을 변경한다거나 표현되는 스타일을 변경하는 등 사용자와의 인터렉티브한 커뮤니케이션, 또는 기계와 기계간의 정보 교환이 더욱 중요해 졌다고 할 수 있습니다.
스크립트 언어란 응용프로그램 내에서 구동되는 언어이며 응용프로그램을 만드는 C/C++, Java, VB 등과 구별되는 개념입니다. Javascript는 웹브라우저라는 응용프로그램에서 구동되는 스크립트 언어로써 HTML을 웹브라우저에 표현하기 전/후에 이런저런 일들을 할 수 있습니다.
여기서 이런저런 일이란 시간이 지남에 따라 점점 발전되어왔습니다. 여러분이 망치를 하나 가지고 있다고 하죠. 여러분은 망치를 사용하여 못을 박을 수도 있고 찌그러진 쇠를 펼 수도 있으며 오대수 아저씨처럼 살인 무기로도 사용할 수도 있습니다. javascript역시 폼에 입력된 값이 있는지 없는지 검사하는 용도라던가 경고 메시지를 보여주는 간단한 기능을 주로 사용했었습니다. 기술적으로 그 이상을 구현할 수도 있었지만, 기획적으로 그 이상 의미 있는 일이 없었기 때문입니다. 시간이 지남에 따라 특정 요소를 마우스로 드래그 하여 위치를 바꾼다던가 복잡한 계산을 통한 HTML을 가공하는 기능이 사용자들에게 특별한 의미를 주게 되었고 그에따라 javascript는 복잡해졌으며 비동기식 통신을 이용한 Ajax로도 발전하였습니다.
Web2.0의 핵심 기술 중 하나인 Ajax는 웹페이지를 리로딩하지 않고 새로운 정보를 받아 화면에 표시하는 기술로 게시판의 페이지를 클릭했을 때 다음/이전 페이지를 리로딩 없이 볼 수 있는 등의 기능을 구현할 수 있습니다. Ajax는 전혀 새로운 기술이 아니었습니다. 이미 존재하던 httpRequest, XML Parser, innerHTML 등 javascript의 기술들을 잘 섞어서 만든 기능이기 때문입니다. 이미 존재하던 뻰치, 못, 망치를 이용해 뻰치로 못을 잡고 나무에 댄 후 망치를 90도 각도로 내리치면 손도 안 다치고 못이 잘 박힌다는 설명을 신기술이라 할 수는 없습니다. 기술의 발전이 아닌 사용법의 발전인 것이죠.
하지만 치즈라면이 훌륭한 이유가 새로운 재료를 사용한 것이 아니듯, 웹브라우저만으로 불가능했던 작업들이 가능해진 의미를 무시할 수 없습니다. 웹상에서 오피스 프로그램을 구동할 수 있을 정도로 많은 실험들이 Web2.0시대에 행해지고 있으며, 이는 우리가 Web3.0을 예상할 수 있는 좋은 근거가 됩니다.
다음 회에는 이렇게 발전되어온 Web2.0의 의미를 정리하고 post Web2.0인 Web3.0을 조망하도록 하겠습니다.