BLOG main image

분류 전체보기 (321)
free (36)
영화 (85)
드라마 (21)
게임 (28)
만화/책 (34)
개발 (46)
IT (68)
연예 (3)
Visitors up to today!
Today hit, Yesterday hit
TETRIS
rss
2014. 5. 23. 11:19

개발자로 살면서 가장 큰 영향을 받은 책이라면 역시 "실용주의 프로그래머" 이다. 윈도우즈 플랫폼과 비주얼 스튜디오 환경에서 벗어날 생각조차 하지 않고 있던 나에게 Ruby on Rails, Python 등을 공부하게 만들었고, 리눅스 환경과 웹 프로그래밍 등 다양한 분야에 관심을 가지게 만들어 준 책이다. 슬럼프에 빠질 때면 한번씩 다시 읽을 정도로 나에게는 큰 의미가 있다.


최근에 읽은 책들도 "실용주의 프로그래머" 만큼이나 꽤 큰 의미로 다가와서 글로도 남기고 싶어졌다.



코드 



이 책은 2001년에 나온 책인데, 이제서야 알게 됐다.

찰스 펫졸드의 통찰력은 정말 놀랍다.

찰스 펫졸드 하면 Windows 프로그래밍 서적만 쓰는 것으로 알고 있었는데, 이런 참신하고 Windows와 관계 없는 책을 썼다는게 신비롭다. (그럼에도 불구하고 이 책의 Copyright 는 Microsoft 다. 노예냐 펫졸드는....;;;)


책의 내용은 정말 훌륭하다. 본인 스스로도 자신의 최대 역작이라고 얘기할 정도!!!

사실 훌륭한 수준이 아니라, 개발자라면 보면서 감동 받아서 울면서 봐야할 수준이라고 생각...


찰스 펫졸드가 쓴 책이고 제목도 CODE 이지만, 프로그래밍 기술에 대한 내용은 전혀 없다.

아래에 설명할 CPU 에 대한 책 보다 더 근본적인 내용을 다루고 있다. 


모스 부호와 점자의 탄생. 그리고, 전지의 작동 원리부터 시작해서 논리 회로로 넘어가며 컴퓨터의 작동 원리에 대해 얘기하는데 정말 빠져든다. 너무 재미있다.

심지어 전지 쪽 부분을 볼 때는 우리 나라 물리 교과서가 이 정도로 재미있고 흥미롭게 물리학에 대해 관심을 가지게 했었다면, 내가 개발자가 아니라 물리학자를 꿈꿨을지도 모르겠다는 생각까지 들 정도였다. (아, 물론 쉘든 쿠퍼를 보면 물리학은 내가 건드릴 수 있는 분야는 아니라고 생각한다)


덤으로 책의 종이 커버를 벗기면 아래와 같은 모습인데, 완전 멋있다 -_-;


제목도 무려 2진수로 1000011 1001111 1000100 1000101 



개발자라면 정말 꼭 읽어볼만한 책인 것 같다.

이런 책을 읽고 개발자를 시작할 수 있는 사람은 정말 축복 받은 사람이다.




프로그래머가 몰랐던 멀티코어 CPU 이야기



구입하고 2년 정도 읽지 않고 방치했다가 이제서야 읽은 책.

제목만 봐도 2년 이상 방치해놓고 싶게 생겼다. CPU 이야기, 그것도 멀티코어 CPU 라니... 

그리고 슬쩍 책을 펼쳐보면 종종 어셈블리 코드나 CPU 시뮬레이션 코드가 나오는데, 당연히 안보고 싶지... -_-;


하지만, 그것은 나의 착각!

이 책은 재미있다. 그것도 대단히. 충격적으로.


윤성우의 "뇌를 자극하는 윈도우즈 시스템 프로그래밍" 에도 컴퓨터 하드웨어에 대한 기본 지식은 설명되어 있는데, 아무래도 프로그래밍에 대한 책이라서  이 책 만큼 재미있고 자세하지는 않다.


내가 이 책을 보기 전까지 CPU 에 대해 알고 있던 것은 

- 컴퓨터의 두뇌. 빼면 컴퓨터가 안켜진다.

- CPU 란 비싼 부품. 

   난 인텔을 좋아는 하지만 "빠"는 아니어서, 가성비가 좋다면 AMD 를 쓴다.

- 3Ghz 라면, 초당 3억번의 시그널을 처리

  2Ghz 짜리 4코어라면, 초당 8억번의 시그널을 처리.

  음, 감이 안오는 수치인데? 대체 CPU 만든 애들은 무슨 짓을 하는건지...


일단, 이 책을 읽고 난 소감을 얘기하자면,


난 로버트 저메키스의 "컨택트" 를 재미있게 봤음에도 외계인의 존재는 믿지 않았는데, 인텔이나 AMD 에는 정말 외계인이 있을 것 같기도 하다. 인간이 공부하거나 노력한다고 만들 수 있는게 아닌것 같은데 CPU 는?;


