메뉴 건너뛰기


Developer > Application

ECMAScript 1장. ECMAScript 개요

2014.04.27 02:56

푸우 조회 수:17688


오늘부터 ECMA스크립트에 대한 정리를 시작해 볼까 합니다.

ECMA스크립트라고 하니까 이게 뭐지라고 하시는 분들이 많으실 것 같습니다.

하지만 우리는 ECMA라는 용어는 어색할지 몰라도 ECMA스크립트를 이미 사용하고 있었습니다.

왜냐하면 JavaScript나 JScript 같은 스크립트 언어가  ECMA스크립트를 따르고 있는 언어이기 때문입니다. 


그럼 왜 JavaScript에 대해 정리한다고 이야기하면 될것을 굳이 ECMAScript라고 했냐라는 의문이 드실 수도 있겠습니다. 

JavaScript와 같은 경우는 ECMAScript를 기본적으로 따르고는 있지만 

HTML이나 CSS 그리고 웹브라우져를 제어하기 위한 부분이 더욱 커서 JavaScript를 정리한다고 하면 

워낙 방대하기도 하고 제가 원하는 정리도 아니고 해서 ECMAScript 정리라고 하였습니다.

그럼 이제 정리를 시작해 보도록 하겠습니다.



1. ECMAScript란?


ECMAScript가 뭔가에 대해서 알아보기 전에 ECMA가 뭔가에 대해서 먼저 알아보겠습니다.

ECMA는 European Computer Manufacturers Association의 약자로 시작해서 현재는 Ecma International 이라고 이름이 바뀐 정보와 통신 시스템을 위한 국제적이면서도 회원국 기반의 비영리 표준화 기구입니다. 좀 복잡하네요. 아무튼 IT쪽 표준화 기구라는 겁니다.

ECMAScript란 이 표준화 기구에서 표준으로 정의한 스크립트 언어로 표준정의 번호는 ECMA-262입니다.

ECMA에서 다루고 있는 중요한(유명한) 표준들을 보면 다음과 같은 것들이 있습니다.


  ECMA-119 - CD-ROM 볼륨, 파일 구조 (ISO 9660로 알려져 있음)
  ECMA-262 - ECMA스크립트 언어 규격 (흔히 자바스크립트로 불림)
  ECMA-334 - C# 언어 규격
  ECMA-335 - 공통 언어 기반 (CLI)
  ECMA-341 - 전자 제품을 위한 환경 디자인 고려
  ECMA-363 - 유니버설 3D 파일 포맷
  ECMA-367 - 에펠: 분석, 설계, 프로그래밍 언어 (에펠을 참고하라)
  ECMA-372 - C++/CLI 언어 규격
  ECMA-378 - HVD-ROM
  ECMA-388 - Ecma 오피스 오픈 XML

출처: http://ko.wikipedia.org/wiki/Ecma_%EC%9D%B8%ED%84%B0%EB%82%B4%EC%85%94%EB%84%90


의외로 유명한 것들이 많죠?


ECMA스크립트가 ECMA 인터네셔널에서 규정하고 관리하고 있는 표준이라는 것은 알았습니다.

그럼 ECMA스크립트와 JavaScript는 같은 걸까요?

사실은 ECMA스크립트와 JavaScript가 같다고 말할 수 없습니다. (좀 아리송 하죠?)


그럼 이제 ECMA스크립트와 JavaScript와의 관계에 대해 알아보도록 하겠습니다.


2. ECMA스크립트의 역사


1990년대 중반 인터넷이 월드와이드웹을 통해 확산되기 시작하면서 "넷스케이프 커뮤니케이션"이라는 회사에서 "넷스케이프 네비게이터"라는 웹브라우져를 만들어 판매했었습니다.

그 당시만 해도 대부분의 사람이 웹을 사용하기 위해서는 이 "넷스케이프"라는 웹브라우져를 이용했었습니다.

그러나 1990년대 후반에 마이크로소프트가 "인터넷 익스플로어"라는 웹브라우져를 윈도우즈에 끼워 팔면서 상용이였던 "넷스케이프"는 점점 사람들에게 잊혀져 갔고 급기야는 사라지게되었습니다.

