massa142's blog

くり返す このポリリズム

「Goならわかるシステムプログラミング」を読んだ

「Goならわかるシステムプログラミング」を読んだ。

ascii.jp

連載が終わって少したったけど、渋川さんの「Goならわかるシステムプログラミング」全20回を読み終えた。

ここでの「システムプログラミング」という言葉は以下のように定義されている。*1

そうしたウェブ関係のプログラミングとは対照的な場面でよく使われているのが、システムプログラミングという用語です。 実際、システムプログラミングとは何でしょうか? 人によって定義がいろいろ異なりますが、よく見かけるのは次のような内容を指して「システムプログラミング」という場合です。

本連載では、一番最後の「OSの提供する機能を使ったプログラミング」をシステムプログラミングの定義として話をすすめます。

また、Go言語を取り上げた理由は次のように書かれている。*2

Go言語を題材として選択したのはランタイムの奥まで気軽にのぞける言語だからです。Go言語そのものの説明が目的ではなかったため、Go言語を学ぼうと思っていなかった人にはとっつきにくい内容もあったかもしれません。 しかし、コンピュータシステムを学ぶ言語の選択肢が事実上C言語ばかりというなかで、間口を広げる貢献はできたと思います。

読んだ感想

低レイヤに疎い自分にとって、システムプログラミングを幅広くカバーしてくれたこの連載はとても勉強になった。毎回読み応えがあるボリュームで、イラスト図も多くてわかりやすかった。

またGoのコードに対する補足説明として、Pythonの話がちょくちょく出てくるのが個人的には嬉しかった。

渋川さんがTwitterでも書いてある通り、この連載がCを題材にしてたら読んでなかったと思う。タイトルにある「Goならわかる」という言葉がとてもしっくりくる。このように間口を広げてくれたことにとても感謝しています。

Go言語そのものの説明が目的ではなかったため、Go言語を学ぼうと思っていなかった人にはとっつきにくい内容もあったかもしれません。

連載の終わりに上記のように書いてあったが出てくるGoのコードは難しくないと感じたので、初学者もGoの学習を兼ねて読むこともできると思う。特に序盤の io.Writer io.Reader の解説はインターフェースの理解に役立つものだと感じた。

Real World HTTPの購入を機に「Goならわかるシステムプログラミング」を読み進めたので、この次には Real World HTTPを読みたいと思う。あと、Go言語と並列処理(3)のなかで紹介されていたオライリー並行コンピューティング技法も面白そうなので、ぜひ読んでみたい。

この連載の内容を全部理解できたわけではないけど(特にWindowsまわりの話とか)、低レイヤへの苦手意識というものはなくなったと思う。この連載で広く浅くやったことをきっかけに、もっと深く勉強したいという意欲が湧いてきている。

とにかく読んでよかったと思える素晴らしい連載だった。システムプログラミング入門教科書としてオススメです!