안녕하세요!
....
블로그 드래프트가 저장이 안되어있어 다 날아가 버렸습니다.... 하지만 오늘 내용은 길지 않기 때문에 다시 한번 해보도록 하겠습니다 흑..
정말 오랜만에 돌아왔습니다. 아마 1주일이 넘은 거 같은데, 그동안 면접 준비도 지속적으로 하고 이번 기회에 자바스크립트의 기본 개념에 대해서 더 심도 있게 공부해 보고자 책을 한 권 구입해서 읽고 있습니다. 정말 몰랐던 부분도 많고 양도 방대하기에 시간이 꽤 걸릴 것 같습니다. 조만간 책에 대한 내용도 포스팅 할 예정이니 많관부~
오늘 주제는 JS, ECMAScript, 그리고 VanillaJS 에 관하여 알아볼 건데요, 저도 많이 들어는 봤지만 정작 저게 뭔지 알아봐야겠다는 생각은 하지 않았었습니다. 지난 날의 저를 반성하며 이제부터는 모르는 내용은 꼭 바로 바로 짚고 넘어 가도록 하겠습니다. 그럼 본격적으로 시작해 보도록 하겠습니다.
JavaScript 의 탄생과 역사
자바스크립트는 넷스케이프 커뮤니케이션즈의 브렌던 에이크라는 사람에 의하여 개발 된 브라우저 전용 경량 프로그래밍 언어이며, 웹페이지의 보조적인 기능을 수행하기 위해 개발 되었습니다. 현재 모든 브라우저의 표준 프로그래밍 언어로 자리 잡았으며, 웹 개발을 하시는 분들은 당연히 알고 계시고, 한번쯤은 사용해 보셨으리라 생각합니다.
자바스크립트는 1996년 넷스케이프 네비게이터 2에 탑재 되었고, 모카 (Mocha) 에서 라이브스크립트 (LiveScript) 로, 그 후에 자바스크립트 (JavaScript) 로 명명 되었습니다.
1996년, 마이크로소프트 또한 자바스크립트의 파생격인 언어 JScript 를 인터넷 익스플로러 3.0에 탑재하였는데요, 문제는 JScript 는 JavaScript 와 부분적으로 호환이 되었기 때문에 크로스 브라우징 이슈 (Cross-browsing issues) 가 존재했습니다. 두 회사가 각 플랫폼의 경쟁성을 높이기 위해 자사 브라우저에서만 동작하는 기능들을 추가했기 때문입니다.
따라서, 넷스케이프는 비영리 표준화 기구인 ECMA 인터내셔널에 자바스크립트의 표준화를 요청하게 됩니다.
ECMAScript 의 탄생
다음 해인 1997년, ECMA-262 라 불리는 표준화 된 자바스크립트 초판 (ECMAScript 1) 사양이 완성되었고, 상표권 문제로 자바스크립트는 ECMAScript 로 명명 되었습니다. 그 후 지속적으로 ECMAScript 2, 3 ... 5, 가 출시 되었고, 2015년 ECMAScript 6 (ES6) 가 공개 되었습니다. ES6 에는 let/const 키워드, 화살표 함수, 클라스, 모듈 등과 같이 범용 프로그래밍 언어로서 갖춰야 할 기능들이 대거 추가 되었습니다. 현재도 지속적으로 버전 업이 되고 있으나, ES6 만큼의 큰 변화가 아닌, 비교적 작은 기능을 추가하는 수준으로 매년 공개가 되고 있습니다.
ECMAScript
위에서 보셨듯이 ECMAScript 는 자바스크립트의 표준 사양인 ECMA-262 를 의미하며, 프로그래밍 언어의 값, 타입, 객체와 프로퍼티, 함수, 표준 빌트인 객체 등 핵심 문법을 규정합니다. 각 브라우저 제조사는 ECMAScript 사양을 준수해서 브라우저에 내장되는 자바스크립트 엔진을 구현해야 합니다.
VanillaJS
저는 코딩을 하다가 막히는 부분이 있으면 구글링을 하곤 합니다. 아마 많은 개발자 분들이 Stack Overflow 커뮤니티를 이미 자주 이용하고 계실 거라 생각하는데요. 가끔씩 보면 내용에 VanillaJS 라는 용어가 보였습니다. 이게 도대체 뭐지? 하는 궁금증은 있었지만, 그렇다고 찾아보려는 노력은 따로 하지 않았었습니다. 그러다 최근에 갑자기 생각이 났고, 구글링을 해 본 결과..!
VanillaJS is a name to refer to using plain JavaScript without any additional libraries like jQuery back in the days. People use it as a joke to remind other developers that many things can be done nowadays without the need for additional JavaScript libraries.
정말 킹받게도, VanillaJS 는 플래인 자바스크립트를 의미한다고 합니다. 플래인은 평범한, 기본적인 정도로 해석하면 될 것 같은데요, 쉬운 예로 요즘 플래인 요거트 많이 드시는 분들이 계시죠? 저도 한번 먹어봤지만 제 타입은 아닌 걸로.. 저는 요플레가 달아서 맛있더라구요. 플래인 요거트는 신 맛만 나지만, 대신 무설탕, 혹은 아주 극소량? 정도만 들어가 있지 않을까 생각합니다 (저는 그쪽 전문가가 아니라 잘 모릅니다).
영어권 사람들도 이에 대해 많은 논쟁을 하고 있는 것 같습니다. 저처럼 의미를 몰랐던 사람들은 뭔가 새로운 것을 또 배워야 하나 하는 걱정도 있을 것이고, Vanilla 가 Plain 을 의미하는 것도 아닌데 번거롭게 왜 쓰냐 등의 불만을 토로하는 사람들도 더러 있는 것 같은데요, 한가지 흥미로운 사실은 구글에 JavaScript 라고 치면 많은 답변들이 보통 라이브러리나 프레임워크에 기반한 솔루션을 많이 제공하지만 VanillaJS 라는 문구를 붙여주면 JS native 솔루션들이 많이 나온다고 하니 이 점 참고하셔서 나중에 검색할 때 사용해 보시면 좋을 것 같습니다.
오랜만에 쓰는 포스트라 어떤 내용을 쓰면 좋을까 생각하다, 아까 언급했던 자바스크립트 책에 나왔던 내용에서 영감을 받아 작성하게 되었습니다. 자바스크립트와 ECMAScript 에 대한 내용은 "모던 자바스크립트 Deep Dive - 이웅모 저" 에서 참고하였으며, 거의 1000페이지에 가까운 방대한 내용을 담고 있습니다. 지금 책을 구매한 지 이틀이 되었는데, 아주 기본 개념부터 꽤 심도있는 내용까지 다루고 있으니 한번 읽어보시는 것을 추천 드립니다. 가격은 온라인 구매시 10% 할인 받아서 4만원 초반에 구매하였습니다. 의구심을 가질 분도 안 계실거고, 그럴 리도 없거니와, 광고 아닙니다 ㅎㅎ.. 그냥 내용을 참조하였기에 레퍼런스 개념이라고 생각해 주시면 좋을 것 같습니다.
블로그 활동을 많이 미뤄뒀으니 이제부터 다시 열심히 해보도록 하겠습니다. 그럼 안늉~
'Studying > JavaScript & Frameworks' 카테고리의 다른 글
[Node.js 떠먹여 주는 남자] Promises vs. async/await in Node.js (1) (0) | 2022.04.03 |
---|---|
[자바스크립트 떠먹여 주는 남자] Normal Function vs. Arrow Function (0) | 2022.04.02 |
[자바스크립트 떠먹여 주는 남자] Function 과 Method 의 차이점 (0) | 2022.03.24 |
[자바스크립트 떠먹여 주는 남자] this 키워드 (0) | 2022.03.23 |
[자바스크립트 떠먹여 주는 남자] Call, Apply, 그리고 Bind (2) (0) | 2022.03.23 |