1

프로그래머라면 '언어는 중요한게 아니야'라는 맥락의 말을 한번쯤은 들어봤을지도 모른다. 나 역시도 언어 자체보다는 그 언어가 지닌 철학을 이해하는 것이 더 중요하다고 본다. 하지만 역설적으로 '언어는 중요한게 아니야'라고 말하는 사람들은 어떤 한 언어의 철학도 이해하지 못한 경우가 많았다. 언어가 지닌 철학이 언어보다 중요할 뿐이지 언어가 안중요한건 아니기 때문이다. 비슷해 보이는 언어라도 문제를 해결하는 방법이나 언어가 추구하는 목적이 꽤 다르다. 그리고 그런 고민이나 철학을 이해하는 것 역시 언어를 배우는 과정이다. 그런 과정을 한번이라도 제대로 겪어본 사람이라면 '언어는 중요하지 않다'라고 말할 수 없을 것이다.


2

Elm의 문서를 읽고 있다. Elm에서 view의 타입은 Model -> Html Msg인데, Flux 개념이나 그 구현체인 Redux 등에서 전역상태를 어떻게 관리하는지 알고있는 사람이라면, 타입만 보고도 대충 어떤 느낌인지 이해할 수 있을 것이다. (애시당초 Redux가 Elm의 영향을 받아 만들어진 것이니 정확히 말하면 순서가 반대이다)

view는 다른 함수들을 조합해서 구성할 수도 있는데, 코드로 하면 아래와 같다.

view : Model -> Html Msg
view model = div [] [ header model
                    , content model
                    ]

header : Model -> Html Msg
header model = ...

content : Model -> Html Msg
content model = ...

위의 코드는 아무런 문제가 없어보이지만, 하스켈을 공부한 사람이라면 model 인자를 모든 함수에 전달하는 것이 상당히 신경쓰일 수 있다. 하스켈에서는 위와 같은 경우 (->) Model을 리더 모나드로 만들고, do문을 이용해서 중복된 model 인자를 없앨 수 있다. 하지만 Elm은 하스켈의 영향을 받았음에도 불구하고 모나드 문법 자체가 없다. Elm에 있어서는 웹 어플리케이션을 효율적으로 구성하는 방법론이 더 중요하다. Elm은 모나드 문법을 도입해서 생기는 러닝커브(혹은 그로 인한 모나드 튜토리얼 수의 증가)를 피하는 방향을 택했다. 나는 이것이 꽤 좋은 생각인 것 같다.


3

인터넷을 돌아다니다 보면 자바스크립트를 조롱하는 글들을 가끔 보게되는데, 자바스크립터로서 몇가지 반박을 생각해보았다.

  1. ==의 멍청함을 실제로 느낄 일은 없다. 타입 안전한 ===가 있기 때문에 ==를 쓰는 일이 없기 때문이다. 이는 린터를 통해 100% 강제가 가능하다.
  2. 암묵적 형변환의 멍청함 역시 실제로 느낄 일은 없다. 그런 경우를 린터를 통해 사전에 차단할 수 있다.
  3. 라이브러리가 작고 많은 것은 자바스크립트의 OSS를 건강하게 만들고, 유저들의 선택지와 자유도를 높인다. 적어도 같은 프로젝트가 몇년째 똑같이 GitHub 상위권을 차지하고 있는 언어보다는 건강할 것이다.
  4. 툴링 문제는 자정작용을 통해 빠른 속도로 나아지고 있다.
  5. 콜백 지옥은 async/await문법이 있는 지금으로선 이미 옛날이야기이다.
  6. ...

하지만 위와 같은 생각들을 하고있자니, 굳이 반박을 할 필요가 없다는 생각이 들었다. 애초에 조롱의 대부분은 그냥 유머일 뿐이며, 진지하게 받아들일 필요가 없다. 자바스크립트의 언어 설계에 결함이 있는 것은 알고 있지만, 새로운 ECMA 표준과 커뮤니티 프로젝트들의 도움으로 현재진행형으로 나아지고 있다. 시간이 지남에 따라 자바스크립트에 대한 인식이 좀 더 좋아지기를 희망한다.