폴리글랏 프로그래밍
임백준
폴리글랏 프로그래밍
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.10.25
Java 언어로 배우는 디자인 패턴 입문  (0) 2013.08.09