엊그제 Brendan Eich 가 자바스크립트 히스토리에 대해서 이야기를 해서 정리차 자료를 찾아 정리했봤습니다.

고급 스킬로 가기전에 자바스크립트의 역사에 대해서 알아 두시는 것도 좋지 않을까 해서 정리해 보았습니다. :)
원문 : http://www.slideshare.net/badatmath/js-shistory
신고

'JavaScript > Core' 카테고리의 다른 글

JavaScript. 실행 컨텍스트 이해(Execution Contexts)  (2) 2011.10.23
JavaScript. The Core  (3) 2011.10.12
JavaScript History 정리 자료  (0) 2011.06.24
jQuery의 현재 그리고 미래  (0) 2008.10.07
Posted by Rhio.kim

자바스크립트 개발자들은 왜? 닌자라고 할까?

물론 외국 자바스크립트 개발자들의 문화에서 나온 이야기이다.


어떤 뜻을 가지고 생겨난 호칭이겠지만 나는 이렇게 정의해 본다. 





본디 닌자라 함은?



닌자는 일명 시노비노모노로 탐정, 첩자, 자객, 도둑 등으로 활동한다.

특히 이 닌자는 변장과 은신을 기본으로 암살, 교란, 추리 등의 달인으로 자신의 모습을 숨기기 위해 얼굴에 가면, 복면, 안면피구 등을 쓰거나 옷으로만 바꿀 수도 있다.  


http://ko.wikipedia.org/wiki/%EB%8B%8C%EC%9E%90


위키의 내용을 통해서 닌자의 특징을 간단히 알 수 있다.

바로 자신의 모습을 숨기기 위해 변장과 은신을 잘하는 자객이라 할 수 있다.


그런데 과연 자바스크립트와 무슨 연관이 있기에 이 자객을 가져다 붙였냐라는 의문을 갖는다.



자바스크립트를 곰곰히 생각해보면...!


이 글을 읽기 전에 '나는 자바스크립트 다' 라고 가정하고 읽으면 좀더 빠르게 이해할 수 있을지 모르겠다.


브라우저에서 동작하는 웹 스크립팅 언어이다. 

브라우저에서 다 냅두고 자바스크립트만 때어내보면 약간 정리가 된다.


자 우리가 흔히 자바스크립트 기술이라고 생각하는 것들을 나열해보면 다음과 같다.


1. DOM

2. DOM Event Model

3. XMLHttpRequest

4. Window

5. Web API(WebSocket, WebGL, WebDataBase ... )
... 


우리는 위의 기능을 자바스크립트 구문으로 자유롭게 다루고 프로그래밍을 통해 조작한다.


지만 자바스크립트 본연의 것은 아니다.  자신의 모습을 숨기기 위해 검은 옷과 복면을 쓴 닌자처럼...


바로 자바스크립트는 ECMAScript 라 하여 ECMA International 에서 명세화한 자바스크립트 표준이고 그것을 브라우저가 구현한 것이다.


여기에는 위에 언급한 5가지의 내용은 단 한가지도 정의되어 있지 않다. 이것들은 W3C 에서 모두 표준화하였고 브라우저 벤더들이 브라우저에 그 기능들을 구현해 놓은 것이다.


위의 기술을 좀더 상세히 살펴보며 DOM은 HTML로 작성된 문서를 브라우저내에서 판독하기 위한 '문서 객체 모델' 이다.

DOM Event Model 은 이 문서 객체 모델에서 각각의 요소(엘리먼트)들이 갖을 수 있는 "DOM 이벤트 모델" 이다.

다른것들도 살펴보면 유사하다. 흔히 Ajax 라고 알고 있는 XMLHttpRequest 객체는 브라우저에서 비동기 통신을 하기 위해 각 운영체제에서 제공하는 HTTP API 의 일부분을 랩핑하여 만들어 놓은 객체이다. 


또한 자주 사용하는 시스템 타이머에 의존적인 setTimeout, setInterval 그리고 브라우저의 정보와 

브라우징 컨텍스트 제어를 위한 self, opener, top 등 그리고 브라우저 URI 정보를 담고 있는 location 객체들은 바로 window 객체에서 구현되어 있다. 기타 등등...


위에서 언급한 기술들은 자바스크립트로 프로그래밍 되지만 엄밀히 말하면 자바스크립트의 기술은 아닌 것이다. 브라우저의 기술을 자바스크립트는 자기것인 마냥 플레이 하고 있을 뿐이다. 일종의 분장술로 말이다.




자바스크립트 닌자.


자바스크립트 닌자라고 할 수 있는 것은 이렇다.


자바스크립트는 브라우저의 다양한 기술(DOM, DOM Event Model, XMLHttpRequest 등)로 변장을 하고 브라우저 내에서 자객의 역할을 한다는 것이다. 실제로 그 자객의 역할은 자바스크립트를 다루는 개발자들인 것이다.


매칭을 해보면 다음과 같이 정리할 수 있다.


 자바스크립트 : ECMAScript

 분장, 은닉, 가면, 분신 : DOM, DOM Event Model, XMLHttpRequest, Window, Web APIs


또한 앞으로 웹 기술을 좀더 다양해질 것이고 그런 기술들은 브라우저에서 구현되어질 것이고 그것들을 제어하기 위한 프로그래밍 언어는 자바스크립트가 유일하다.


거기에 더하여 닌자는 공간의 제약이 없이 어디든 날아다닐 수 있다.  과거에는 브라우저 위에서 은닉과 분장술을 이용해 웹 공간을 날아다녔다면 이제 서버시스템과 긴밀하게 날아다닐 수 있게 되어지고 있다. 물론 모바일 디바이스에서도 마찬가지다.




그 의미를 좀더 새기면...


물론 자바스크립트를 다룬다고 하여 닌자라는 호칭을 모두 말할 수 있는 것은 아니다.


진정한 닌자라면 단순히 변장과 은신의 기술만 뛰어나거나 칼만 잘 휘두르는게 아닌 브라우저 기술에 전반적으로 잘 이해를 하고 잘 다루며 그 기술들을 자바스크립트로 잘 융화시키는 자바스크립트 개발자이다.




정리


개발자를 어떻게 칭하던 사실... 그건 중요한건 아니다.

단지 닌자의 의미와 자바스크립트 개발자의 특징에 공통점이 있고 일종의 개발자 문화일 뿐이다.


누구는 이런 정리 시시콜콜하게 들릴지 모르고 닌자라는 단어 자체의 거부감이 있을지 모르고 그 누군가는 재미있는 발상이구나 라고 할 수도 있겠다.


굳이 이런 의미를 시간내어 정리하는 것이 과연 무슨 의미와 필요가 있겠는가 하는 생각도 해보지만 



시노비 최고의 기술인 분신술



단지 나는 자바스크립트 개발자로써 앞으로의 소프트웨어 시장에서 닌자로 살고 싶을 뿐이다.


사실 이 글을 2011.05.23 일 오전 1시 40분 경에 완료했지만 언제 올릴지는 잘 모르겠다.

신고

'JavaScript' 카테고리의 다른 글

자바스크립트 닌자에 의미를 부여해 본다.  (2) 2011.05.29
Posted by Rhio.kim