본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/javascript

[JavaScript] ECMA, ECMAscript 개념 정리하기

by 미노드 2023. 8. 3.

기본적으로 javascript는 알고있으나

java를 공부하면서 ECMA라는 개념을 활용해 로직을 짜는걸 보게되었는데, 개발하면서 ECMA라는 걸 들어본적이 없다보니, 별도로 공부가 필요하게되어 정리해봅니다.

javascript와 ECMAscript라는 게 별개로 구분되는데, 이게 뭔 소린지 구분해보겠습니다.

1. Ecma 인터내셔널(Ecma International) 알기

https://www.ecma-international.org/

Ecma 인터내셔널은 정보 통신에 대한 표준을 제정하는 비영리 표준화 기구입니다.(사이트는 안들어가집니다.)

먼저 Javascript는 1990년대 Netscape 회사의 Brendan Eich 라는 사람에 의해 최초 개발되었습니다. 자바스크립트가 잘 되자, MS에서 Jscript라는 언어를 개발해 IE에 탑재하였는데, 이 두 스크립트가 너무 제각각이라, 표준이 필요하게 되었습니다.

표준을 위해 자바스크립트를 ECMA(European Computer Manufactures Association)라는 정보와 통신시스템의 비영리 표준 기구에 제출하였고 표준에 대한 작업을 ECMA-262란 이름으로 1996년 11월에 시작해 1997년 6월에 초판 되었습니다..

ECMA-262는 Ecma 인터내셔널에 의해 제정된 하나의 기술 규격의 이름으로, 범용 목적의 스크립트 언어에 대한 명세를 담고 있습니다.

ECMA-262는 스크립트 언어에 대한 표준을 정의한 규칙이라고 생각할 수 있습니다.
표준을 통해 어느곳에서나 표준 규격대로 개발을 진행할 수 있는 장점이 있습니다.

※ 스크립트 언어(Script Language, CS지식)

스크립트 언어(scripting language)란 응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어를 가리킵니다.
스크립트 프로그래밍 언어라고도 합니다.

스크립트 언어는 독립된 시스템에서 작동하도록 특별히 설계된 프로그래밍 언어입니다.

스크립트 언어에 포함되는 프로그래밍 언어들은 독립된 시스템을 위해 존재합니다.
예를 들어, 이동하기, 달리기, 점프하기 라는 명령어를 여러분들이 사용할 수 있다고 생각해봅시다.
그렇다면 사람이나 개, 아니면 게임 캐릭터처럼 명령을 입력받고, 실행하는 개체(Object), 대상(Target)이 필요합니다.
만약 이동하고, 달리고, 점프 를 할 수 있는 것들이 없다면 명령어를 실행할 수 없습니다.

여기서 찾을 수 있는 스크립트 언어의 특징으로는 응용 프로그램과는 독립적이고, 사용자가 직접 프로그램을 의도에 따라 동작시킬 수 있다는 것입니다.
스크립트 언어를 이용한 명령어의 실행이, 시스템 내부에서 어떤 원리로 동작하는지는 관계없습니다.
단순히 사용자가 그 프로그램이 의도대로 동작시킬 수 있게 해주는게 스크립트 언어 입니다.

2. ECMAScript (ES) 가 무엇인가?

ECMAScript(ES)는 Ecma 인터내셔널에 의해 제정된 ECMA-262 기술 규격에 의해 정의된 범용 스크립트 언어입니다.
동의어로는 ‘ECMAScript 사양’(ECMAScript specification)가 있습니다.

ECMA-262는 표준의 이름 이지만, ECMAScript는 ECMA-262에서 정의된 하나의 사양을 의미합니다.
ECMAScript는 스크립트 언어가 준수해야 하는 규칙, 세부 사항 및 지침을 제공합니다.

좀 더 쉬운 예시를 들어보면. 우리가 일상생활에서 쓰는 언어의 기준이 되는 국어를 표준어 라고 부르고, 국립국어원 에서 관리하고 있습니다.
그리고 표준어는 국립국어원에서 제정한 여러가지 규칙들(대표적으로 발음이나 맞춤법)을 일정한 원리를 따르고 있습니다.

ECMAScript에서도 마찬가지입니다. 국립국어원은 Ecma 인터내셔널, ECMA-262는 표준어고, ECMAScript는 맞춤법과 같은 규칙으로 생각한다면 보다 쉽게 이해할 수 있습니다.

ES란 ECMA Script의 약자입니다. ES5는 ECMA Script5의 규격을 따른다고 생각하면 됩니다.
ES6, ES2022 등 새로윤 규격이 계속해서 나오고 있습니다. 국립국어원에서 표준어를 계속 정정하는것과 비슷합니다.
지금 알아야 할 언어들도 많아서 힘든데, 왜 자꾸 새로운게 나와 일을 점점 힘들게 하게 되는지.

https://ko.wikipedia.org/wiki/ECMA%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8

 

ECMA스크립트 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. ECMA스크립트(ECMAScript, 또는 ES[1])란, Ecma International이 ECMA-262 기술 규격에 따라 정의하고 있는 표준화된 스크립트 프로그래밍 언어를 말한다. 자바스크립트를 표

