기술면접_JavaScript_11_13
## 프론트엔드 개발자 입문(비동기처리) | Callback,Promise,Async,Await ### Contents 1...
*드림코딩 유투브 채널의 JavaScript 기초강의 내용을 바탕으로 정리하는 포스팅입니다.
1993년, UI요소가 요소가 더해진 첫 번째 웹 브라우저 Mosaic이 출시되었다. 개발팀을 이끌던 Marc Andreessen은 Netscape라는 회사를 설립하여 Mosaic을 만들었던 경험을 토대로 1994년, UI요소가 조금 더 추가된 Netscape Navigator 웹 브라우저를 출시한다. 이 당시에는 HTML과 CSS로 간단한 웹 페이지를 만들 수 있었는데, 스타일을 정의하는 CSS(Cascading Style Sheets) 외 HTML(Hypertext Markup Langauge)만을 사용한 만큼 텍스트에 링크를 걸어 페이지 간 이동만 가능하게 하는 매우 정적인 웹 페이지가 전부였다. 이에 Marc Andreessen은 동적인 웹사이트를 만들고자 새로운 프로그래밍 언어를 추가하기로 한다.
그리하여 1994년 9월, Scheme Script 언어를 변형한 JavaScript 언어와 함께 JavaScript engine이 추가된 Netscape가 출시된다. (이는 웹 개발자들이 JS를 사용해 웹 페이지를 만들게되면, Netscape Navigator 브라우저가 언어를 이해하고 실행하고자 하는 것에 알맞게 DOM요소들을 조작할 수 있게 되었음을 의미한다)
1995년 Microsoft는 Netscape를 통해 브라우저의 잠재성을 확인한 뒤, Netscape를 Reverse engineering하여 JavaScript를 약간 변형한 JScript와 함께 Internet Explorer를 출시한다.
두 개의 서로다른 언어와 엔진을 사용하는 브라우저가 상용화 되면서 당시에는 웹 사이트 이용 시 “우리 사이트는 Netscape(or Internet Explorer)에 최적화 되어있으니 Netscape(or Internet Explorer)를 설치하세요” 라는 문구를 흔히 볼 수 있었다. 이는 사용자의 불편으로 이어졌고 Netscape사는 문제를 해결하기 위해 ECMA International 단체에 찾아가 JavaScript표준안을 만들것을 제안하였고, 1997년 7월 ECMAScript 1이 출시되었다. 이후 ECMAScript4까지 다양한 버전이 출시되었으나 2000년, Internet Explorer의 점유율이 95%에 달하면서 Microsoft사는 더이상 ECMA표준을 따르지 않겠다는 의사를 밝혔고, 이 때를 기점으로 표준화 진행이 더뎌지게 되었다.
2004년 Mozilla사는 Firefox를 출시하며 ECMA International 단체에 찾아가 자신들의 프로그래밍 언어와 엔진인 ActionScript3와 Tarmarin으로 표준화를 다시 진행해 볼 것을 제안한다. 이로 인해 표준화를 두고 Mozilla, Microsoft, Netscape 3사가 신경전을 벌이게 된다.
3사가 신경전을 벌이는 동안에도 시장에는 많은 브라우저들이 출시되었고, 개발자 수요가 많아짐에 따라 다양한 브라우저에서 동작하는 웹 페이지를 만드는 것에 불만을 갖는 커뮤니티가 형성된다. 그리고 해당 커뮤니티들 사이에서 jQuery, dojo, mootools와 같이 서로 다른 브라우저와의 호환이 가능한 APIs를 제공하는 라이브러리들이 만들어진다.
2008년, Google에서 JIT(just-in-time compilation)엔진이 포함된 Chrome브라우저를 출시한다. JavaScript 실행속도가 월등히 빠른 JIT로 인해 Mozilla, Microsoft, Netscape 3사는 경각심을 느끼게 되고 2008년 7월, Google을 포함한 4사가 표준화에 대해 논의하게 된다.
그 결과 2009년, ECMAScript5가 출시되었으며 이후 2019년까지 ECMAScript 10까지 발전되었다.현재는 모든 브라우저가 ECMAScript의 표준을 따르고 있기 때문에 더이상 jQuery, dojo, mootools와 같은 라이브러리의 도움이 필수적이지 않다.
먼저 BABEL은 자바스크립트 컴파일러라고 표현할 수 있다. 컴파일러란 인간 수준의 고언어로 작성된 프로그램을 기계어로 출력하는 번역기를 말한다. 하지만 자바스크립트는 컴파일러가 아닌 인터프리터로 동작한다. 그렇다면 자바스크립트에 왜 컴파일러 BABEL이 필요할까? 그 이유는 BABEL이 고레벨 언어를 기계어로 번역하는 게 아닌 자바스크립트로 결과물을 만들어주는 컴파일러이기 때문이다.
사용자들은 다양한 브라우저를 사용하고 있고, 모든 사용자가 최신 브라우저 만을 사용하는 것은 아니다. 따라서 개발자들은 최신버전의 ECMAScript를 사용해 웹 페이지를 만들고, 사용자에게 배포할 때에는 이전 버전의 ECMAScript로 변환하여 제공해야 한다. 그리고 이를 도와주는 것이 BABEL이다.
참고자료 : 하니의 코딩정원
Avenco comes with a built-in contact form.