Go言語に待望のジェネリクス対応コンテナライブラリが来るか?公式提案を解説
Golang proposal: container/: generic collection types
Golang proposal: container/: generic collection types
Go言語の公式リポジトリに、ジェネリクスを活用したコンテナ型(collection types)を導入するという新たな提案(proposal)が上がっています。これが実現すれば、これまでスライス操作のたびに書いていた面倒なボイラープレートコードから解放され、より安全で再利用性の高いコードが書けるようになるかもしれません。今後の動向に注目です。
GoはGuy Steeleの「Growing a Language」で語られた教訓を、第一原理から再発見している感じだね。ペースはだいぶゆっくりだけど:https://youtu.be/_ahvzDzKdB0?is=qZdfiT3792XyHxSJ
この追加は嬉しい反面、ジェネリクスを今のまま言語に組み込むのがベストな選択じゃないってことが明白になってきてる気がする。Go v2で、今のコードからの移行や相互運用性を維持しつつ、もっと根本的なレベルで解決してくれることを期待したい。
まあ、遅すぎることはないよね。セットや型付きヒープみたいな機能は待ち望まれていたものだし。この10年以内にはdatabase/sqlの結果に対するイテレータAPIも追加されるかもね(sqlxに投げた俺のプルリクみたいなやつ https://github.com/jmoiron/sqlx/pull/990 だけど、もうちょっと洗練された感じで)
G2EEが仕様としてリリースされるのを楽しみにしてるよ /s
いやー、ようやくか!ミューテーションメソッドを混ぜてほしくはないけど、まあ仕方ないね。
正直、これを見れば見るほどGolangが嫌いになってくる。ジェネリクスは言語に追加された最悪のものだよ。ライブラリ開発者にとっては楽になるかもしれないけど、普通のコードを書くには難しくなってるだけ。
Golangの最大の問題は、ある特定の会社のことだろ。
最初は「ジェネリクスは追加しない」って断固として主張してたよね。その決定を必死に正当化して、開発者たちはジェネリクスなしで頑張るために無理を重ねてきた。Rob Pikeの決断を擁護する長文ブログを書く奴もいれば、反対意見を書く奴もいた。結局、今になってGolangチームが追加するなんてさ。なんであんなに開発者の時間を無駄にしたんだろう?数ヶ月の話じゃない、何年もだよ。この業界って本当にお笑い種だね。
Goは一歩ずつ、他の言語が過去20年かけて学んできた苦い教訓を今になって学んでいるんだね。全力を尽くした結果、結局みんなと同じような仕様に行き着いているという事実は、現状維持の肯定という意味で逆に面白い。