C# 혹은 자바와 같은 언어들을 가리켜 객체 지향 프로그래밍 언어라고 한다. 객체 지향 방법론, 즉 Object-oriented Methodology 라고 하는 관점은 세상 만물이 모두 객체로 이루어져 있고, 이 객체들이 한데 모여서 새로운 객체를 만들고, 그런 객체들 간에 상호작용을 한다는 것이다. 세상 만물을 모두 숫자로 표현할 수 있다고 생각했던 고대 그리스 시대 철학자들의 주장과 같이 하나의 철학이라고도 생각할 수 있겠다. 무슨 말을 하고 싶어서 이렇게 거창하게 시작하나 싶다. 개발자들이 사용하는 프로그래밍 언어들은 거의 대부분 서양에서 만들어졌다. 즉 서양 문화권에서 사람들이 사용하는 언어를 기반으로 기계가 이해할 수 있는 언어로 바꾸어주는 것이 이런 프로그래밍 언어들이다. 그러다보니 당연하게도 그쪽의 언어적인 특성이 프로그래밍 언어에 녹아들어 있다는 것으로 이해해도 될 것이다.
이 책 개발자 영어 코드로 감 잡다은 이런 점에 착안하여 쓰였다. 저자는 개발자들이 어떻게 하면 보다 쉽게 영어로 된 문장을 읽을 수 있을까를 고민하다가 객체지향 프로그래밍 언어의 특성을 적용하기에 이르렀다. 영문법의 주어, 동사, 목적어, 보어 등을 객체와 그 객체가 실행하는 메소드로 구분하여 뚝딱뚝딱 레고 블록을 조립하듯이 하다보면 문장이 만들어지고, 반대로 문장의 여러 요소들을 객체와 메소드로 분해할 수 있다고 가정했다. 그리고 그 가정을 실제로 훌륭하게 구현해 냈다. 그러다보니 이 책에서 제시하는 것은 어찌 보면 하나의 새로운 프로그래밍 언어라고 볼 수도 있다. 영어가 갖는 규칙성을 객체 지향 프로그래밍 언어의 특성과 결함하여 새로운 언어 분석 기법을 제시하는 것이다. 당연히 기존에 사용하던 영문법 용어들은 이 책에서 볼 수 없다. 저자는 "뭐는부품 (주어)", "뭐한다부품 (동사)", "뭐를부품 (목적어)", "어떤부품 (형용사)", "어케부품 (부사)" 등으로 새롭게 용어를 규정하여 영문법을 서술한다.
이 책을 받자마자 처음부터 끝까지 주욱 읽어보았다. 영어권 국가에서 개발자로 살고 있는 입장에서 이 책이 서술하는 내용들은 상당히 신선하게 다가왔다. 실제로 생활하면서 개인적으로도 "개발 언어가 어차피 영어와 같은 언어권 사람들이 만들어낸 것들이니 영어 구조와 비슷하지 않을까?" 하고 막연하게 생각해 오던 내용들이었는데, 그런 막연함을 실제로 저자가 풀어낸 것이다. 저자는 서문에서 스스로도 개발자가 아니라고 전제하면서 자신이 생활코딩의 강좌를 듣다가 문득 들었던 아이디어를 구현해 냈다고 한다.
이 책은 결코 어렵지 않다. 오히려 영어 문장은 상당히 쉽고 친숙한 문장들이고, 그런 문장들이 책 전체를 관통하면서 반복해서 쓰이고 있기 때문에 이 책을 통해서 어떤 어휘라든가 문장이라든가 하는 것들을 고급단계까지 배울 수는 없다. 다만, 영어의 문장들을 어떻게 하면 개발자가 사용하는 프로그래밍 언어의 관점에서 손쉽게 접근해서 풀어낼 수 있는지에 대한 고민이 담겨 있다고 볼 수 있다. 특히나 객체 지향 개발 방법론에 익숙한한 개발자들이라면 굉장히 편안하게 읽어낼 수 있는 책이기도 하다.
본인이 개발자인가? 개발 관련 문서들은 거의 대부분 영어로 되어 있는데, 언제까지 한국어 개발자 커뮤니티에 의존해야만 하는가? 그렇다면 영어로 된 문서를 직접 읽도록 하자. 개발하다가 막히는가? Stack Overflow에 직접 질문을 영어로 남겨 보도록 하자. 이런 실용적인 접근은 바로 이 책 개발자 영어 코드로 감 잡다을 읽어보면 상당부분 고민을 해결할 수 있다. 물론 늘 그렇듯이 새로운 프로그래밍 언어를 개론만 배운다고 해서 바로 써먹을 순 없다. 그 언어를 이용해서 어플리케이션을 만들어 봐야 비로소 제대로 써먹을 수 있는 것이다. 그렇다면, 이 개발자 영어 프로그래밍 언어를 배운 후에 써먹을 수 있는 방법은? Stack Overflow에 질문을 남기거나 답변을 달아보는 것이 될 것이다.