癒しがほしい

猫並みにゆるく生きています

3月に読んだ本・読みかけの本

3月は一時的にニートであったので、読書なり運動なりと健康的な生活を数年ぶりに送っていた。 主に競プロをしたりボルダリングに行ったりしていたわけだが、23年度新卒ということもあり、入門的な技術書を読み漁ってみた。 本稿では簡単に感想を述べたいと思う。

まずは読了したものから。

マスタリング TCP/IP 入門編

研究室にあったのを借りて読んだ。確か第4版だったと思う。 動機としては、入社後すぐに若干ネットワークの業務が発生しそうだったので、入社前にプロトコルの概要を思い出しておきたったところが大きい。

この「マスタリング TCP/IP」シリーズは入門編に始まり、応用編・情報セキュリティ編など様々な角度からネットワークプロトコルについて解説している。 入門編の前半ではOSI参照モデルを始めとして、後半ではIPやTCPUDPなどのプロトコルの概要を中心に説明している。 ルーティングに関しては大学の講義で扱っていた記憶が微かにあったが、正直忘れていたので読み直してよかった。

試して理解 Linuxの仕組み

増補改訂版が2023/04現在販売されいてるが、筆者が呼んだのは初版である。 Linux関連の知識整理を行うために読んだ。そのためサンプルコードはあまり実行していないが、一部の章についてはちょこちょこ動かして挙動を確認してみたりした。

内容は広く浅くといった印象でユーザモード・カーネルモードの存在やプロセス管理、メモリ管理、キャッシュ、ファイルシステムといったトピックについて扱っていた。 特に初めて知ったようなトピックはなかったが、プロセススケジューリングについて自分で実験しながら事象を確認できたのは面白かった。 また、図解がすばらしく分かりやすかった。内容より読者に分かりやすい説明をするにはどうしたらよいか、という点で学びになった。

並行プログラミング入門

並行プログラミング、と言われていまいちパッと来なかったが、要は同期・非同期処理をどうプログラミングしますか、というトピックについて扱った書籍である。 特徴はサンプルコードをほぼRustをつかって説明している点であろうか(一部C言語アセンブリ言語を用いている)。 筆者はRustを少しかじった程度であるが、初学者でも処理の内容を追える程度のサンプルコードであり、都度補足がなされているため、コードを読む点において難儀することは多くないと思われる。 内容を見渡すと大学院のシステムプログラミングの講義で扱ったものと重複している部分がほとんどであったため、良い復習となった。 具体的にはpthread、アトミック処理、ロック、ミューテックス、条件変数、セマフォデッドロック、非同期プログラミング(select、epoll、async/await)などである。 写経は今回行っていなかったが、サンプルコードを答え合わせとして使って、自分で実装を行ってみたいと思う。


以下読みかけの書籍である。

プログラミングコンテストチャレンジブック

競技プログラミングを再開したので、復習がてら読み直している。意外と忘れていることも多かったため非常に参考になった。 また、最近は Typical 90 の問題をよく解いているのだが、この本の後半の内容が出題されていたりするため、新しいアルゴリズムを学ぶいい機会になっている。 GCJ の問題など実施できていないものも多くあるので、継続して読んでいきたい。

プログラマのための文字コード技術入門

BOOKOFFで400円ほどで売っていて、なおかつ触れてこなかった技術だったので興味本位で買って読んでいる。 気づいたら4月になっていたので、3月中に読み切れなかったが、研修中の休み時間や寝る前に読み進めている。 文字コードの歴史を含めて日本語を中心に文字コードについて解説されている。 個人的にはなぜこんなにも文字コードは複雑なんだ?と疑問に思うところはあったので、歴史的な背景は承知しつつも、それを追うことができたのは有意義だった。

4月の予定

以下積読である。できれば4月中に読みたいが、恐らくそうならない(研修中に別の本を読む必要がある)ので気長に読むことにする。

  • プログラマのための文字コード技術入門
  • 効果検証入門
  • ゼロからOS入門(昔に読みさしていた)
  • リアルタイムOSを出発して組み込みソフトウェアエンジニアを極める(優先度低め)
  • HACKING:美しき策謀 脆弱性攻撃の理論と実際