티스토리 뷰

Development

[책] You Don't Know JS Yet (YDKJSY)

KimDoubleB 2024. 2. 25. 23:43
반응형

Javascript ?

신이 찾아와 개발자인 당신에게 평생 한 프로그래밍 언어만 사용할 수 있다고 한다면, 어떤 언어를 고르겠는가?

백엔드 개발자로서 자바민국(요즘은 코틀린민국이 되가고 있는 것 같긴 하다만)에선 Java를 골라야지 싶기도 하지만, 나는 무조건 Javascript를 고르겠다.

 

무언가를 만들어낸다는 행복과 뿌듯함을 바라보고 온 직업인데, 한 측면에 집중된 언어보단 여러 곳에서 메인 언어로 선택될 수 있는 녀석을 선택하겠다.

  • 그리고 개인적으로 평생 Java나 해라는 욕같다 그냥. 평생 Javascript나 해라는 욕같은 느낌이 덜하다.

 

Javascript의 생태계는 정말 끝이 없는 것 같다.
단순히 Web Frontend를 넘어 Backend 영역을 넘어서 App Frontend까지 넘기 시작하더니 지금은 AI 영역까지 넘어왔다.

 

 

요즘 느끼는 것

나는 첫 서버 개발을 express.js로 시작했었는데, 그 당시엔 Javascript가 참 단순한 언어라고 생각했다. 뭐랄까. 이렇게 짜도, 저렇게 짜도 돌아가는 녀석이랄까.

그렇다보니 내부적으로 어떠한 구조를 가지고 있는지 잘 알지 못했고 알려고 하지 않았다. var/let/const만 봐도 참 다양한 모습을 지니고 있는 녀석이겠거니 했지.

 

그러다가 최근에 FE를 살짝 만지면서 여러가지 많이 깨닫고 있다.

다양한 방식마다 차이가 존재하고, 그 차이가 존재하는 이유가 꼭 존재한다는 것도 그렇다. 이건 다른 언어들도 마찬가지지만, Javascript에선 더 크게 다가오는 것 같다. 구현하는 법도 모던 Javascript(ES6 이후)로 넘어가며 변경되는 부분도 많았고 기존 기능을 덮는 것 같은 기능들이 많아서 그런 것 같다.

 

또한, 무언가를 구현하는데 있어서 MDN Javascript를 보다보면 이런 것도 지원돼?를 많이 느낀다. 무언가 프레임워크/라이브러리 기능 측면이 아닌 순수 Javascript 기능 말이다.

그래서 더 Javascript가 궁금해졌다.
이 녀석 왜 이렇게 동작하고, 저렇게 동작하는걸까?

 

 

YDKJSY 책

YDKJS 책을 아는가? 만약 경력이 좀 있는 Javascript 개발자라면 알 수 있을 것 같다.
카일 심슨이라는 개발자가 작성한 You Don't Know JS 라는 책의 줄임말을 의미한다. Javascript 언어에 집중한 책으로 타입/문법부터 '스코프', '클로저'에 집중한 책이다. JS 생태계에서는 꽤나 알려져있는 책으로 보인다.

이 책의 2판이 이번에 국내에 들어오게 되었다.
제목은 YDKJSY - You Don't Know JS Yet. 앞선 제목 뒤에 Yet이 붙었다.

  • 넌 아직 JS 몰라, 아직도! 느낌.

 

위에서 말한 궁금증 Javascript는 왜 이렇게 동작하고, 저렇게 동작하는 것일까?이 계속 들던 와중에 눈에 들어왔고, 운이 좋게 한빛미디어에서 제공받게 되어 이번에 읽게 되었다.

 

책 목차만 보면 1판과 크게 다르지는 않다.

  • Javascript에 대한 기본적인 내용(어떻게 Javascript가 동작하는지, 값과 타입, 어떤 기능들이 있는지)부터 스코프와 클로저 순이다.
  • 1판을 읽어보진 않아서 내용적으로도 차이가 있는지는 모르겠다. 근데 목차 상으론 2판에서 더 세분화되고 내용이 많이 추가된 것으로 보인다.

