ES6 In Depth: 시리즈를 시작하면서

ES6 In Depth에 잘오셨습니다! 매주 연재할 이번 시리즈를 통해 ECMAScript 6를 탐험하려 합니다. ECMAScript 6는 출시가 임박한 JavaScript 언어의 새로운 에디션입니다. ES6에는 JS를 더욱 강력하게 그리고 표현력 좋게 만들 새로운 언어적 특징들이 많이 포함되어 있습니다. 우리는 앞으로 몇 주에 걸쳐 이 특징들을 하나씩 살펴볼 것입니다. 하지만 시리즈를 시작하기 전에, ES6가 무엇이고 ES6에서 무엇을 기대할 수 있는지 잠깐 이야기해 보는 것도 좋을 것입니다.

ECMAScript의 범위는 어디까지인가요?

JavaScript 언어 표준은 ECMA(W3C 같은 표준화 단체입니다)가 만들고 있습니다. JavaScript 언어 표준의 이름이 ECMAScript 입니다. ECMAScript 표준은 다음과 같은 것들을 정의합니다.

HTML, CSS, 또는 DOM (Document Object Model) 같은 Web API들은 ECMAScript 표준의 대상이 아닙니다. 이들은 별도의 표준으로 정의됩니다. ECMAScript는 브라우저에 한정되지 않은 JS의 일반적인 측면을 다룹니다. JS는 예를 들면 node.js처럼 브라우저가 아닌 환경에서도 사용되는 언어입니다.

새로운 표준

지난주(2015년 4월 23일 기준)에, ECMAScript 스펙 6번째 에디션의 마지막 드래프트가 ECMA 일반 협의체에 제출되었습니다. 이것은 무엇을 의미할까요?

이것은 이번 여름 우리가 JavaScript 프로그래밍 언어의 새로운 표준을 갖게 되리라는 것을 의미합니다.

이것은 큰 뉴스입니다. JS 언어 표준은 자주 제정되지 않습니다. 지난번 표준인 ES5는 2009년에 제정됐습니다. ES 표준화 위원회는 그때부터 ES6 표준을 제정하기 위해 노력했습니다.

ES6는 언어의 메이져 업그레이드입니다. 그러나 당신이 만든 기존 JS 코드는 ES6 표준 아래서도 잘 동작할 것입니다. ES6는 기존 코드와 최대한 호환되도록 설계되었습니다. 사실 많은 브라우저들이 벌써 ES6 요소들을 일부 지원하고 있으며, 더 많이 지원하기 위해 노력하고 있습니다. 이것은 기존의 모든 JS 코드가 조금이나마 ES6 요소를 지원하는 브라우저들 위에서 이미 동작하고 있음을 의미합니다! 만약 당신이 지금까지 어떤 호환성 문제도 보지 못했다면, 아마 앞으로도 보지 못할 것입니다.

6까지 세어봅시다

ECMAScript 표준의 이전 에디션들은 1, 2, 3, 그리고 5 입니다.

에디션 4는 어떻게 됐나요? 사실 ECMAScript 에디션 4를 위해 아주 많은 작업들이 진행됐습니다. – 하지만 에디션 4에는 모호한 구석이 너무 많았기 때문에 폐기됐습니다. (예를 들어, 에디션 4에는 제너릭(generics)을 채용한 복잡한 정적 타입 시스템이 동적 타입 추론 시스템과 함께 존재했습니다.)

ES4는 논쟁 거리였습니다. 표준화 위원회가 최종적으로 ES4를 폐기하기로 결정했을 때, 위원회 멤버들은 상대적으로 논쟁이 적은 ES5를 먼저 공표하고 중요한 신규 요소들에 대한 연구를 계속하는 것에 동의했습니다. 이렇게 합의된 미래 스펙의 이름이 “하모니(Harmony)” 였습니다. ES5 스펙에는 다음의 2개 문장이 포함되어 있습니다.

ECMAScript는 유동적인 언어이며 이 언어의 진화는 끝나지 않았습니다. 이 표준은 앞으로 미래 에디션을 통해 중요한 기술적 개선을 계속할 것입니다.

이 문장을 일종의 약속이라 볼 수도 있을 것입니다.

약속 실현되다

2009년 제정된 ES5 규격은 Object.create(), Object.defineProperty(), getterssetters, strict 모드, 그리고 JSON 객체를 도입했습니다. 저는 이 모든 요소들을 이용했으며 ES5가 가져온 변화에 만족했습니다. 하지만 ES5가 도입한 요소들 때문에 저의 JS 코드 작성 방식이 극적으로 바뀌지는 않았습니다. 제게 가장 중요했던 혁신은 아마도 .map(), .filter() 같은 새로운 Array 메소드였던 것 같습니다.

그런데 ES6는 다릅니다. ES6는 수년에 걸친 협업의 산물입니다. ES6가 제시하는 새로운 언어적 개념과 라이브러리의 기능은 보석 같습니다. 지금까지 JS 언어에 있었던 업그레이드 중에서 가장 중요한 혁신입니다. ES6가 도입하는 새로운 요소는 화살표 함수와 간편한 문자열 치환 같은 가벼운 편의기능에서부터, 프록시(proxy)와 제너레이터(generator) 같은 머리 아픈 새로운 개념까지 다양합니다.

ES6는 당신의 JS 코드 작성 방식을 바꿀 것입니다.

이번 ES6 In Depth 시리즈의 목표는 JS 코드 작성 방식을 어떻게 바꿔야 하는지 보여주는 것입니다. 그러기 위해 ES6가 JavaScript 프로그래머들에게 제공할 새로운 요소들을 살펴볼 것입니다.

우리는 많은 사람들이 “필요로 했던 기능”부터 시작할 것입니다. 저는 JavaScript가 이 기능을 제공해주기를 10년 이상 기다렸습니다. 그러니 다음주에 ES6의 이터레이터(iterator)와 새로 도입된 for-of 루프 구문을 살펴 봅시다. 관심을 갖고 우리와 함께 해주시기 바랍니다.

이 글은 이 쓴 ES6 In Depth: An Introduction의 한국어 번역본입니다.

작성자: ingeeKim

"누구에게나 평등하고 자유로운 웹"에 공감하는 직장인.

ingeeKim가 작성한 문서들…


댓글이 없습니다.

댓글 쓰기