ko.wikipedia.org

3. javascript 와 ECMAScript 차이점 이해하기

javascript는 ECMAScript 사양을 준수하는 범용 스크립팅 언어입니다.
ES6, ES7, ES2022같은 새로운 사양이 나오고 Javascript는 이걸 준수할 수 있도록 만드는게 중요합니다.

즉, (Javascript != ECMAScript 라고 볼수 있습니다.)
표준이라는 개념자체가 다른 것들과 호환을 위해 따라야 하는 규칙, 규약 같은 것입니다.
규칙이 변하다보니 Javascript에서 이를 매번 따를 수 밖에 없는 것입니다.

다만 Javascript로 잘 개발해서 잘 쓰고있는데 ECMA Script 버전이 올라가는 걸 굳이 공부해서 변경할 필요가 있는가... 이는 논점이 될 수 있습니다.
지금 Javascript를 가지고 작업하고 만들고 잘 되는데, 바뀌고 개선되는 필요한 부분만 알면 되지, 왜 굳이 ES 버전을 올려서 표준에 따르도록 강제하고, 이를 따라야 되는부분일까요?

새로운 버전의 ECMAScript를 발표한다고해서 모든 JavaScript 엔진이 갑자기 이러한 새로운 기능을 갖게되는 것도 아닙니다.
JavaScript 엔진이 최신 ECMAScript의 사양을 준수하던지 아닌지는 JavaScript 엔진을 담당하는 회사나 조직(Google, Mozilla, Microsoft 등)의 업데이트에 따라 달려있습니다.

※ JavaScipt엔진 (웹 브라우저, 인터넷 익스플로러 / 사파리 / 모질라 / 파이어폭스 / 크롬 등)

그러다보니 꼭 ES 버전을 따를 필요는 없으며 Javascript 엔진간 호환(브라우저 간 호환)을 생각하여 알맞은 규격대로의 개발이 필요하다보니 ES버전에 절대적인 영향력은 없다고 생각합니다.

4. ECMAScript 왜 알아야 되는걸까?

웹개발을 4년이상 진행해왔으나 새로운 걸 알고싶지 않으며 귀찮기만 한 부분입니다.

ECMAScript를 공부하기에 앞서 알 필요가 있는걸까요?
Java개발자라 그런지 귀찮기만 한 부분 같기도 합니다.
추가적으로 개발하는데 있어 새로운 형식을 꼭 알아야 될까? 라는 의문도 있습니다.

이런부분과 관계없이 최신 형식이라고 일딴 쓰고보는 개발자들 때문이라도 불가피하게 알게되고 쓰게되는 일이 일어나면
짜증만 납니다.
이걸 노리고 버전업을 하는게 큰 이유라 생각합니다.
새로운 형식을 모르면 일을 하지 못하는 경우도 만들고, 누구나 쉽게 해석하지 못하게 하는게 목적이라고 보기 때문입니다.
효율관련 부분도 있겠으나, 효율적이다 라기보단 복잡해진다 라는 내용이 많아진것도 이 이유 때문입니다.
개발자들 사이에선 나만알고 너는 모르는걸 쓰면 왠지 자기가 더 잘하는거 같은 느낌도 들 수 있기 때문일지도 모르겠네요.그나마 평가가 좋은지 많은 분들이 이용하는 규약인 ES6 (ECMAScript 6)는 알아두는게 개발하는게 도움이 될거라 생각합니다.
같이 일하려면 알아야죠..ㅠㅠ

ECMAScript 6는 ECMA-262 표준의 제 6판이며, ECMAScript 사양의 주요 변경 사항 및 개선 사항을 명세합니다. 동의어로는 ‘ES6’, ‘ES2015’, ‘ECMAScript 2015’가 있습니다.

5. ECMAScript 는 어떻게 생긴걸까?

위에서 이론적인 내용들을 많이 설명했으나, ECMAScript가 실제로 어떻게 생겼는지 아는것도 중요합니다.
규약의 정리 이긴 하나,, 이론만으론 저는 상상이 안되더라구요.
사이트에 들어가서 확인하려 했으나, 사이트 접속이 안되는데, 그냥 하지말까...

다른 사이트에서 ES6 에 대한 pdf파일을 올려둔게 있어 링크를 공유합니다.

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

아주 상당한 분량이 있는데, 간단히 설명하자면
var대신 const 대신 를 쓰게 한다거나
메소드를 선언할 때 { } 로 묶어서 하는 대신 화살표 함수 => 를 쓰거나
promise 라는 기본함수가 추가되었거나
하는 내용이 ES에 들어있다고 보면 됩니다.

Javascript와는 확실히 성격이 다른 부분이며,
Javascript에서 해당 내용을 반영해서 구현하는게 가능합니다.

ES6 중 알아둬야 할 부분에 대해선 다른 포스팅에서 작성하도록 하고
이번 글에선 ES가 무엇인가? ECMAScript가 무엇인가? JavaScript가 무엇인가? 구분을 하는게 목적인 포스팅이었습니다.