왜 많은 사람들이 Go 언어를 싫어할까?
Why Everyone Hates Go · npf.io를 읽고 인상에 남은 점을 정리해 봅니다.
제가 좋아하는 Paul Graham님의 문장이 인용되어 있습니다. “people can never have a fruitful argument about something that’s part of their identity”. 번역하면 “사람들은 자신의 identity의 일부에 대한 논의를 fruitful하게 할 수 없다"입니다. 자신과 가까운 주제일수록, 반응은 논리적이기보다 감정적이게 된다는 뜻입니다.
Kathy Sierra님의 말도 인용됩니다. “the hate wasn’t so much about the product/brand but that other people were falling for it”. 우리말로 옮기면 “다른 사람들이 빠져 있는 제품 혹은 브랜드에 대한 증오는 커진다” 정도입니다.
본문에는 Koolaid-point라는 말도 등장합니다. Kathy Sierra님이 쓴 Trouble at the Koolaid Point — Serious Pony와 Kool-Aid를 마신다 항목을 참고하면 좋습니다. 어떤 주장이나 철학을 무비판적으로 받아들이고 신봉한다는 의미인 듯합니다.
Go는 최근 40년 동안의 프로그래밍 언어 연구를 던져 버린 유일한 언어라고 표현됩니다. Clojure, Scala, Rust가 걸어간 방향과는 다른 길입니다.
Go에 없는 것들을 원문에서는 다음과 같이 열거하고 있습니다. There is no pattern matching, there’s no borrowing(보로잉이 뭔지는 잘 모르겠습니다), there’s no pure functional programming, there’s no immutable variables, there’s no option types, there’s no exceptions, there’s no classes, there’s no generics 등입니다.
Go를 심하게 비판하는 사람들은 주로 Haskell, Rust, Scala 같은 ML 계열 언어를 사용하는 사람들입니다. 그들은 프로그래밍 언어와 자신의 identity를 묶어 버렸습니다. 많은 사람들이 Go 언어를 쓰고 좋아할수록, 그만큼 자신의 언어 선택이 잘못된 것이라고, 결국은 자기 자신의 잘못으로 느끼게 된다는 것입니다. 이것이 많은 사람들이 Go 언어를 싫어하는 이유라는 주장이고, 이 한 문장으로 글 전체를 요약할 수 있습니다.
공식적으로 표명하지는 않지만, Go 언어의 철학은 simplicity(단순함)과 pragmatism(실용성)입니다. 이 철학이 모든 것의 상위에 있습니다. 코드의 정확성을 높여 준다면 언어의 복잡성이 올라가도 괜찮다고 보는 ML 계열의 언어와 정반대 방향입니다.