자바스크립트? ECMAScript?
✏️

자바스크립트? ECMAScript?

Description
자바스크립트는 뭐고 ECMAScript은 뭘까요?
Tags
Published
Published April 28, 2020

Javascript? ECMA Script? ECMA-262?

자바스크립트에 관심을 갖기 시작하면 수많은 용어들 때문에 혼란스럽습니다.
ECMA Script는 ECMA International (정보 통신의 표준을 제정하는 비영리 표준화 기구)가 ECMA-262 라는 이름으로 관리하는 스크립트 표준 스크립트 언어 입니다. 보통 ECMA Script를 줄여 ES라고 부릅니다.
Javascript는 ECMA Script의 표준을 바탕으로 구현된 스크립트 언어 입니다.
아주 엄밀히 말하면 ECMA Script와 javascript는

자바스크립트 버전별 특징

자바스크립트의 표준 제정 프로세스

자바스크립트는 버전별로 어떻게 변화하고 발전해 왔을까요?

  • ES1, ES2, ES3, ES4 (1997 ~ 1999)
  • ES5 (2009)
  • ES6 (ES2015)
  • ES7 (ES2016)
  • ES8 (ES2017)
  • ES9 (ES2018)
  • ES10 (ES2019)
  • ES2020

자바스크립트의 버전들을 가리키는 ES5, ES6, ES2016, ES2017 등은 무엇을 이야기할까요?

  • ES[숫자]의 숫자는 에디션 넘버, ES[년도]의 년도는 출판된 년도
ES[숫자] 와 같은 이름이 익숙하지만 ECMA International에서 매년 표준안을 업데이트 하기로 결정하면서 ES[연도]와 같은 이름이 붙습니다. 예를들면 ES6의 숫자는 에디션넘버, ES2015의 2015는 출판된 년도 입니다. 또한 ES5에서 ES6로 업데이트 되며 많은 변화가 있었기 때문에 ES6부터 이후버전을 통칭하여 ES6+라고 부르기도 합니다.
ECMA Script? ECMA-262 ?
ECMAScript는 Ecma International에서 만든 JavaScript 표준안입니다. Ecma International 은 JavaScript 외에도 여러 표준안을 다룹니다. 그 중 JavaScript는 TC39라는 위원회가 명세를 관리하고 다른 표준안들과 구분하기 위해 262라는 숫자를 표기했습니다. 즉, ECMA-262는 ECMAScript이고 JavaScript의 표준안을 의미 합니다. 또한 ECMAScript는 약자인 ES로 보통 줄여 부릅니다.

자바스크립트의 표준은 어떻게 제정될까요?

ECMA Script는 TC39 프로세스를 통해서 제정 됩니다. 이 과정은 0단계에서 4단계까지 총 5단계로 나누어져 있고 각 단계로 승급을 위한 명시적인 조건들이 존재합니다.
  • 0단계: 허수아비 (stage 0: strawman)
  • 별다른 제약 X, TC39의 컨트리뷰터로 등록한 누구라도 proposal 제출 가능
  • 1단계: 제안 (stage 1: proposal)
  • 1단계가 되려면 해당 제안을 책임질 TC39의 구성원 (챔피언)을 구해야함
  • 1단계 프로포절은 풀고자 하는 문제와 하이 레벨 API 및 잠재적 장애물을 제시
  • 2단계: 초고 (stage 2: draft)
  • 3단계: 후보 (stage 3: candidate)
  • 4단계: 완료됨 (stage 4: finished)

0단계: 허수아비 (stage 0: strawman)

TC39 프로세스에 프로포절을 내놓기 위해선 기본적으로 별다른 제약이 없다. 라이센스 관련 조항에 동의하고 TC39의 컨트리뷰터로 등록한 누구라도 프로포절을 내놓을 수 있다. 해당 프로포절 중 어떤 경로로든 TC39의 회의의 안건으로 상정되고 앞서 언급된 0단계 문서에 등재되면 0단계 제안이 된다.

1단계: 제안 (stage 1: proposal)

1단계에 들어오기 위해선 가장 먼저 챔피언(champion) 을 구해야 한다. 챔피언이란 해당 제안을 책임지고 다음 단계로 끌고 나아갈 TC39 구성원을 일컫는다. 또한, 1단계 프로포절은 풀고자 하는 문제와 하이 레벨 API 및 잠재적 장애물을 제시해야 한다. 구현상으로는 폴리필, 데모 등을 필요로 한다.
위에서 살펴보았듯 0단계는 기본적으로 TC39 회의에서 안건으로 논의되어야 한다는 것 이외에는 제약이 전무하다시피 하다. 어떤 프로포절이 1단계에 진입한다는 것은 본격적으로 위원회 수준에서 시간과 노력을 투자해 해당 프로포절에 관해 논의할 의사를 표명한 것으로 해석할 수 있다. 1단계 제안은 추후 단계를 거치며 많은 부분 변화할 수 있다.

2단계: 초고 (stage 2: draft)

2단계에 올라오기 위해선 ECMAScript 표준의 형식 언어(formal description)로 작성 된 형식적인 서술(formal description) 초안이 필요하다. 이 초안은 만약 프로포절이 실제로 표준에 편입 될 경우 사용할 명세의 초기 버전이다. 2단계까지는 앞으로 해야 할 일 등을 TODO 마크 등으로 표시해 놓는 등의 일부 불완전한 명세가 허용된다. 또한 실험적인(플래그에 의해 켜지고 꺼지는) 구현이 요구된다.
어떤 프로포절이 2단계에 올라왔다는 것은 위원회가 이 프로포절을 발전시켜 궁극적으로는 표준에 포함시키고자 하는 의지가 있다고 해석할 수 있다. 2단계 이후로는 상대적으로 적은 변경만이 허용된다.

3단계: 후보 (stage 3: candidate)

3단계 프로포절은 대부분 완성에 가깝고, 구현 주체나 사용자들로부터 피드백을 좀 더 받아보는 일만이 남은 상태다. 3단계에 들어오기 위해서는 2단계의 초안과는 다르게 빈칸 없이 문법, 동작, 그리고 API까지 모든 부분이 기술되어 있도록 마무리 된 명세가 필요하다.
3단계까지 올라온 프로포절은 이후 구현상 심각한 문제가 발견되지 않는 이상 변경이 허용되지 않는다. 이 시점에서는 실제로 ECMA-262 표준에 편입시키고자 하는 해당 표준의 명세가 거의 마무리 된 상태여야 한다.

4단계: 완료됨 (stage 4: finished)

마지막 4단계는 모든 단계를 거치고 마침내 제안이 수락되고 다음 표준에 포함되어 발표되기만을 기다리는 단계이다. 3단계의 프로포절이 ECMA-262의 단위 테스트 슈트인 Test262에 관련 테스트가 작성되고, 최소 2개 이상의 구현이 제공되는 등의 까다로운 추가 조건을 모두 만족하면 마침내 4단계로 올라올 수 있다.
4단계까지 올라온 프로포절은 별다른 이변이 없는 이상 다가오는 새 표준에 포함되어 발표된다. 2015년을 기점으로 매년 6월 새로운 ECMAScript 표준이 발표되는데, 당해 3월 전까지 4단계를 달성하고 3월 회의에서 최종 승인된 제안들이 새 표준에 포함된다.
각 과정에 대한 보다 자세한 설명은 공식 문서에 기재되어 있다. 또한, 언제든지 앞서 언급한 proposals 저장소에서 현재 진행중인 모든 ECMAScript 표준에 관한 프로포절과 그 상태를 확인할 수 있다.