『効率的な Go』読書会 2回目

no extension

今日は読書会の日。

というわけで,前回に引き続き『効率的な Go』の話を。 今回は第2章の真ん中辺りまで読んだので「第2章 効率的な Go 入門」の感想を書いてみる。

これから Go について調べたい。 あるいは「Go ってどがぁな言語?」って方がいたらこの第2章だけ立ち読みするってのも手かも知れない。 Go を礼賛するフレーズが多いが,苦手とする部分もきっちり言及してるし参考にはなると思う。 例示されているコードは少なめ且つ簡単なので「Go なにもわからない」って方も取り敢えず大丈夫。

以下,個人的に面白いと思ったフレーズを抜き出しててみよう。

指針となった原則は、安全性と繰り返しの少なさを引き換えにせず、よりシンプルなコードを可能にする言語を作ることでした。
GoogleはいまだにGoを管理する唯一の企業であり、Goに対する最後の決定的な支配権を持っています。たとえ誰もが修正、使用、貢献できるとしても、単一のベンダーによって調整されたプロジェクトは、再ライセンスや特定の機能のブロックなど、身勝手で有害な決定を下す危険性があります
「gofmt のスタイルは誰の好みでもないが、gofmt はみんなの好みである( Gofmt’s style is no one’s favorite, yet gofmt is everyone’s favorite. )」
標準ライブラリの設計を通じて、依存関係を制御することに多大な努力が払われました。1つの機能のために大きなライブラリを引っ張ってくるよりも、少しのコードをコピーするほうが良い場合があります(システムビルドのテストでは、新しいコアの依存関係が発生すると文句を言われます)。依存関係の衛生管理は、コードの再利用に優先します。
繰り返しになりますが、効率を考慮すると、依存関係と透明性における潜在的なミニマリズムは、非常に大きな価値をもたらします。未知なものが少ないということは、主要なボトルネックをすばやく検出し、もっとも重要な価値のある最適化にまず注力できることを意味します。私たちは、依存関係に最適化の余地があることに気づいても、それを回避する必要はないのです。そのかわり、私たちは通常、その修正を直接アップストリームに貢献することが歓迎されます。これは両者にとって有益なことです!
Goは、エラーを第一級市民の言語機能として扱うことで、独自の道を歩んでいます。信頼できるソフトウェアを書きたいと仮定して、エラー処理を明示的に、簡単に、そしてライブラリやインターフェイスにわたって統一的に行うのです。
もうひとつよくある不満は、Goを書くと非常に「悲観的」になるということです。なぜなら、決して起こらないかもしれないエラーが、目に見える形で現れるからです。

以下は読書会では未読だけど面白かったので。

1960 年、米国と欧州のプログラミング言語専門家が手を組み、Algol60 が誕生しました。1970 年、Algol のツリーはCとPascal の2 つのブランチに分かれました。約 40 年後、この2 つの枝はGoで再び合流しました。

Robert Griesemer, The Evolution of Go (https://oreil.ly/a4V1e)

効率という点では、Go にはアキレス腱があります。「5.5 Goのメモリ管理」で学ぶように、メモリ使用量はときに制御しにくいことがあります。プログラム中の割り当ては(特に新しいユーザーにとっては)驚くようなもので、ガベージコレクションの自動メモリ解放処理にはオーバーヘッドや偶発的な動作があります。特にデータ指向(data-intensive)のアプリケーションでは、メモリやCPU の効率を確保するために、メモリ容量が厳しく制限されているマシン(IoT など)と同様に努力が必要です。

と,まぁ,こんな感じかな。 多少は雰囲気が伝わるだろうか。

そういえば Go 処理系のバリエーションとして TinyGo は知ってたけど GoBot は知らんかった。 いや Mastodon の TL で見かけたかな。 いわゆる IoT で Go 処理系を考えているならこの辺も視野に入れたほうがいいだろう。

今回はここまで。 次回も感想を書くかどうかは分からない。

ブックマーク

参考

photo
効率的なGo ―データ指向によるGoアプリケーションの性能最適化
Bartłomiej Płotka (著), 山口 能迪 (翻訳)
オライリー・ジャパン 2024-02-24
単行本(ソフトカバー)
4814400535 (ASIN), 9784814400539 (EAN), 4814400535 (ISBN)
評価     

版元で Ebook を買える。Go言語のリファレンス本ではない。フトウェア工学,プログラミング(の考え方)を学ぶ教科書的な位置づけかなぁ。

reviewed by Spiegel on 2024-04-21 (powered by PA-APIv5)

photo
プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)
丸善出版 2016-06-20
単行本(ソフトカバー)
4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN), 9784621300251 (ISBN)
評価     

著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。

reviewed by Spiegel on 2016-07-13 (powered by PA-APIv5)

photo
基礎から学ぶ TinyGoの組込み開発
高砂正哲 (著)
C&R研究所 2022-11-12
単行本(ソフトカバー)
4863544006 (ASIN), 9784863544000 (EAN), 4863544006 (ISBN)
評価     

本の森.jp で PDF 版を購入。ハンズオン的な内容らしい。実は Wio Terminal を買ったまま放置プレイ中なので,楽しみにしている。

reviewed by Spiegel on 2022-11-12 (powered by PA-APIv5)