性能とはなにか【『効率的な Go』読書会 初回】
冬の間忙しくてできなかった読書会への参加を再開することにした。
「横浜Go読書会」とあって田舎暮らしの私としては躊躇するところではあったが主催の柴田芳樹さんより「全国から参加可能」と言っていただけたので参加することに決めた。
題材となる書籍はこれ。
- 効率的なGo ―データ指向によるGoアプリケーションの性能最適化
- Bartłomiej Płotka (著), 山口 能迪 (翻訳)
- オライリー・ジャパン 2024-02-24
- 単行本(ソフトカバー)
- 4814400535 (ASIN), 9784814400539 (EAN), 4814400535 (ISBN)
- 評価
版元で Ebook を買える。Go言語のリファレンス本ではない。フトウェア工学,プログラミング(の考え方)を学ぶ教科書的な位置づけかなぁ。
版元が O’Reilly Japan ということで PDF で購入した。
タイトルを見たとき「ついに Effective Go を冠する本が出たのか」と思ったが翻訳者の方に「“Efficient Go” だよ」と指摘していただいた恥ずかしい過去は内緒である。
普通は本を買ったら最低でも流し読みくらいをしておくものだけど,これを買った2月頃はホンマに忙しくてねぇ。 目次くらいしか眺めてなかった。 まぁ読書会で読むし,と後回しにしてたら結局初見で読書会に望むことになってしまった。 反省。
『効率的な Go』は11章で構成されていて500ページちょっとというボリューム。 読書会では読み終わるまで1年くらいかかるかなぁという見通しだった。 1回目の今回は都合で時間短めだったこともあり,序文と1章の途中まで。
読み始めた最初の感想は「講釈が長い!」だった。 Go のコードは殆ど出てこないし。
読書会のあとで後ろの章をさっくり眺めてみたが,コードは少なめで地の文章が多い。 なので,よくあるリファレンス本と思って読むと面食らうかもしれない。 どっちかというとソフトウェア工学,プログラミング(の考え方)を学ぶ教科書的な位置づけかなぁ。 その教材としてのプログラミング言語として Go が選ばれているという感じ。 実際に序文でも
と書かれている。 なので,この本の内容を Go 以外の言語で応用するにはどうすればいいか考えながら読むのも面白いかもしれない。
そういえば「訳者まえがき」には
と書かれている。 この辺も読んでおくといいかも。
では,1章の前半で刺さったフレーズをつまみ食いしてみよう。
これは個人的に
を座右の銘のひとつとしている私としては気になるフレーズである。
ちなみに https://oreil.ly/OogZF
は Wikipedia へのリンクになっていて,そのバリエーションとして
というフレーズがあって笑ってしまった。他に Donald Knuth 博士の
も紹介されていたが,これは『効率的な Go』でも言及されている。
「リスト1-5」ってのがこれ
いわゆるハンガリアン記法ってやつですな。
こういった感じにツールの助け等によってコードに対する認知負荷が変わってきているため「性能の最適化」も昔とは変わってきている,ということらしい。
じゃあ,そもそも「性能(performance)」って何? って話になる。 この辺の話が今回読んだ中で一番面白かった。
ここで性能は単にソフトウェアの機能を指すものではないというのが重要なポイント1。 日々要件が変わるソフトウェア開発においては如何にして変化をプロセスに組み込み小刻みにイテレーションを回していくかが重要になる。
故に1章の「ソフトウェア効率性が重要」という見出しになるわけだ。
…という感じで読み進めていくことになりそうだ。 次回の読書会の感想を書くかどうかはわからないけど(笑)
参考
- Go言語による並行処理
- Katherine Cox-Buday (著), 山口 能迪 (翻訳)
- オライリージャパン 2018-10-26
- 単行本(ソフトカバー)
- 4873118468 (ASIN), 9784873118468 (EAN), 4873118468 (ISBN)
- 評価
- プログラミング言語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 言語の教科書と言ってもいいだろう。