b

자바스크립트 자료구조와 알고리즘 - O'Reilly 한빛미디어 본문

life/book

자바스크립트 자료구조와 알고리즘 - O'Reilly 한빛미디어

dev.bistro 2014. 9. 28. 12:51

특히 자료구조나 알고리즘의 경우에는 업무의 실제적인 기본이 될 뿐만 아니라... 더 좋은 곳을 향한 '이직의 기본내공'이다 ^^; (내가 면접을 볼때도... 면접관으로 참여할떄도... 자료구조의 이해와 알고리즘은 좋은 얘깃거리이다)

새 언어를 배울때 자료구조 부분은 꼭 해보는게 좋다고 생각한다 (솔직히 직접 구현은 안하고 import /include만 하기때문에  주기적으로 까먹는다-.-)
Basic을 시작으로 Pascal, C, Java, Python, 마지막에는 Scala, Groovy로 이 주제를 학습해왔고, 이번에는 Javascript로 복습을 하자는 생각을 하게 되었다. 

지금껏 사용해왔던 Javascript는 Jquery나, angularjs처럼 client영역에서 대부분 이었다. (개인적으로 Node.js는 관심분야가 아니다) 책에서 설명하는 '자바스크립트 환경'은 책을 진행하기에 어려움이 많다. REPL이라기에는 어시스트도 제대로 되지 않고 에디트도 쉽지 않고... 그래서 우선은 환경 설정부터 따로 진행하였다.


1) http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/ 에서 jsshell 다운로드 및 설치
2) .profile에서 PATH 설정 후 js 실행되는지 확인
3) http://www.jetbrains.com/webstorm/ 에서 webstorm 설치
4) 실행후 프로젝트 하나 생성 App.js파일 하나 만들고 print 한줄을 쓰자
5) 실행할때 Node Interpreter 옵션을 SpiderMonkey의 js로 지정...

V8 기반의 Node와 SpiderMonkey는 문법이 조금 다르다.. 그래서 어시스트등의 IDE기능을 100% 사용을 할 수는 없지만... 무식하게 js-shell에서 진행하거나 그냥 에디터에서 진행하는것보다는 나을것 같아서 이렇게 진행하였다. (더 좋은 방버이 있을것 같지만... 진행에 전혀 문제가 없기에 ...)

완전하지는 않지만 이게어디냐...



이렇게 환경을 설정하고 2장부터는 일반적인 자료구조론의 내용이다. 배열을 시작으로 리스트, 스택,큐등을 진행하고 좀 더 심화과정으로 딕셔너리, 트리, 그래프가 나온다. 마지막으로 약간의 알고리즘으로 책이 끝난다...

전체적으로 잘되어 있는 번역과, 다르게 해석될수 있거나, 영어 자체가 더 익숙한 단어들에는 '원 단어'를 표시해주어  오해를 할만한 부분을 해소시켜 주었다.


책을 읽고 나서 장단점을 몇가지 적어본다면...

#1. 이 책 열심히 따라 하더라도 일반적인 브라우저/Node.js 에서 작동이 안된다... (문법이 달라...)
(위의 스샷의 for each 문법은 일반적인 브라우저나 Node.js에서 안먹힌다... ㅠ ㅠ
참고 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for_each...in )

#2. 좀 더 친절한 예제 수행방법이 있었으면 좋지 않았을까? (실제로 다른 리뷰를 찾아보니 실행에 어려움을 겪으신듯 하다)

#3. https://github.com/oreillymedia/data_structures_and_algorithms_using_javascript 에 예제코드는 올려져 있지만.. 연습문제에 대한 솔루션은 제공하지 않고, 구하는 방법도.. 못찾았다. (내가 못찾은 것일수도 있다) 이건... 있어야하지 않을까...? 

#4 이 책의 단점은 아니지만... Javascript와 자료구조론이라는게 궁합이 맞을까라는 의문이 든다...
[1,100,2].sort()의 결과에서 보는것처럼 (이건 Node.js마찬가지)  자료구조라는 포커스보다. Javascript의 언어적 특수성에 의한 구현물이 발생하기 떄문이다...

#5. server-side를 전혀 해본적이 없는 javascript developer가 자료구조를 학습하기에 좋다. (그런데  javascript 딱 1개만 할 수 있는 자료구조 학습희망자가 있을지는 모르겠다.)

#6. 번역에 불만이 없다. 특히 오해할 수 있는 단어에는 영어 단어를 같이 노출해주는 배려가 좋았다.


마지막으로...

http://shop.oreilly.com/product/0636920029557.do#PowerReview 에 있는 리뷰처럼  표준을 벗어난 구현과, 세련된것 같지는 않은 구현이다.
책을 충실히 번역하는 것도 중요하지만, 책자체가 미흡하다면 그 부분에 대한 보강은 블로그등을 통해서 해주는게 좋지 않을까 한다.  (예를 들면 출판 전 현업 리뷰를 통해서 1장의 환경 설정 하는 방법을 블로깅 해서 공유한다던지, 뒤에 7장 정도의 실제 따라하기를 유튜브를 통해 공개한다던지..)


Comments