아아, 재미있었다. 역시 두뇌를 깨우고 활동적으로 만드는 데는 책만한 것이 없는 것 같다. 정말 간단한 책이었지만 실용적이고 또 간단하게 두뇌에 윤활유를 치기에 적합한 책 선정이었던 것 같다. 무엇보다도 얇은 책이기 때문에 성취감도 있고.

이전에 쓴 독후감을 다시 봤는데, 굉장히 실망했던 모양이다. 새로운 걸 알고 싶은 욕망이 가득한데 다 아는 것들이 줄줄이 적혀 있으니 실망할 법도 하지. 하지만 지금은 새로운 것 보다는 복습이 너무나 절절히 절실하다. 그랬기에 재미있었다. 애매모호하게 아는 것이 많으면서 왜 그리 잘난척을 해뒀는지. 과거의 나는.

이 책은 정말 원론적인 것들을 하나하나 되짚으며 이야기 해주고 있다. 목차만 봐도 와 정말 원론적이군. 하는 말이 절로 나온다.

이걸 읽음으로써 또 한층 나아간 내가 되었길.

아래에는 목차를 기준으로 대충 내용을 정리해 보았다.


————————-

1장. 효율적으로 언어 배우기 언어에서 절대적인 것은 없다는 것, 같은 단어도 설계자마다 다른 의도로 구현할 수 있다는 것을 설명한다.

2장. 프로그래밍 언어를 조감하다 언어마다 구현한 목적이 다르므로 목적에 맞춰 사용할 것을 권고한다.

3장. 문법의 탄생 스택 머신에서부터 현대의 문법까지 훑어, 문법의 필요성을 언급한다.

4장. 처리 흐름 제어 if / while / for문을 예로 들어 문법의 필요성을 다시 언급한다.

5장. 함수 재사용에 관해 이야기한다.

6장. 에러 처리 고전적인 방법과 try/catch문, 그리고 각각의 장단점에 대해 이야기한다.

7장. 이름과 스코프 동적 스코프(모든 변수가 글로벌함)와 정적 스코프(인스턴스별로 변수를 따로 관리함)에 대해 이야기한다.

8장. 형 타입이 필요한 이유와 형추론에 대해 이야기한다.

9장. 컨테이너와 문자열 배열, 리스트, 딕셔너리(해시 / 힙) 등의 컨테이너와 각 언어의 문자열 구현에 대해 설명한다.

10장. 병행 처리 협력적 멀티태스크(한쪽이 일을 끝내면 다음쪽이 선점), 선점적 멀티태스크(일정 시간마다 교대)와 race condition의 해결 방법 세가지, 락에서 발생하는 deadlock과 트랜잭션 메모리를 설명한다.

11장. 객체와 클래스 객체 지향을 클래스 없이 구현한 언어들을 우선적으로 이야기하고(모둘과 패키지 / 퍼스트 클래스 함수 / 클로저) 마지막으로 간단히 클래스를 언급하여 객체 지향에 대해 설명한다.

12장. 상속을 통한 재사용 다중 상속을 포함한 상속의 문제점들을 언급한다. 죽음의 다이아몬드 해결책으로는 다중 상속 금지 / 메소드 해결 순서 / 합성 / 트레이트(믹스인) 들을 언급한다.