인류의 4대 발명품에서 전쟁을 불러 일으킨 "화약" 을 빼고, 나침반, 인쇄술, 종이, 그리고 FOX 채널의 "24시" 를 넣는게 좋겠다고 주장했는데, 생각이 바뀌었다.


인류의 4대 발명품은 진공관, 트랜지스터, CPU, 그리고 튜링 머신이다.



실제 코딩을 가르쳐 주는 책과 다르게 이런 구조에 대한 것들은 배우고 나면 "깨달음"을 얻을 수 있다.

디자인 패턴을 배우면 설계나 코드가 아름다워지는데, 구조에 대한 것을 배우면 컴퓨터 세계를 보는 시각이 달라진다. 


- 인털 펜티엄의 부동 소수점 연산은 왜 오류가 있었는지

- L1, L2, L3 캐시는 왜 있고 왜 나눠놨는가?

- PS4 와 Xbox One 성능 차이는 어떨 것인가? (이런 내용은 없지만, 메모리 대역폭 문제)

- GPU 는 대체 CPU 랑 어떻게 다르지?

- CISC, RISC, ARM 계열은 또 어떻게 다른가? Atom 은?


같은 하드웨어의 궁금증이 싹~ 해결되고,


- 가상 테이블을 사용하면 왜 성능이 저하되나?

- 포인터를 쓴다고 속도가 빨라지는 것은 아니다. 더 느려질 수도 있다.

- 컴파일러는 어떻게 최적화를 하지? 


같은 개발에 관련된 깨달음 or Tip 도 있다.


궁극적으로는 이런 여러가지 기반 지식들 (하드웨어 구성, 운영체제, 자료구조 등) 이 모이고 쌓여서 실제 개발에 까지 영향을 준다. 꼭 C/C++ 같은 로우레벨 언어를 사용하는 개발자에게 뿐 아니라, C#, Java 개발자나나 Python, Ruby 같은 동적 언어 개발자에게까지 모두.


이 책도 CODE 와 함께 꼭 읽어볼만한 (그것도 여러번) 책으로, 강력 추천.




폴리그랏 프로그래밍



호불호가 좀 갈리기는 하지만, 그래도 (한국의) IT 업계에서 가장 열정을 가지고 책을 쓰고 있는 임백준의 새로운 책이 나왔다. 이름하여 '폴리그랏 프로그래밍'


폴리그랏은 '여러 언어를 사용하는 것' 을 뜻하는 말로, IT 용어가 아니라 원래 존재하는 용어이다.

그리고, 개발에 있어서 '폴리그랏 프로그래밍' 을 주장하는 것 역시 임백준이 처음은 아니다. 맨 처음에 언급했던 "실용주의 프로그래머" 에서 이미 1년에 스크립트 언어 1개씩은 배워둬라.. 라고 조언하고 있다. 


다만, 앤드류 헌트, 데이비드 토머스의 주장이 개발자의 발전을 위해서라면, 임백준씨는 좀 더 현실적인 경험에 의해 이미 폴리그랏이 아니면 개발자가 살아갈 수 없는 세상이 도래했다고 주장하고 있다. 


그리고, 난 이 주장에 동의한다. 아주 전적으로!


개발 언어를 여러개 해둬야 하는 이유는 시대적으로  그럴 필요가 생겨서 직장 생활을 잘 하기 위함도 물론 있지만... 무엇보다 "재미있으니까" 이다.


C++ 만 하다가 C#, Java 을 했을 때도 재미있었지만, 다시 Python, Ruby, Node.js 같은 것을 할 때의 재미도 끝내준다. 재미만 있나? 실용적이며 생산성도 엄청나게 훌륭하다. 실제로 많은 유명한 IT 기업들이 이미 도입을 하고 있다. 이제서야 Scala 를 공부하려고 하는 내 경우에는 사실은 좀 '늦었다' 


개발 환경도 마찬가지, Visual Studio 만 고집하는 사람도 있고, vi 가 아니면 죽음을 달라(!) 라고 하는 사람들도 있다. 또, Eclipse 가 익숙하다고, 새로운 걸 배우는게 힘겹다고 다른 IDE 를 사용하는 것을 적극 반대하는 사람들도 있다. 물론 워낙 뛰어난 IDE (IntelliJ 같은) 를 사용하다 보니 더 후진 것으로는 못간다~ 하는 경우도 있지만, 그럼에도 불구하고 새로운 개발 환경과 언어는 항상 배워두는게 좋다고 생각.


어쨌든, 이 책은 Java 와 C# 그리고 Scala 에 대해 한 챕터씩 할당에서 어떻게 시대가 변했는지 얘기하고 있다. 내용도 재미있고, 지식적으로도 배울 부분이 많다. 


Java 를 주력으로 하고 있는 사람이라면 더욱 볼만한 책.