특히 스코프와 클로저로 이루어진 2판은 Javascript 기초를 다룬 책들과 다르게 깊게 들어간다. 스코프는 어떻게 이루어지고, 렉시컬 스코프/체인/생명주기/노출 등 다양한 방면을 조망해 설명한다. 클로저 또한 그렇다.

  • 이 부분을 잘 모른다면 많은 것을 알아 갈 수 있는 내용이었던 것 같다. '아 이렇게도 구현될 수 있어?'부터 '아 이게 이래서 동작하는거 였어?'까지.

 

 

인상깊던 2가지

책을 읽고나니 인상깊던 부분들이 크게 2가지 있었다.

 

지은이의 사견을 들을 수 있다.

어떤 언어, 프레임워크, 라이브러리를 배우려고 책을 샀는데, 단순히 "이렇게 짜면 이렇게 동작하고 이렇게 구현됩니다."로 이루어져있다면, 나는 화가 난다. 이럴거면 공식문서를 보고 말지라는 생각이 들기 때문이다.


이번 책은 중간 중간 마다 논쟁이 될만한 주제에 대해 "난 이렇게 생각한다"로 시작하며 자신의 생각을 말해주는데 참 인상 깊었다. 예를 들어, "JS는 컴파일 언어인가, 인터프리터 언어인가"에 대한 질문에 대해 "필자는 JS가 컴파일 언어라고 생각합니다"라고 의견을 밝혔다. 당연히 "왜"인지도 알려준다.

 

"왜"의 중요성을 말하다.

이전 책 리뷰에서도 말했지만, 특정 언어에 대한 개발서일지라도 개발자로서의 덕목, 배우면 좋은 것을 함께 이야기해주는 것을 매우 중요하게 생각한다.


이 책도 그렇다. 정말 인상 깊었던 것은 1부 마지막에 나온다.

사실이 아닌 필자의 주장을 그대로 차용해서 쓰려면 "왜 그렇게 생각하는지" 답변할 준비가 되어 있어야 합니다. 필자의 주장과 근거를 앵무새처럼 따라 해서는 안됩니다. 자신만의 의견을 갖고 그 의견에 들어오는 반박을 재반박할 준비가 되어 있어야 합니다.

 

또한, 3.5 챕터의 주제 제목은 "왜라고 질문하기"일정도로 "왜"에 진심인 지은이다.

 

나 또한 개발에서 "왜"가 얼마나 중요한지 알고 있다.
지금까지의 개발 생태계가 이렇게 성장하기까지 "왜"가 없었다면 가능하지 않았을 것이기 때문이다 (이라고 믿는다).
더 나아가 "왜"가 없었다면 "개발(Development)"라는게 아예 없었을 수도 있을 것 같다.

책의 저자는 모든 챕터에서 이를 강조한다. 스코프와 클로저를 설명할 때에도 JS의 특징입니다가 아닌, 왜 이게 이런 기능을 갖고 어떤 역할을 하고자 함인지 그 원인과 목적을 설명하는게 참 좋았다.

 

 

정리하며

만약 Javascript를 다룰 줄은 알지만, 깊이 있게 알지 못한다면 한번 쯤 읽어봐야 하는 책이라고 생각한다. 고로, 추천한다.

만약 "음... 아직 감이 안오는데..." 싶을 수 있으니... 구미가 당길만한 몇가지 문장을 두고 서평을 마치고자 한다.

  • 클래스 만이 객체를 사용하는 유일한 방법은 아니다.
  • ===만 사용한다고 모든 문제는 해결되지 않는다.
  • var를 사용하지말라는 건 지나치게 한정을 짓는 제안이고 도움이 되지 않는 제안입니다.

 


    "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

320x100
반응형
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함