본문 바로가기

소프트웨어,IT,컴퓨터공학 도서리뷰/기술 명세 서적(technical specific) : PL

세상에서 가장 재미있는 자바 책 - 자바 퍼즐러 - [조슈아 블로크, 닐 개프터] [윤인성 옮김][5/7][책리뷰][한빛미디어]

95개의 아리송했던 고민들. 그것을 퍼즐이라는 메타포로 해석하다.

 

 

요약 평가 [ 제목 2 ]

추천도 : 5/7 [ 필독서는 아니지만... 시간이 있다면 읽어보는 것은 나쁘지 않을 듯하다. ]

★★★★★☆☆

 

읽은 기간 📅 : 2021.6.22 ~ 2021.08.21

 

이 책을 추천하는 이들 👨‍👧

  • 자바 프로그래머
  • 조슈아 블로크(이펙티브 자바)를 좋아하는 개발자.

 

난이도 🦈

중상

 

관련된 책들 📚

  1. 이펙티브 자바

 

 

한 줄 평 ✍️

이 책을 읽는다면 프로그래밍 언어 설계자의 관점을 어느정도 얻게 된다.


닐 개프터 : 자바 8에 추가된 람다 표현과 함수형 프로그래밍을 가능하게 하는 혁신적인 언어 명세를 주장하고 구현한 인물.

 

조슈아 블로크와 닐 개프터는 이 책을 썼다

 

저자 2명은 자바가 태어난 시점인 1996년부터 자바 플랫폼을 개발한 개발자들이다. 

 

그렇기에 이들은 자바가 가지는 여러 문제점들을 보고받게 되는데, 저자 2명은 이 문제 상황들을 모아두다가 이 문제들을 토대로 세미나(강연)를 진행해야겠다는 생각을 하게 된다고 한다.

 

실제로 세미나를 다녔고, 나중에는 책으로도 나오게 된다.

 

이 책에는 95가지의 코드가 나오는데 각 코드들은 컴파일하지 않고 직관적으로 ~~한 내용이지 않을까 하는 결과를 내지 않을까 생각하지만 예상하지 못한 결과를 내놓는다.

 

왜 그런 것일까?

 

그 이면에는 프로그래밍 언어 설계의 철학, 더 복잡해진 도메인을 수용하기 위해서 고군분투 하는 JVM의 구조가 스며들어 있다.

 

나아가 프로그래머의 자체적인 실수도 존재하며, 라이브러리 자체가 잘못될 수 있는 경우도 존재한다.

 

웬만해서는 이런 함정들에 빠지진 않겠으나, 빠지게 되면 매우 곤혹스러울 것이다. 내부의 깊은 시스템의 메커니즘을 탐색해야 하기 때문이다.

 

저자들이 그간 모아 온 지혜들을 들어보고, 매 퍼즐의 끝에서 그들의 솔직 담백한 조언도 새겨듣는 게 참 좋았다.

 

조슈아 블로크와 닐 개프터의 고민들이 아닐까 한다.

 

몇몇 퍼즐의 마지막에는 이런 말로 끝을 맺는다.

 

만약 당신이 프로그래밍 언어 설계자라면 ~~한 부분에 대해서 신중한 고민을 해보기를 바란다.

 

그리고 A라는 선택지를 택한다면 보완책을 세워주기를 바란다.

 

프로그래밍 언어의 발전은 무수히 많은 구루들의 의견들로 진행되며, 그 뒤에는 커다란 커뮤니티가 존재한다.

 

그러다 보면 순간순간 결정들에서 문제점들 드러나기도 한다. [무수히 많은 제안이 들어오기 때문에.. ]

 

저자 2명은 자바의 아쉬운 점을 몇몇 퍼즐을 통해서 얘기해주는 것 같다.

 

그리고 시간이 흘러 언젠가 자바도 신세대 프로그래밍 언어에 자리를 내어주게 된다면

 

적어도 그 신세대 프로그래밍 언어들은 자바가 피하지 못했던 함정의 오류들은 개선해나가기를 바랐던 것 같다.

 

성장적이고 교훈적이며 그만큼 자바라는 프로그래밍 언어를 사랑한 2명의 프로그래밍 언어 설계자를 만날 수 있었다.

 

전문적인(프로페셔널) 모습과 집약적이고 세부적인 정보에 집중하는 그들의 모습을 보면서 이 사회가 더 멋지고 더 나은 미래로 향할 수 있는 배경을 이해할 수 있게 되었다.

 

사회적으로 이 책의 2명의 저자는 매우 필요한 인물들이다.

 

책 속에 좋은 내용들

 

개인적으로 이 책에서 인상 깊었던 내용들은 다음과 같다.

 

1. %연산자 활용과 관련된 부호 처리. [ 왼쪽의 피연산자의 부호를 따른다고 한다. ]

 

2. 복합 할당 연산자(2개의 연산자가 붙은 형태 EX -=, +=)는 아무런 경고 없이 축소 변환을 수행한다.

 

3. 연산자의 피연산자는 왼쪽에서 오른쪽으로 연산된다.

 

4. 클래스 초기화는 코드의 위에서 아래로 진행된다.

 

5. 인스턴스 초기화는 생성자보다 먼저 실행된다.

 

6. 하이딩, 섀도윙, 오버라이딩, 오버로딩, 모호함에 대한 개념들

 

스레드, 리플렉션, 라이브러리 등등의 내용은 너무도 깊게 들어가는 내용이라서 제대로 이해하지는 못했다.

 

내가 개발하는 선에서 도움을 받을 수 있었던 조언은 위의 내용들인 듯하다.

 

그 외에도 직관적으로 이해가 되지 않는 프로그램은 그 프로그램의 기능을 제대로 수행할 수 없다는 조언.

 

이미 라이브러리로 잘 만들어진 기능을 탐색해보고 없다면 개발해서 사용하라는 조언.

 

프로그래밍 언어 설계자로서 API를 설계할 때 반드시 제공해야 하는 기능은 최대한 쉽게, 절대 일어나면 안 되는 일은 절대적으로 방어하라는 내용도 좋았다.

 

확실히 조슈아 블로크의 책은 한 번에 읽기도 어렵고, 한번에 이해하기도 어렵다.

 

나중에 시간이 나면 다시 읽어보고 싶은 책이다.

 

좋은 책을 번역해주신 윤인성 옮긴이분에게 감사함을 표한다.

반응형