내 맘대로 비교하기: <자바스크립트 완벽 가이드> 와 <프론트엔드 개발자를 위한 자바스크립트 프로그래밍>

예전에 Qt 로 <환율 계산기>(http://lvzuufx.blogspot.com/2015/08/qt_11.html) 를 만들면서 느낀 것이지만, 웹 관련 프로그래밍을 하려면 결국 자바스크립트를 해야만 한다. 떡본 김에 제사 지낸다고 했던가 ? 자바스크립트를 공부하기로 마음 먹고, 많은 분들이 추천하고 있는 책이 무엇인지 살펴보니, 대략 두 권 정도가 공통적으로 나왔다.

하나는 소위 코뿔소 책으로 유명한 <자바스크립트 완벽 가이드> 였고, 다른 하나는 <프론트엔드 개발자를 위한 자바스크립트 프로그래밍> 이었다.

1. <프론트엔드 개발자를 위한 자바스크립트 프로그래밍>

니콜라스 자카스 지음, 한선용 옮김, 인사이트 출판사

출처: http://www.yes24.com/

전체 분량이 1100 쪽을 넘어간다. 게다가 아주 꼼꼼하게 자바스크립트 설명으로 채워져 있다. 한꺼번에 다 읽을 생각보다는 쉬엄 쉬엄 읽어가야지 하는 마음으로 천천히 다 읽었다.

이 책의 특징이라면 자바스크립트를 엄격하게 사용할 것을 요구한다는 것이다. 예를 들어, 배열과 객체의 차이점을 강조하고 있다. 배열은 숫자를 인덱스로 받아들이고, 객체는 문자열을 인덱스로 받아들이니, 이 둘을 혼용하지 말라고 말한다.

아울러 HTML 요소의 id, name 속성을 자바스크립트에서 변수로 사용하지 말라고도 한다. 과거의 유산(legacy) 이기에 지금도 허용되고 있지만 언제라도 바뀔 수 있기 때문이다. 대신에 document.getElementById() 같은 메쏘드를 꼭 이용하라고 한다. 엄격 모드(strict mode) 와 비엄격 모드(non-strict mode) 의 차이점에 대해서도 꾸준히 언급하는데, 같은 이유인 듯하다.

이 책을 읽으면서 꽤 인상깊었던 부분이 있었는데, 객체의 생성과 상속에 관한 부분이었다. 그 당시 알려진 여러 방법을 소개하고 장단점을 살피는데, 그 연구의 깊이가 느껴진다고 할까 ? 자바스크립트의 객체에 대해 다시 생각하는 계기가 되었다.

아울러 클라이언트 탐지 방법을 상세히 서술하고, DOM 의 발전에 따른 변화를 자세히 소개하고 있으며, XML 사용에 대해 세세히 설명하고 있다.

하지만, 이 책은 전체적으로 편집이 다소 난해한 편이다. 특히 메쏘드들을 설명할 때, 작은 절로 분리하지 않고, 문장의 일부로 메쏘드들이 등장하다보니 다소 가독성이 떨어졌다. 이런 점을 느끼면서 나름 반성하게 되었다. 블로그에 올린 여러 글들이 이런 식으로 쓰여진 듯 해서다. ㅠㅠ

그리고 HTML5 에서 새로 소개된 여러 기능들에 대한 설명이 다소 부족했다. canvas 라든지, 파일 시스템 APIs, 웹워커에 대한 설명은 있지만, 다른 부분만큼 상세하지는 않은 듯하다. 심지어 웹소켓에 대한 부분은 아예 들어있지 않다. 아쉬운 부분이다.


2. <자바스크립트 완벽 가이드>

데이비드 플래너건 지음, 구경택/박경욱/변치훈/이의호 옮김, 인사이트 출판사

출처: http://www.yes24.com/

소위 코뿔소 책으로 불린다. 전체 분량이1200 여쪽으로 위 책에 견주어 모자라지 않다. 이 역시 무리하지 않고 욕심을 버린채 천천히 읽어나갔다. 그나마 다행인 것은 자바스크립트에 대한 설명으로 꽉꽉 채운 위 책과는 다르게 300 여쪽 정도는 레퍼런스로 채워져 있어, 실질적으로는 800 여쪽 정도라는 것이다.

이 책은 전체적인 편집이 읽기 편하도록 이루어진 듯하다. 앞서 비판했던 메쏘드 설명 방식에 있어, 이 책은 가능한한 각 메쏘드들을 절로 구분해서 서술하였기에 가독성이 좋은 편이었다.

계속 대조할 수 밖에 없는데, 이 책은 자바스크립트의 융통성을 인정하고 받아들인다. 예를 들어, 배열과 객체의 유사성을 강조하면서 둘의 혼용을 애써 금지하지 않는다. 더 나아가 객체를 배열처럼 쓰는 유사배열을 설명한다. 사실 실제로 자바스크립트에 여러 유사배열이 있는 것은 사실이다.

아울러 HTML 요소의 id 나 name 속성을 변수로 사용하는 것을 과거의 이런 저런 사정이라며 인정한다. 책 전체에 걸쳐 엄격 모드(strict mode) 와 일반 모드(non-strict mode) 에대해별로 언급하지도 않는다.

어느 책의 접근법을 따를 것인지는 프로그래머들의 몫이다.

이 책은 비교적 쉽게 읽힌다. 이미 위 책 <자바스크립트 프로그래밍> 을 읽은 상태라 그런 것일 수도 있지만, 읽어나가는데 무리가 없었다. 물론 이벤트 부분에서는 쏟아져 나오는 이벤트 종류와 그 메쏘드, 프로퍼티들 때문에 어지럽긴 했지만 말이다.

이 책은 이 책의 설명 범위를 스스로 정하고 그 이상의 것은 설명하지 않지만, 범위 내의 것이라면 충실히 설명해 내고 있다. 특히 정규 표현식이라든지, 간단한 서버측 자바스크립트라든지 등.

게다가 jQuery 라이브러리를 별도로 다루고 있다. 뿐만 아니라 HTML5 의 새로운 요소인 canvas 나 웹워커, 파일시스템 API 등 충실히 소개하고, IndexedDB, 웹소켓 등의 사용법도 설명하고 있다.

이 책의 또다른 활용점은 레퍼런스이다. 앞서 말했듯이 300 여쪽의 레퍼런스를 포함하고 있는데, 여러 객체들의 프로퍼티와 메쏘드의 사용법을 설명하고 있으니, 언제라도 옆에 두면서 찾아볼 수 있다.

3. 결론

그동안 윕에 게시된 강좌 위주로 자바스크립트를 익힌 탓에 자바스크립트에 대해 단편적으로만 이해하고 있었다. 하지만, 이번에 두 책을 읽으면서 자바스크립트에 대한 체계적신 지식을 얻을 수 있었다.

두 책 모두 나름의 장점과 단점을 가지고 있다. 가능하다면 두 책 모두 보는 것이 좋겠지만, 둘 중의 하나를 고르라면 <자바스크립트 완벽 가이드> 를 추천한다.

일단 레퍼런스로서의 가치가 있고, HTML5 와 연계된 자바스크립트의 최신 기능을 보다 충실히 소개하고 있다고 생각되기 때문이다. 아울러 XML 을 알아두면 좋겠지만, 많은 부분이 JSON 으로 대체되고 있는 터라, 더욱 <자바스크립트 완벽 가이드> 의 손을 들어주고 싶다.

댓글

이 블로그의 인기 게시물

토렌트: < 왕좌의 게임 > 시즌 1 ~ 시즌 8 완결편 마그넷

토렌트: NGC < 코스모스 > 우리말 더빙 전편(1편~13편) 마그넷

토렌트: < 스타워즈 > Ep.1 ~ Ep.6 마그넷