좋다! 이 책 좋음!

독후감에 글자 제한이 있어서 엄청 짧게 적어야 한다면 저 정도로만 적어도 충분할 정도로, 사실상 기회가 된다면 무조건 다시 한 번 읽어봐야겠다 싶은 책이었다. 역시 임백준님.. 헉헉..

폴리글랏이란 컴퓨터 공학 쪽의 단어가 아니라 범용적으로 사용되는 단어인 모양으로, ‘여러 언어를 사용하는’ 정도의 의미라고 하는데 그 의미를 상기하며 제목을 보면 과연, 하고 고개가 끄덕여지는 것 같다.

갓 프로그래밍을 시작하기 시작했을 때는 C 언어를 공부하며 절차 지향, 명령형 프로그래밍 외의 다른 패러다임을 전혀 이해하지 못했다. 마치 그게 세상의 전부인 양, 사고회로가 거기에 갇혀서 그 틀에 맞는 코딩만 하곤 했었다. 만약 C 언어라는 사고에 아직까지 갇혀있다면 나는 여전히 보수적인 시각으로 언어들을 바라보며, 예를 들자면 자바, C# 등 가상 머신 위에서 돌아가는 언어를, 그리고 인터프리터 언어들을 바라보며 왜 저렇게 느린 언어를 사용하는가 고개를 갸웃거리고 있을지도 모르는 일이다. 하지만 세상이란 그렇게 만만한 곳이 아니었고, 사용되는 언어들은 무궁무진했다.(사실 단순하게 바라보면 어떻든 유명한 언어들만 사용되고 있는 것처럼 보이기도 한다. 우리 나라가 특히 보수적인 나라인지라 그런지는 모르겠지만..)

이 책의 시사점은 이렇게 제목에서부터 뿜뿜 솟아오르고 있었고, 내용 역시 그 주제에 착실했다. 이 책에서는 ‘자바, C#, 스칼라’ 이렇게 세 가지 언어에 주안점을 두고 적어나가고 있는데, 자바와 C#에 어느 정도의 지식이 있은 덕분에 더욱 즐겁게 읽은 것 같다. 사실상 자바는 요즘 거의 사용하지 않고 있기 때문에 자바 8 이전까지 ‘람다/클로저’를 지원하지 않았던 건 이 책을 통해서야 알게 되었다. 클로저에 대해서도 사실상 몰랐는데, 임백준님의 상세한 설명에 개안했다. 근데 뭐 자바 8이 나온지는 꽤 된 상황이라 이제는 람다를 지원하고 있긴 하지만, 그래도 진짜 느렸구나 발전. 그리고 C#에서의 확장 메소드 문법도 꽤 흥미로웠다. 모든 확장된 클래스를 다시 컴파일해야 하는 문제를 컴파일러 트릭을 사용해서 확장 메소드로 확장한다. 사실 라이브러리에 직접적으로 크게 관여하지 않았던 개발 환경 등에 의해 등한시 해온 것일지도..(이렇게 몰랐던 이유에 대해 핑계를 대는 사람이 있습니다.) 또 자바의 지우개 기능(컴파일 후 나오는 바이트 코드에 제네릭의 타입이 저장되지 않아서 제네릭 타입을 활용할 수 없는 문제)에 대해서도 알게 되었다. 그리고, C# 제네릭 사용 중에 전에 의문을 느꼈던 공변성/반공변성에 대해서도 좀 나왔다. 진짜 어렵.. 다시 봐야 함.. 음, 또, 스칼라 라는 언어를 알게 되었다. JVM 위에서 돌아가는 언어들이 참 많구나 하는 것도 알게 되었다. 이것 저것 세세한 부분들을 참 많이 알게 되었는데, 그런 곳에서 지적 유희를 느낀 것 같다.. ㅋㅋ 아무튼 다시 한번 읽어보면서 내가 캐치하지 못한 다른 부분들을 다시금 보고 싶다 ㅋㅋ

이 책은 사실상 ‘자바’라는 언어에 묶여서 다른 언어를 공부하지 않으려는 사람들에게 임백준님이 하는 일갈에 가깝다. 본디 자바 프로그래머였던 분이 이 정도로 자바를 비판하는 것은 사실 쉽지 않았을 것이다.(사용한 기간에 비례하여 애정도가 있을테니까.) 실제로 자바에 대해 보수적으로 구는 프로그래머들에게 진절머리를 느껴서 이 책을 쓰고자 했을지도 모르지.. 아무튼 이 책이 시사하는 바는 나에게도 의미가 깊었다. C++에 너무 심하게 취해서 보수적으로 구는 일은 없도록 해야겠다.. 하고 마음가짐을 정돈시켜줬다.

임백준님의 에필로그 글을 인용하며 독후감을 마무리 해야겠다.

‘혹자는 이 책을 읽고 내가 ‘자바는 죽었고 이제부터 대세는 스칼라’라고 주장하는 것으로 생각할지 모른다. 폴리글랏 프로그래밍이라는 개념을 이용해서 강조하고자 하는 핵심 메시지는 그와 같은 이분법적인 사고 자체가 잘못되었다는 점을 밝히는 것이다.’

하아, 너무 멋있다. 임백준님..(어질)

재밌었다! 꼭 다시 읽어보자!