거침없이 배우는 커피스크립트
“그런데 운 좋게도 오늘날의 JavaScript는 새로운 르네상스 시대를 보내고 있다. 이는 그동안 브라우저를 구현한 개발자들의 끊임없는 노력 덕분이다. JavaScript는 동적인 언어를 대표한다. 서버단에서부터 심지어 Photoshop에 이르기 까지 다양한 분야에서 사용되며, 웹에서 이뤄지는 모든 서비스를 개발하는 데 사용될 수 있는 언어다.” / 머리말 중에서…
운이 좋은건지 없는건지 잘 모르겠지만, 자바는 건네뛰고 JSP부터 배웠던것 같다. JSP를 위한 자바 문법이라서 자바가 가진 내제적인 매력이나 설계는 아직도 취약하다. 그런데 JSP를 배웠으면 뭔가 할 수 있을꺼라고 생각했는데, 그건 큰 착각이었다.
C언어로 개발직을 시작한 입장에서 웹에 특화된 언어는 상상을 불허하는 난이도를 자랑했다. 말이 좋아 JSP지 JSP란 단어 속에는 HTML, CSS와 JavaScript가 같이 동봉되어 있다. 한 패키지처럼 움직이고, XML과 JSON같은 뭔가 야릇한 단어도 부록으로 넣어주었다.
그 중에서도 최종 보스는 ‘자바스크립트’가 되겠다. 자바란 단어가 붙어 있어서 그런지 몰라도 사람들이 자바 스크립트를 매우 ‘하찮게’보는 경향성이 있다. 하지만 자바스크립트를 배워보면 세상이 달라보인다. 약형언어가 가진 특징 때문에 분석 조차 힘겨웠던 기억이 새록새록 떠오른다.
1. 자바스크립트의 편리한 사용을 위해 등장한 더 어려운 프레임워크
어느 덧 시간이 흘러서 HTML5가 출현하고 그 많던 자바스크립트 관련 기술들은 모두 jQuery로 통일되나 싶었다. 그런데, JQ가 세상을 지배하기도 전에 Node.js를 비롯한 비동기 기술이 등장하면서 자바스크립트의 난이도가 계속해서 올라가고 있다.
2. 자바스크립트를 편하게 쓰고 싶다.
모든 집에 비치된 삼국지의 판본이나 번역에 따라서 앞의 부분이 조금 다르겠지만 대체적으로 삼국지의 시작은 이런 의미심장한 구절로 시작한다. “모이명 흩어지기 마련이고, 흩어지면 뭉치기 마련이다.” 뭐.. 이런 거대한 이야기로 시작한다.
자바스크립트의 기술적 난이도가 높아지면 내리기 위해서 다른 언어가 생겨나고, 적당히 낮아진 난이도는 또 다른 기술의 접목을 불러온다고 할 수 있다. Node.js를 비롯한 자바의 각 종 ‘프레임워크’ 덕분에 난이도가 급상승한 자바스크립트 계열에선 당연히 난이도를 내리기 위한 각 종 기법이 출현한다. 그 중에서 가장 대표적인 한 가지가 ‘커피스크립트’라 할 수 있다.
당연히 자바스크립트를 좀 더 편하게 사용하기 위해서 기존의 자바스크립트 문법을 고칠 순 없다. 따라서 문법을 간략화 시키고, 혼란스러운 부분을 통일시키는 다양한 기술들이 등장하는 것은 불을 보듯 뻔한 일이다.
커피스크립트는 자바스크립트를 좀 더 편하게 사용할 수 있도록 도와주는 대표적인 언어라 할 수 있다.
console.log do -> ‘hello world’를 컴파일해서 나온 ‘자바스크립트’
3. 그래서 책은 어떤가?
지앤선에서 출판한 ‘거침없이 배우는 커피스크립트’는 매우 좋은 책이다. 왜냐하면 책이 매우 얇기 때문이다. 얇은게 미덕은 아니다. C++의 창시자가 쓴 C++ 책은 사실상 흉기에 가깝고 TAOCP 4권은 4권이 아니라 4A권이다. 짐작하겠지만 A에서 Z까지 있다는 걸 상기해본다면 단순 흉기에서 끝나지 않을 것이다. 하지만 그 책에 담겨진 내용은 은하계 내에서 최고의 CS 서적으로 분류되고 있다.
하지만 자바스크립트를 좀 더 편하게 쓰고자 배우는 언어의 교재가 두꺼우면 자바스크립트를 배우는게 좋지 않겠는가? 편리하고, 쉽고, 알차게 개발을 도울 수 있는 언어라면 그 교재도 얇아야 한다. 그렇지 않으면 함정카드 발동! 되었다고 봐야한다.
그리고 이 책의 또 다른 장점은 연습문제에 있다. 연습문제를 조금씩 풀다면 뭔가 깨우치는게 있다. 책이 얇다. 하지만 연습문제까지 포함되어 있기 때문에 하루에 1시간 정도씩 1주일 정도면 충분히 읽을 수 있고, 연습문제까지 풀려면 시간이 좀 더 필요할 것이다.
마지막 챕터까지 진행하면 아래와 같이 근사한 게임도 만들 수 있다. 이제 조금 수정해 볼까?
P.S : 윈도우 사용자 분들은 Cygwin 설치할 필요가 없습니다. 그냥 node.js v0.10.xx 버전 설치하시면 문제없이 작동합니다. ^