2021/01/12
プログラミング言語その6【Kotlin】

公式ドキュメントがむかつく、という話だけ書こうかな。

  • Why so?
  • In "clever words",
  • Why?

こういう「お前のブログじゃねえぞ?」みたいな文体と内容が出てきたり、

As we mentioned before, we stick to making things explicit in Kotlin. So,

とか適当なこと書かれてるから、機嫌悪いときだと「クラスのインスタンスを作るのにnewつけないのはexplicitなんですか?」みたいにキレちゃうわけ。実際のところKotlinの良さというのは、なにかにstick toしたりせず、現実のほうを向いてバランス良く落としどころをもたらしてる「現代のちょうどいい言語」になっているところなのだ。たぶん。(識者曰く)Scalaからの影響が明らかにあるのに現在のドキュメントからはそれが意図的に隠されているような気配があったり、他にも思いつくことがあるけど記憶に自信も無いのでこの辺にしておく。

それもこれも全部がマーケティングで、実際たぶん成功してるから、その成功の恩恵に与れているからいいじゃん、という考えもあるかもしれない。でも、これがアリなのかどうかとは別に、言語の仕様と実装を担っている人々の思想から離れたドキュメントになっている、と勝手に想像している。GitHubにWebサイトのプロジェクトがあるから今ちょっと確認してみたら、上述した表現が出てくるページの元の文章を書いたのはDeveloper Advocate的な人で、しかも7年前だった。その人が当時どういう職種だったか分からないけど、最初からちゃんとそういう人に書かせるというJetBrainsの戦略が功を奏して、その文章と相性の悪い俺のところまでプロダクトが届いたってことだろう。そしてv1.0が2016年2月15日リリースだから、その前から書かれてたんだね。

好奇心でGitHubでblameを追っていたら、上述の引用部が、2年ぐらい前にchore: remove unneeded comparisons with javaというコミットで変更される前は、

As we mentioned before, we stick to making things explicit in Kotlin. And unlike Java,

だったことに気づいた。たぶん俺これ読んでる。改善はされてきてるみたいだけど、こういう微妙な感じが随所に残ってたんだと思う。微妙というより嫌な感じだと言いたいけど、それを伝える材料が無いので控え目。

ところでmaking things explicit in Kotlinの話、もしかしたらコンパイル時間の短縮のためにそういう方針がとられてた時期があったのかもしれないな、とWikipedia見てたら思いました。

JetBrains lead Dmitry Jemerov said that most languages did not have the features they were looking for, with the exception of Scala. However, he cited the slow compilation time of Scala as a deficiency.[10] One of the stated goals of Kotlin is to compile as quickly as Java.

Scalaのこと(特にコンパイルが遅い理由は)何も知らないまま適当なことを言っているわけだから理由はもちろん妄想レベルだとして、あくまでもv1.0より以前に書かれた7年前の文章の名残であって、当時は正しかったのかもしれないなぁ。

日付
タイトル