그때의 "넷스케이프"는 "모질라"라는 이름으로 오픈소스화되어 리눅스의 기본 웹브라우져로 지금도 사용되고 있습니다.) 

이것에 대해서도 할말은 많은데 지금은 "넷스케이프"에 대한 이야기를 할려고 한건 아니니 이만하고 다시 ECMA스크립트 이야기를 하도록 하겠습니다.


JavaScript는 "넷스케이프 커뮤니케이션"사의 "브렌던 아이크(Brendan Eich)"가 만든 스크립트언어로 처음에는 모카(Mocha)라는 이름으로시작하여 라이브스크립트(LiveScript)를 통해 자바스크립트(JavaScript)로 이름이 변경되었습니다. 1996년 3월, "넷스케이프 커뮤니케이션"에서 "넷스케이프 네비게이터 2.0"을 출시하면서 자바스크립트를 웹브라우져에서 사용할 수 있게하였고 이 스크립트 언어의 표준화를 위해 "넷스케이프"사에서 ECMA 인터내셔널에 자바스크립트의 기술 규격을 제출하였습니다. 이로 인해 1996년 11월에 받은 표준화 정의 코드가 ECMA-262인 것입니다.

JavaScript는 웹 페이지의 동작을 향상시키기 위해 제작된 것으로 스크립트 문법이나 기본 골격에 더해서 웹페이지와 브라우져를 핸들링 할 수 있는 다양한 객체들을 제공합니다. 하지만 ECMA스크립트에는 스크립트 작성 및 해석을 윈한 문법과 기본 골격만을 정의하고 있습니다. 즉, ECMA스크립트에는 Window나 Document와 같은   객체를 정의하고 있지 않다는 것 입니다.  마이크로소프트사의 JScript나 모질라의 Spider Monkey, 구글 크롬의 V8엔진 등이 ECMA스크립트 표준에 맞춰 제작된 것들입니다. 


다음은 http://ko.wikipedia.org/wiki/ECMA%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8 에 정리된 ECMA-262 버전에 대한 내용입니다.


ECMA-262는 지금까지 세 개의 판이 출시되었고, 현재 5.1 버전(2011.6월)이 최신버전이다. (4판은 버려짐).

출판일이전 판과의 차이점
11997년 6월초판
21998년 6월ISO/IEC 16262 국제 표준과 완전히 동일한 규격을 적용하기 위한 변경.
31999년 12월강력한 정규 표현식, 향상된 문자열 처리, 새로운 제어문 , try/catch 예외 처리, 엄격한 오류 정의, 수치형 출력의 포매팅 등.
4버려짐4번째 판은 언어에 얽힌 정치적 차이로 인해 버려졌다. 이 판을 작업 가운데 일부는 5번째 판을 이루는 기본이 되고 다른 일부는 ECMA스크립트의 기본을 이루고 있다.
52009년 12월더 철저한 오류 검사를 제공하고 오류 경향이 있는 구조를 피하는 하부집합인 "strict mode"를 추가한다. 3번째 판의 규격에 있던 수많은 애매한 부분을 명확히 한다.
5.12011년6월ECMA스크립트 표준의 제 5.1판은 ISO/IEC 16262:2011 국제 표준 제3판과 함께 한다.
하모니(Harmony)작업 중여러 개의 새로운 개념과 언어 기능.

2004년 6월에 ECMA 인터내셔널은 E4X(XML을 위한 ECMA스크립트)로 알려진 ECMA스크립트의 확장을 정의하는 ECMA-357을 출판했다.


ECMA스크립트를 구현한 엔진들로는 다음과 같은 것들이 있습니다.



출처: http://en.wikipedia.org/wiki/JavaScript_engine

