폴리글랏 프로그래밍
임백준
폴리글랏 프로그래밍
2014, 한빛미디어 펴냄

어느덧 프로그래밍을 처음 접한 지도 3년이 되어 갑니다. 짧다면 짧고 길다면 긴 시간인데, 어쩌다 보니 다양한 언어를 접해 왔네요. VBA부터 시작해서 Java, C, C++, C#, Javascript, Python, Scala 총 8개 언어를 다루어 보았네요. 이 중 가장 최근에 배운 언어가 Scala 입니다. 함수형 언어를 처음 접하는 제게 Scala 는 너무 낯설고 어려운 모습이었죠. 회사에서 하라니까 프로젝트를 진행하기는 했지만, 꽤나 고생을 했습니다. 그 기억이 별로 좋지 않아서 "이제 Scala는 안해야지" 라고 생각하고 있다가, 우연찮게 이 책의 목차를 보게 되었습니다. 임백준님이 저자여서 책이 눈에 들어오기도 했지만, 그보다도 제가 언어를 접한 순서와 책의 목차 순서가 일치해서 책을 보고 싶더군요. 저는 위 8개 언어 중 Java, C#, Scala 를 이 순서대로 접했는데, 책에서도 세 언어를 이 순서 대로 굵직한 목차로 두고 소개하고 있거든요. 그래서 Scala 에 대한 호기심 반, 3개 언어의 관계에 대한 호기심 반으로 책을 읽게 되었죠.

 책은 프로그래밍 언어, 더 나아가 프로그래밍 자체의 트랜드를 보여 주려 노력합니다. "모든 언어의 '발전'은 추상수준을 상승시켜서 프로그래머가 작성해야 하는 행사코드의 분량을 줄이는 방향으로 움직인다" 는 명제를 중심으로, 많은 언어가 등장하고 발전한 과정을 서술하고 있죠. 그 과정에서 언어의 창시자, 기여자들에 대한 뒷이야기(?)들도 심심치 않게 등장합니다. 프로그래밍 언어를 만든 사람들이 언어를 만든 과정과 철학을 알게 되면 언어를 조금 다른 시각에서 볼 수 있게 되는 것 같습니다. 그런 점에서 임백준님이 책에서 소개한 다양한 사이트, 도서들을 살펴보면 프로그래밍을 할 때에도 도움이 될 것이라 생각합니다. 임백준님의 책은 프로그래머들이 참고할 만한 출처를 많이 소개해 주시는 점이 장점인 것 같습니다. 물론 너무 많아서 모두 찾아보기에 부담된다는 면은 있지요.... 여하간 다양한 언어의 등장, 발전 과정과 그 배경을 얇은 책 한 권을 통해 살펴볼 수 있다는 점은 참 좋았습니다.

 C#과 Scala 의 문법들을 'Java 를 넘어서는 과정'으로 보고 설명한 부분도 큰 도움이 되었습니다. 저는 Java, C#, Scala 를 모두 별개의 언어로 보고 공부했는데, 그러다 보니 자꾸만 "Java 에 없는 기능은 모두 필요 없다"는 생각이 들었거든요. 아마도 Java 가 가장 친숙한 언어이기 때문일 것입니다. C# 의 delegate, lambda, LINQ 와 같은 기능이나, Scala 의 '함수형 프로그래밍'과 같은 새로운 패러다임을 접할 때면 "Java로는 그런 기능을 쓰지 않고도 다 구현할 수 있는데?" 라는 거부감이 먼저 들었습니다. 이 책을 읽고 나니 제가 경험이 부족해서 그런 생각을 했다는 것을 깨닫게 되었죠. C#, Scala 의 개발자들은 Java 의 불편한 부분을 '극복'하기 위해서 새로운 기능, 새로운 패러다임을 도입한 것임을 알게 되었거든요.

  Java 라는 좁은 틀을 벗어나 더 넓은 시각을 가지게 해 주었다는 점, 그리고 C#, Scala 에서 처음 접하는 낯선 기능들을 Java 의 단점과 연관 지어 볼 수 있게 해 주었다는 점이 참 좋았던 책입니다. 저는 Scala 언어로 인한 호기심에 책을 펼쳤다가 많은 의문을 해결했습니다만, 사실 프로그래밍 초심자는 이 책을 읽기가 꽤 어려울 것 같습니다. 서너 가지 언어를 다루어 보면서 언어 간의 차이 때문에 불편함을 느껴 본 분들이라면 책을 재미있게 읽으실 수 있을 것 같네요.

  책에서 언급 된 도서들을 아래에 남겨 둡니다. 이보다 더 많은 도서가 언급 되어 있는데요, 지극히 개인적인 입장에서 읽어 보고 싶은 책만 골랐습니다.
  • Brian Goetz, Java Concurrency in practice
    저자분이 "회사를 옮기거나 할 때 인터뷰를 준비할 일이 있으면 반드시 통독을 하는" 책이라고 소개 한 도서입니다.
    Amazon 에서 이 책을 검색하니 바로 아래에 Cracking the Coding Interview 가 검색 결과로 나타나네요.
    프로그래머의 실력을 가늠하는 리트머스지 역할을 하나 봅니다.
  • Steve McConnell, Code Complete
    Amazon 에서 검색하면 Clean Code 가 함께 검색 됩니다. 두 책 모두 몇 번 들어 본 것 같습니다.
    어느 강연 동영상에서 강사 분이 Clean Code 의 목차를 보여 주면서 "이걸 어떻게 모두 기억 해 두고 코딩 할 때 마다 적용 할 수 있을까요" 라고 묻던 것이 기억 납니다. 그래도, 아예 모르는 것 보다는 낫겠죠?
  • Paul M. Duvall, Continuous Integration
    이 책 보다는 함께 검색 되는 Continuous Delivery 가 더 평점이 높네요.
    책의 부제만 보았을 때에는 도서 Continuous Delivery 의 내용이 더 풍부해 보이기도 하네요.
  • Bruce Tate, Seven Languages in Seven Weeks
    과연 매 주 새로운 언어를 익히는 것이 좋은 것인 지는 잘 모르겠습니다. 하지만 다양한 언어를 비교 한다는 컨셉은 흥미롭네요.
  • Bruce Eckel, Thinking in C++ / Thinking in Java
    각각 C++ / Java 프로그래머의 필독 도서로 알고 있습니다.
    C# 을 주로 쓰는 저는 Thinking in ~ 시리즈 대신 아래 Effective c#, C# in depth 두 책을 읽으려 합니다.
  • Bill Wagner, Effective c#
    샀습니다. 다 읽으면 독후감 올릴게요. (책을 샀는데 왜 읽지를 못하니)
  • Jon Skeet, C# in depth
    살겁니다. 다 읽으면 독후감 올릴게요. 

  그나저나 임백준님은 어찌 그리 많은 글을 읽고 쓸 수 있는지... 신기할 따름입니다. 임백준님처럼 일 년에 책 한 권을 내지는 못하더라도, 한 달에 책 한 권은 읽어야겠지요. 조금 더 부지런 해 져야겠습니다.


'독서' 카테고리의 다른 글

네트워크 개론  (0) 2016.05.02
도난 당한 패스워드  (4) 2014.11.30
거꾸로 배우는 소프트웨어 개발  (0) 2014.11.15
폴리글랏 프로그래밍  (0) 2014.11.15
어떻게 원하는 것을 얻는가  (0) 2014.10.25
Java 언어로 배우는 디자인 패턴 입문  (0) 2013.08.09