(국내에선 더더욱) 마이너하지만, 컨셉이 확실해 장점이 있는 언어들의 개념을 이해시켜주는 책이었다.
루비, lo, 스칼라, 프롤로그, 얼랭, 클로저, 하스켈
7개 언어를 이야기하는데, 그 패러다임이 어떤 것인지 이해하는 데에 쉽도록 짤막하게 잘 요약되어 있었다.
- 루비
- 생산성에 특화된 언어
- 언어의 기능을 확장시켜주는 메타 프로그래밍을 통한 생산성 극대화 가능
- lo
- 논란이 큰 언어.
- 간결하고 단일한 문법을 기반으로한 동시성 지원으로 높은 생산성을 냄.
- 독특한 메시징 시스템이 특징.
- 프롤로그
- 아주 오래된 언어.
- 하지만 극도로 강력함
- 스칼라
- 자바 생태계에 함수형 패러다임을 얹은 언어.
- 병렬 처리에 대한 장점은 있지만, 순수 함수형 언어라 부르긴 어려운 것도 사실.
- 얼랭
- 동시성, 분산, 장애 방지에 특화된 언어.
- 클로저
- 리스프의 변종
- 동시성을 지원하기 위해 버저닝이란 방식을 이용해, DB와 비슷한 전략을 사용함.
- 가장 유연한 프로그래밍 모델을 제공.
- 하스켈
- 순수 함수 언어.
- 변경 가능한 상태를 어디에서도 발견할 수 없다는 뜻.
- 강 타이핑을 이용하기에 오류의 가능성이 낮고, 순수 함수형 언어인만큼 모든 코드는 병렬로 수행 가능하다.
책 도입부에 나온 언어별 설명을 요약한 것인데, 나는 이 책과 언어의 발전상과, 기술의 발전상, 요구 사항의 발전상이 나에게 큰 경쟁력을 가져다 줄거라고 믿고 이 책을 읽어나갔다. (물론 이런 부분에 대해 관심도 없는 면접관 혹은 회사라면 아무 가치도 없겠지만, 그건 다른 기술이나 경험도 마찬가지다.)
이미 루비스트였던 나는 당연히 루비 관련 챕터를 더 유심히 읽었는데, 마츠의 즐겁기 위한 프로그래밍, 나 역시 그렇다.
프로그래밍이 여전히 즐겁고, 내 생각과 가장 일치하는 가장 적은 공수로 즐겁게 일할 수 있는 언어는 루비였다.
반면 나머지 언어들 중 하스켈과, 얼랭, 스칼라 외에는 잘 알지 못했는데 이 기회에 대략적인 특징이라도 알 수 있어 좋았다.
특히 하스켈마저도 옛동료가 쓰고 있어서 몇번 전해들었을 뿐인, 순수 함수형 언어라는 말만 들었을 뿐 조금 더 실체화할 수 있어 좋았다.
내가 자주 들은 이야기 중 생각이 바뀐 이야기 중 하나는, 특정 언어 하나에 익숙해지면 다른 프로그래밍 언어는 일주일이면 잘 쓸 수 있다는 얘기다.
실제 사용해보니 패러다임이 아무리 비슷하다고 해도 언어의 몇가지 특징과 주력 언어와의 차이점으로 인해 잘 쓰기엔 꽤나 긴 시간, 많은 노력이 필요했다.
내가 너무 평범한 프로그래머라서 그렇다면 또 할말은 없지만, 절대 다수인 평범한 프로그래머들에게 통용되지 않는 이야기라면 바뀌어야 되는 거 아닐까?
실제로 언어의 패러다임, 특징, 제약, 확장성 등은 너무나 큰 차이다. 이런 차이가 뚜렷한 수 많은 언어를 단시간에 잘 쓰는 일은 있기 어려웠고, 내가 만난 수많은 훌륭한 프로그래머들도 시간이 꽤나 필요했다.
아마도 명필은 붓을 가리지 않는다처럼 와전된 이야기가 퍼진게 아니었을까 싶다.
이 책 자체가 7개 언어를 다루다보니 깊게 다루지 않는다.
그래서 가볍게 읽을 수 있었고, 다양한 언어에 대한 개념만큼은 빠르게 숙지 가능했던 만큼 자신의 기술 스택과 비교해서 어떠한 언어에 관심이 가는지, 어떠한 언어가 장단점에 대한 이해만으로도 큰 도움이 되는 책이 아닌가 싶다.