브루스 테이트의 세븐 랭귀지

Posted by 엘키의 주절 주절 on August 31, 2018

(국내에선 더더욱) 마이너하지만, 컨셉이 확실해 장점이 있는 언어들의 개념을 이해시켜주는 책이었다.

루비, lo, 스칼라, 프롤로그, 얼랭, 클로저, 하스켈

7개 언어를 이야기하는데, 그 패러다임이 어떤 것인지 이해하는 데에 쉽도록 짤막하게 잘 요약되어 있었다.

  1. 루비
    • 생산성에 특화된 언어
    • 언어의 기능을 확장시켜주는 메타 프로그래밍을 통한 생산성 극대화 가능
  2. lo
    • 논란이 큰 언어.
    • 간결하고 단일한 문법을 기반으로한 동시성 지원으로 높은 생산성을 냄.
    • 독특한 메시징 시스템이 특징.
  3. 프롤로그
    • 아주 오래된 언어.
    • 하지만 극도로 강력함
  4. 스칼라
    • 자바 생태계에 함수형 패러다임을 얹은 언어.
    • 병렬 처리에 대한 장점은 있지만, 순수 함수형 언어라 부르긴 어려운 것도 사실.
  5. 얼랭
    • 동시성, 분산, 장애 방지에 특화된 언어.
  6. 클로저
    • 리스프의 변종
    • 동시성을 지원하기 위해 버저닝이란 방식을 이용해, DB와 비슷한 전략을 사용함.
    • 가장 유연한 프로그래밍 모델을 제공.
  7. 하스켈
    • 순수 함수 언어.
    • 변경 가능한 상태를 어디에서도 발견할 수 없다는 뜻.
    • 강 타이핑을 이용하기에 오류의 가능성이 낮고, 순수 함수형 언어인만큼 모든 코드는 병렬로 수행 가능하다.

책 도입부에 나온 언어별 설명을 요약한 것인데, 나는 이 책과 언어의 발전상과, 기술의 발전상, 요구 사항의 발전상이 나에게 큰 경쟁력을 가져다 줄거라고 믿고 이 책을 읽어나갔다. (물론 이런 부분에 대해 관심도 없는 면접관 혹은 회사라면 아무 가치도 없겠지만, 그건 다른 기술이나 경험도 마찬가지다.)

이미 루비스트였던 나는 당연히 루비 관련 챕터를 더 유심히 읽었는데, 마츠의 즐겁기 위한 프로그래밍, 나 역시 그렇다.

프로그래밍이 여전히 즐겁고, 내 생각과 가장 일치하는 가장 적은 공수로 즐겁게 일할 수 있는 언어는 루비였다.

반면 나머지 언어들 중 하스켈과, 얼랭, 스칼라 외에는 잘 알지 못했는데 이 기회에 대략적인 특징이라도 알 수 있어 좋았다.

특히 하스켈마저도 옛동료가 쓰고 있어서 몇번 전해들었을 뿐인, 순수 함수형 언어라는 말만 들었을 뿐 조금 더 실체화할 수 있어 좋았다.


내가 자주 들은 이야기 중 생각이 바뀐 이야기 중 하나는, 특정 언어 하나에 익숙해지면 다른 프로그래밍 언어는 일주일이면 잘 쓸 수 있다는 얘기다.

실제 사용해보니 패러다임이 아무리 비슷하다고 해도 언어의 몇가지 특징과 주력 언어와의 차이점으로 인해 잘 쓰기엔 꽤나 긴 시간, 많은 노력이 필요했다.

내가 너무 평범한 프로그래머라서 그렇다면 또 할말은 없지만, 절대 다수인 평범한 프로그래머들에게 통용되지 않는 이야기라면 바뀌어야 되는 거 아닐까?

실제로 언어의 패러다임, 특징, 제약, 확장성 등은 너무나 큰 차이다. 이런 차이가 뚜렷한 수 많은 언어를 단시간에 잘 쓰는 일은 있기 어려웠고, 내가 만난 수많은 훌륭한 프로그래머들도 시간이 꽤나 필요했다.

아마도 명필은 붓을 가리지 않는다처럼 와전된 이야기가 퍼진게 아니었을까 싶다.


이 책 자체가 7개 언어를 다루다보니 깊게 다루지 않는다.

그래서 가볍게 읽을 수 있었고, 다양한 언어에 대한 개념만큼은 빠르게 숙지 가능했던 만큼 자신의 기술 스택과 비교해서 어떠한 언어에 관심이 가는지, 어떠한 언어가 장단점에 대한 이해만으로도 큰 도움이 되는 책이 아닌가 싶다.