메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

JavaScript Clinic - 자바스크립트 이럴 땐 이렇게! #1

한빛미디어

|

2001-06-13

|

by HANBIT

6,130

by 권원상 연재를 시작하며 앞으로 "자바스크립트 클리닉"이라는 이름으로 만나게 될 주치의(^^) 권원상입니다. 이 글을 통하여 혹시 자바스크립트로 고생하고 있는 여러분들과 함께 차근 차근 하나씩 문제를 해결해 나갈 수 있기를 바랍니다. 다만 의사가 사람의 모든 병을 고칠 수는 없듯이, 저도 여러분이 겪는 모든 문제를 신속하게 해결해 나갈 수는 없다는 점을 꼭 기억해 두시기 바랍니다. 연재 첫회에서는 자바스크립트와 관련된 일반적인 이야기를 하겠지만, 이후 내용은 여러분이 겪고 있는 어려움을 함께 해결해 나가보도록 하겠습니다. 문제가 발생하면 언제든지 저한테 메일(zbwskwon@empal.com)을 보내 주십시오. 보내주신 메일에 대해서는 가급적 열심히 답을 하도록 하겠습니다만, 혹시 제 개인적인 사정에 의해 답장이 늦어 진다거나 심지어는 답장을 못하는 경우도 있을 수 있으므로 급하게 처리해야 할 문제는 보내지 않으셨으면 좋겠습니다^^. 그럼 첫 글을 시작합니다. 참, 타이핑 시간 절약을 위해서 경어체 사용은 여기까지로 하겠습니다. 양해 바랍니다. 스크립트는 애매하다? 그 동안 내가 다루어본 스크립트의 종류는 여러 개가 있다. 한 십년 전쯤 산 매킨토시에는 하이퍼카드라는 멋진 프로그램이 있었고, 여기에 하이퍼토크라는 스크립팅 언어가 있었던 것 같다. 이제는 기억도 가물가물 하지만, 하이퍼토크 스크립트는 그 전에 파스칼이나 C와 같은 언어만 보아 오던 나에게 나름대로 새로운 재미를 주었다. 그 이후 CD롬 개발을 하면서 매크로미디어 디렉터에 포함된 링고 스크립트를 만나게 되었다. 링고 역시 강력한 기능과 유연함, 편리함에 상당한 감명을 받았던 것 같다. 그 이후 셸 스크립트와 자바스크립트, 비주얼베이직 스크립트 등을 사용하게 되었고, 자바스크립트나 비주얼베이직 스크립트와 같은 복잡한 기능을 제공하는 스크립트를 보면서 가끔씩 놀라곤 한다. 참, 플래시에는 액션스크립트가 포함되어 있다. 사실 스크립트를 표방(?)하고 등장하는 (일종의) 프로그래밍 언어들은 애매한 위치에 있게 되는 경우가 많다. 대개의 경우 스크립트의 목적은 전문 프로그래머가 아닌 사용자들이 자신이 원하는 대로 쉽게 배워 쉽게 쓰기위해서라고들 이야기 한다. 그래서 C나 자바와 같은 언어로 프로그래밍을 하는 전문(?) 프로그래머들에게는 항상 스크립트의 가치가 폄하되기 마련이다. 여기에 덧붙여 디자이너 등 스크립트 언어의 타깃 사용자에게는 스크립트가 골치 아픈 것으로 인식되는 경우가 많다는 것도 문제점이다. 그래서 스크립트는 한쪽에서는 너무 쉬운 게 아니냐는 이유로, 다른 한쪽에서는 골치 아픈 존재로 그 위치가 애매한 경우가 많아지는 것이다. 하지만 스크립트는 그렇게 쉽지도, 그렇게 어렵지도 않다. 알면 알수록 어렵고 복잡해 지기도 하지만, 그럭저럭 배워서 자신이 필요한 곳에 쓸 수도 있는 그런 존재이다. 자바스크립트만 해도 그렇다. 자바스크립트 핵심 가이드라는 책은 웬만한 프로그래머가 이해하기 어려울 정도로 자바스크립트를 깊이 있게 다룬 책이다. 상당수의 프로그래머에게 자바스크립트가 어떤 프로그래밍 언어 못지 않게 복잡하고 다루기 어려운 언어라는 생각이 들게 할 것이다. 반면에 자바스크립트로 다이나믹 웹 페이지 디자인하기라는 책은 또 어떤가? 이 책을 웹 디자이너들이 읽어 본다면, "자바스크립트도 한번 해볼만 하네!"라는 생각이 들 만큼 충분히 쉽게(그러나 단순화시켜서) 자바스크립트를 설명하는 책이다. 문제는 여기 있다. 아무도 자기가 다루어야 한다는 생각을 하지 않는 경우가 많으므로, 아무도 스크립트 언어에 대해 제대로 알고 있지 못하다는 점이다. 제대로 알지 못하기 때문에 복잡하고 골치 아픈 경우가 많을 수 밖에 없다. 자바스크립트는 더 애매하다? 우리가 앞으로 다룰 자바스크립트의 경우에는 더 애매한 문제를 가지고 있다. 바로 자바스크립트 인터프리터 문제이다(자바스크립트가 인터프리터로 처리되기 때문에 인터프리터 방식의 프로그래밍 언어가 아니냐? 라고 생각할 수도 있겠지만, "스크립트"라는 이름이 붙어 있으므로 그냥 스크립트라고 부르기로 하자^^). 사실 C 같은 언어도 컴파일러마다 약간씩 미묘한 차이점이 있고, 이런 차이점 때문에 고생하는 경우도 많다. 하지만 일정한 스펙이 있고 이 스펙의 범위 내에서는 대부분의 컴파일러가 비슷하게 실행되는 코드를 만들어 낸다. 그러나 자바스크립트는 전혀 그렇지 않은 경우가 많다. 넷스케이프 네비게이터와 인터넷 익스플로러의 주도권 싸움 통에 코드는 비슷해 보여도 서로 동작하지 않는 경우마저 생길 정도이다(심지어 마이크로소프트에서는 JScipt라는 이름을 쓴다). 물론 언어의 기본적인 내용이야 대동소이하지만(이런 부분을 코어 자바스크립트라고 한다), 자바스크립트는 브라우저 내에서 동작하는 경우가 많기 때문에(이런 부분을 클라이언트 스크립트라고 한다), 브라우저 간의 호환성 문제가 고스란히 자바스크립트 호환성 문제가 된다. 이런 문제를 해결해 보고자 등장한 것이 DOM(Document Object Model)과 ECMAScript라는 이름의 표준인데, 많은 문제를 해결하기도 했지만, 아직까지도 클라이언트측 자바스크립트에서의 호환성이 문제가 되는 경우가 많다. 그래서 IE와 NS에서 모두 동작하는 자바스크립트를 만들기 위해 많은 노력을 해왔다(앞으로 천천히 소개하도록 하겠다). 또한, 자바스크립트로 스크립트를 만들기 위해 사용할 수 있는 개발 환경이 변변치 못하다는 점도 자바스크립트를 애매하게 하는 요인 중 하나이다. 자바스크립트를 위한 개발툴은 거의 없다. 예전에 넷스케이프에서 만들었던 자바스크립트 프로그래밍 툴이 있었고, 마이크로소프트의 스크립팅 디버거 외에 다른 도구는 찾아 보기 힘들다. 대부분의 "자바스크립트 지원" 기능이 있는 개발 도구는 문법 하일라이팅(Syntax Highlighting) 정도를 지원하는 경우가 많다. 자바스크립트를 작성해 본 사람이 공통적으로 겪는 어려움 중 하나가 "도대체 속에서 어떻게 처리되는가를 모르겠다"는 점인데, 이는 변변치 못한 개발도구도 한 몫을 하는 것 같다(물론, 뒤집에 말해서 자바스크립트만을 전문적으로 만드는 사람들이 없기 때문에 개발 도구가 없다는 논리도 성립한다^^). 그렇다면 자바스크립트가 무슨 도움이 될 것인가? 이런 여러가지 어려움이 있어도, 자바스크립트는 의미가 있는 스크립트 언어이다. 자바스크립트에 관심을 기울여 두는 것이 좋은 이유는 다음과 같이 2가지로 생각해 볼 수 있다. 첫째는 현재와 같은 웹 환경에서 서버측 부하를 줄일 수 있다는 장점이다. 폼 유효성 확인(Form Validation)이나 간단한 애니메이션, 동적인 HTML 구성 등은 자바스크립트의 필요성을 충분히 확인할 수 있는 부분이다. 아니 필요성 수준이 아니라 현재로서는 자바스크립트(또는 VBScript)가 유일한 클라이언트측 스크립트이기도 하다. 둘째는 앞으로도 지속적으로 다양한 곳에 쓰일 수 있다는 가능성이다. 이미 윈도우에서 자바스크립트는 VBScript와 함께 윈도우 환경을 위한 스크립트로 사용되고 있으며, MS에서 자바스크립트를 다른 애플리케이션에 포함시켜 사용할 수 있도록 컴포넌트 형태로 제공한다. 또한 앞으로는 자바스크립트가 웹 브라우저가 아닌 여러 형태의 플랫폼에서 사용될 가능성이 있으며, 클라이언트 쪽에서 XML을 제어하는데도 유용하게 사용될 것이다. 즉, 현재 웹 브라우저의 클라이언트 스크립트로 중요한 역할을 차지하고 있고, 다른 애플리케이션으로 사용이 확장될 가능성도 충분히 있는 언어라는 의미에서 자바스크립트를 주시해 볼 필요가 있겠다. 첫회를 마치며 어쩌다 보니 첫회는 장광설을 늘어 놓고 끝마치게 되었다. 그럴 생각은 아니었지만, 지금까지 자바스크립트를 만들어 오면서 간간히 느끼던 문제점을 정리하다 보니 이야기가 길어지게 되었다. 아무쪼록 이 글이 자바스크립트에 관심을 가진 여러 사람이 문제를 함께 공유하고 풀어 볼 수 있는 계기가 되었으면 한다. 함께 공유할 만한 문제는 언제든지 메일로 보내 주기 바란다. 그럼, 다음회까지 안녕히들...
TAG :
댓글 입력
자료실