ApplicationDialect and latest versionECMAScript edition
Google Chrome, the V8 engineJavaScriptECMA-262, edition 5
Mozilla Firefox, the Gecko layout engine, SpiderMonkey, and RhinoJavaScript 1.8.5ECMA-262, edition 5
Safari, the Nitro engineJavaScriptECMA-262, edition 5.1
OperaECMAScript with some JavaScript 1.5
and JScript extensions[21]
ECMA-262, edition 5.1
KHTML layout engine, KDE's KonquerorJavaScript 1.5ECMA-262, edition 3
Adobe AcrobatJavaScript 1.5ECMA-262, edition 3
OpenLaszloJavaScript 1.4ECMA-262, edition 3
Max/MSPJavaScript 1.5ECMA-262, edition 3
ANT Galio 3JavaScript 1.5 with RMAI extensionsECMA-262, edition 3


여기까지 말씀 드렸으니 아직 실체는 모른다 하더라도 JavaScript와 ECMA스크립트를 구별할 수 있으리라 생각합니다.

뭐 실체를 알고 싶으신 분은 다음 URL이나 첨부된 Ecma-262.pdf 파일을 보시면 됩니다.

http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf


그럼 JavaScript를 알면 되지 굳이 ECMA스크립트를 정리할 필요가 있을까요?


3. ECMA스크립트를 정리하는 이유


이건 제 개인적인 생각이 제 개인적인 경험일지도 모릅니다.


저는 아주 오래전부터 HTML을 통해 문서를 작성했었습니다. 지금도 있는지는 모르겠습니다만 i-net이라는 ISP업체 서버에 제 자신의 홈페이지를 만들었던 시기가 1996년도 였으니깐요. 그래서 또 오래전부터 자연스럽게 JavaScript를 이용해 인터렉티브한 웹페이지를 만들었습니다. 하지만 JavaScript언어가 C언어와 많이 닮아 있었고 그 범주 안에서 개발이 어느 정도 가능해서 JavaScript에 대해 깊은 학습이 되질 않았습니다. 웹에 공개된 스크립트 언어다 보니 남들이 만든것을 가져다가 쓰는 것도 가능하고 남들의 코드를 다 이해 못하더라도 가져다가 이해되는 만큼 쪼금씩 고쳐서 사용하기도 하고 그랬습니다. 초기에는 그래도 대충 비비면서 개발을 진행할 수 있었습니다. 하지만 HTML표준이 계속해서 바뀌고 CSS라는 것이 등장하고 거기에 맞춰 DHTML이네 AJAX네 등등해서 JavaScript와 ECMA스크립트 표준이 계속바뀌어서 이제는 매우 복잡한 코드들이 나타나고 기능이 강력해 졌습니다. 이러다 보니 체계적인 교육이나 공부를 하지 않았던 저같은 사람은 이제는 JQuery나 Prototype과 같은 Framework을 제대로 이해하고 사용하기가 어려워 졌고(대충 구글링하면서 사용은 하고 있습니다.) node.js와 같은 JavaScript기반의 새로운 개발체계(?)를 능수능란하게 다루기 힘들어 졌습니다. 그래서 저에게 JavaScript는 아는거도 아니고 모르는 것도 아닌 아리송한 언어가 됐습니다.


여기까지는 저 개인적인 경험이지만 사실 많은 웹어플리케이션 개발자가 저와 같을지 않을까 감히 생각해 봅니다.

사실 어떻게 보면 JavaScript를 제대로 체계적으로 가르치는 학원도 없는 듯 하기도 하구요(뭐 그런 강좌가 있는데 제가 모르는지도 모릅니다.)

JavaScript, JQuery, node.js 등을 잘 사용하기 위한 기본기를 다진다는 마음으로 ECMA스크립트를 정리하려합니다.

if문,for문 같은 기본적인 것도 다루긴 하겠지만 그렇다고 그런 부분에 지면을 많이 할애할 생각은 없습니다.

ECMA스크립트가 일반적인 다른 언어들과 다른 부분이나 관과해서는 안되는 부분들을 집어볼것입니다.



관심이 좀 가시는지 모르겠네요. ^^

그럼 다음 글에서 부터 본격적으로 이야기 해보도록 하죠.