前に書いて「これ世に出したら殺される」と思って破棄した記事なんだが、ある説を読んで、「あぁー…」って納得したようなしてないような気持ちになったから公開しておく。

ある説っていうのは

非知的なプログラマのためにデザインされている (Designed for non-intelligent programmers)

っていう。

なるほどねと。つまり、Goは「事足りる」言語なのかもなぁみたいな感じぃみたいなぁ。事足りさえすれば美しいかどうかなんて関係ない。言語設計が優れているかどうかなんて誰も気にしてない。例えばウンコに向かって「何故美しくないんだ」とキレていたようなもんだ俺は。狂人かよ。

そういうこと。全ては俺の勘違い。

以下、捨てようと思った見当外れの駄文。読まないでください。

なんなんだアレ?存在価値あるか?

覚えやすい気もするけど一貫性ないし紛らわしいし良いコードを書きにくいという地獄。パラダイムというかGoの考え方を理解できていないだけかと思ったんだが、これ違うわと思った。Goには調和がない。言語設計がなんかおかしい。書かなくていいこと書かされるし書きたいことを書きたい場所に書けないし。後先考えずにノリで構文考えてんだなって思う。そのくせ変なこだわりを打ち出して、それもスベってるし気持ち悪い。

オタク的な面倒くささを持ち合わせた真面目系クズ言語。聞いたときに吐きそうになるルールがポンポン転がってる。相容れねぇー。おかしいおかしいおかしい。神経を逆なでしてくるような設計、記法。

表層で、小手先で問題を回避し、痛みを伴う現実から目をそらしている。

実装恨んで言語恨まずという言葉もあるけど(ないけど)、Goは「嫌える言語」だ。なかなか珍しいぞコレは。JavaScriptは歴史的経緯があっからしゃあないとか思うし。

新しい言語触ったときって、その言語の冴えてる部分に感動することがあるじゃない。全部丸く収まる感じ。書き手良し読み手良し世間良しの三方良し的な。「あぁ。これはキレイに書けるわ。」「これは安全だわ。」「素直に射精です。」という揺るぎない納得感。

Goはねぇ。なんか虫唾が走る。100mを12秒台で虫唾が走る。VBAを丁寧ていね丁寧にシコってる感覚に近い。

短絡的というか世間知らずというか。ぞんざいで恥知らず。高みを目指していそうで、ふとしたところで低きに流れている。パッと見で何一つ理解させようとしない構文がムカつく(というのは言いがかりかもしれない)。

しょうもない機能を持ってるんだけど「美しいものを作るとき」の機能を備えていない。少しのクソをぺちゃぺちゃ食べながら得心のゆかぬコードを書かなければならない。とてもじゃないが耐えられねぇ。俺のコミットログを残したくない。

結果のコードが読みづらくなっても許せるパターンも有る。Lispとかね。アレはアレで納得感がすごいっていうかやりたいことが理解できるし美しい。そこには哲学がある。Haskellは…ちょっと一旦更地にしたほうがいいんじゃねぇのか?記法がエグいわ。機能が出揃ったところでもう一回組み直したらもっとステキなものができるような気がする。

ふつう、動くコード書いたあとで、そのコードを疑ったり語り合ったりぶっ叩いたり抱きしめたり圧し折ったりキスしたり頬ずりしたりする段階あるじゃん。それがGoじゃ無理。ほんとに胸が…どう言えばいいんだかわからんが、サーっと血の気が引くような気持ちになった。

Goの根本を為す要素たちが、「それ本当ですか?」と聞きたくなるようなものなんです。人を惹きつけるようなものじゃないんだよ。納得感がない。その代わりに「えぇーーーこの言語を好んで使ってる人って美的感覚ゼロか?」と思わざるを、思わざるを得ねぇ事象にぶち当たるのだ。

思いたくないよそんなこと。でも思っちゃうんだからしょうがない。美しくない。筋が通ってない。不安定を感じる。気の利いたコードを書くことが出来ない。乏しいぃ。例えばこれでライブラリ書くって苦行すぎるだろ。

楽しくない。知的活動をさせてくれない。禅が無い。「あぁあ!これだ!」って抽象化に行き当たることができない。土方プログラマから言わせてみればコレは土方言語なんですよ!Googleでホントに使ってんのかこれ!俺は保守できるコードを書きたいよ!

ひとつふたつ腑に落ちない事があってもいい。あるいは、誰も見向きもしないような言語ならどうでもしてくれ。ただ…なんか、どの層かしらんが謎に持て囃されているのがチラチラ見えてきてそれが嫌だ。あのGoとかいうやつを本当に良いものだと、そう思えるのですか。ノーパソにGopherくんのステッカーを貼れるほどに好きなのですか。お前の人生それでいいのか。

そういうとこでモニョってる。

◆いいところ

やりたい放題出来ないってとこ。Hackしてる気分が一切ない。する気も起きない。綺麗には収まらないという現実に綺麗に収まってくれる。それは、初学者の甘えを許さない設計であると言い換えることもできる。というのも、初学者って言語機能の意図を容易に履き違える。アンチパターンを容易に踏み抜く。Goはそもそもそれがない。

裏を返せば、理解しやすくて使いやすく堅牢なインターフェースを自分で用意できないってことなんですけどね。

あとハードタブ固定。コレはわからんでもない。ハードタブのほうが合理的なんじゃないかとは常々思う。

そんな感じです。