msksgm’s blog

msksgm’s blog

Webエンジニアです。日々の勉強記録、技術書感想、美術観賞感想を投稿します。

「Goならわかるシステムプログラミング 第2版」感想

概要

Go ならわかるシステムプログラミング 第 2 版を読みました。 感想を書きます。

Goならわかるシステムプログラミング 第2版www.lambdanote.com

前提

目的

本書を読んだ背景は以下です。

事前知識

OS や低レイヤを学んだのは、以下の書籍ぐらいだったため、あまり知見がない状態でした。

Go は業務で利用したこともあり、書籍では初めての Go 言語を読んでいます。

本書自体は、Go も低レイヤの知識もほとんどないときに、読んだことがありますが、その際には理解が難しく途中でやめてしまいました。 今回は最初から読み直しました。

読了時間

写経しつつ読み進め、だいたい 10 日かからないぐらいで、15 時間から 20 時間ぐらいで読み終えました。 最初の方は写経できる部分が多かったですが、最後の方は読み物的な側面が多く、手を動かさず読むだけで、読了としました。

感想

Go を用いて、低レイヤについてとっつきやすく学べる書籍でした。 [試して理解]Linux のしくみ【増補改訂版】の内容を別の角度から学ぶことができ、理解を一段階深めることができたと考えています。 個人的には特に以下の部分が印象的でした。 割と Go そのものの内容だったのですが、低レイヤ観点から知識を学べて非常にためになりました。

  • Go 言語の特徴である平行処理の説明を通じて、同期・非同期とブロッキング・ノンブロッキングについて
  • シグナル
  • TCP の高速化手法
  • スレッド、groutine、チャネル

気になったことは、本書を読む際の前提知識です。 個人的には、本書を読む際には Go と OS 周りの基本的な知識が必要そうだと思いました。 読み進めているときに、システムプログラミング周りの内容で Go 言語そのものについて学ぶ部分も多かったので、知識ゼロだと読者が置いていかれる場合があるのではないかと思いました。 これは、自身が昔読んだときに、一度読むのをやめた経験からもきています。 そのため、本書を読む際には最低でも[試して理解]Linux のしくみ【増補改訂版】初めての Go 言語といった入門書を読むことをお勧めします。

次に関連で勉強すること

次は、ネットワーク周りの勉強をします。 以下の本を想定しています。

まとめ

OS 周りの知識を獲得するために本書を読みました。 Go を通じて、今まで読んだ読んだ書籍とは別観点で理解を深めることが良かったです。 ただし、個人的には Go と OS の知識を持った状態で読んだ方が理解を深めやすそうだと思いました。