Javascript 풀스택개발자 삽질로그 001. 자바스크립트 소개
너무나도 기초적인 부분이지만 기본에 충실해야하는지라 다시 한번 더 짚어보다.
자바스크립트란
자바스크립트(JavaScript)가 언어로서 지닌 특징을 소개하겠다. 이어서 자바스크립트로 무엇을 할 수 있을지, 다른 기술들이 자바스크립트를 어떻게 활용하고 있는지도 개요를 써보려한다.
정의
자바스크립트는 “웹페이지에 생동감을 불어넣기 위해” 만들어진 프로그래밍 언어. 그래서 HTML과 CSS와 뗄레야 뗄 수 없는 관계이기도 하다.
자바스크립트로 작성한 프로그램을 스크립트(script) 라고 한다. 스크립트는 웹페이지의 HTML 안에 작성할 수 있고, 웹페이지를 불러올 때 자동으로 실행된다. 스크립트는 특별한 준비나 컴파일 없이 보통의 문자 형태로 작성할 수 있고, 실행도 할 수 있다.
이런 관점에서 보면 자바스크립트는 자바(Java)와는 매우 다른 언어.
그런데 왜 자바스크립트가 되었을까?
원래 처음 만들어졌을때의 이름은 “LiveScript”. 그런데 당시 자바의 인기가 아주 높은 상황.
이를 개발했던 사람들은 자바스크립트를 자바의 “동생” 격인 언어로 홍보하면 도움이 될 것이라는 의사결정을 내리고 이름을 바꿨다.
결국 어른들의 사정그렇게 짝퉁 자바처럼 되어버렸지만 사실 자바스크립트는 굉장히 독자적 언어이며, 꾸준히 발전을 거듭하면서 ECMAScript라는 고유한 명세를 갖춘 독립적인 언어가 됨.
결론적으로 자바스크립트는 자바와 아무런 연관이 없다.
자바스크립트는 브라우저뿐만 아니라 서버에서도 실행할 수 있다. 그것이 바로 Node.js… 나의 또다른 삽질대상.
이 외에도 자바스크립트 엔진(JavaScript engine)이라 불리는 특별한 프로그램이 들어 있는 모든 디바이스에서도 동작한다.
특히 브라우저엔 “자바스크립트 가상 머신”이라 불리는 엔진이 내장되어 있다. 브라우저 필수!
더욱이 엔진의 종류는 다양한데, 엔진마다 특유의 코드네임이 있다.
- V8 – Chrome과 Opera에서 사용.
- SpiderMonkey – Firefox에서 사용.
- IE는 버전에 따라 “Trident”나 “Chakra”라 불리는 엔진을 사용.
- “ChakraCore”는 Microsoft Edge에 사용되며, “SquirrelFish”는 Safari에 사용.
위의 코드네임은 개발 관련 글에서 종종 언급되기 때문에 기억해 두는 것이 좋다.
예를들어 많은 튜토리얼들에서 “X라는 기능은 V8에서만 지원합니다.”라는 식으로 표현하는데 이런 문장을 만나면 Chrome과 Opera에서만 이 기능을 지원한다고 이해하면 된다.
자바스크립트만의 강점
자바스크립트엔 다양한 장점이 있지만 가장 중요한 세 가지 강점을 꼽으라면 다음과 같다.
- HTML/CSS와 완전히 통합할 수 있음
- 간단한 일은 간단하게 처리할 수 있게 해줌
- 모든 주요 브라우저에서 지원하고, 기본 언어로 사용됨 이 세 가지 모두를 지원하는 브라우저 연관 기술은 온리 자바스크립트뿐.
이런 특징 때문에 자바스크립트는 브라우저 인터페이스를 만들 때 가장 널리 사용되고 있다.
이 외에도 위에서 잠깐 언급했듯이 자바스크립트를 이용해 서버나 모바일 앱 등을 만드는 것도 가능하다. 이는 자바스크립트가 끊임없이 진화했기 때문!
자바스크립트 “너머의” 언어들
아무리 진화했다고 해서 자바스크립트 문법은 당연히 모든 사람의 요구를 충족시키지 못한다. 사람마다 각기 다른 기능을 원하기 때문.
이로 인해 근래엔 브라우저에서 실행 되기 전에 자바스크립트로 트랜스파일(transpile, 변환) 할 수 있는 새로운 언어들이 많이 등장하게 되었다.
그리고 이것이 자바스크립트를 접하는데 있어서 혼란을 야기하는 것이다.
최신 툴을 사용하면 트랜스파일을 빠르고 명확하게 수행할 수 있습니다. 최신도구는 자바스크립트 이외의 언어로 작성한 코드를 “보이지 않는 곳에서” 자바스크립트로 자동 변환해줍니다.
자바스크립트로 트랜스파일이 가능한 언어
CoffeeScript는 자바스크립트를 위한 “syntactic sugar”. 짧은 문법을 도입하여 명료하고 이해하기 쉬운 코드를 작성할 수 있다. Ruby 개발자들이 좋아함.
TypeScript는 개발을 단순화 하고 복잡한 시스템을 지원하려는 목적으로 “자료형의 명시화(strict data typing)”에 집중해 만든 언어. Microsoft가 개발.
Flow 역시 자료형을 강제하는데, TypeScript와는 다른 방식을 사용. Facebook이 개발.
Dart는 모바일 앱과 같이 브라우저가 아닌 환경에서 동작하는 고유의 엔진을 가진 독자적 언어. Google이 개발.
이 외에도 자바스크립트로 트랜스파일 할 수 있는 언어는 다양하다.
중요한건 개발 언어로 이런 언어 중 하나를 택한다고 하더라도 자신이 무엇을 하고 있는지 이해하려면 결국엔 자바스크립트를 알아야 한다는 것이다.
그래서 자바스크립트 공부가 필요하다.