30歳からのプログラミング

30歳無職から独学でプログラミングを開始した人間の記録。

『なるほどUnixプロセス―Rubyで学ぶUnixの基礎』を読んだ

Unix プロセスとはどのようなもので、どのような特徴を持つのか、平易な文章と簡潔なコードを使って解説していく一冊。

tatsu-zine.com

プロセスID、プロセスの親子関係、標準ストリームといった、プロセスに関する基本的な概念について説明していきながら、プロセスに対する理解を深めていく。

あくまでも入門的な内容だから、ということもあるだろうけど、とにかく読みやすい。
各章が短いので少しずつ読み進めていくことができるし、本書全体も 100 ページ超なので、気付いたら読み終えていた。

実際にコードを実行して確認できるのもいい。
forkで子プロセスを作ってそのpidppidを確認したり、forkが値を 2 回返すことを確認したり、シグナルを送ってプロセスを終了させることができることを確認したり、といったことを繰り返していくことで、理解が深まっていく。
環境構築が簡単なのもよい。Unix 系の OS で、ターミナルと Ruby さえあればいい。Mac だったら、何もしなくても揃っているのではないだろうか。

ただ残念ながら Spyglass を動かすことはできなかった。
Spyglass とは本書のために書かれたウェブサーバで、付録としてついてくる。ウェブサーバとして機能させるためにプロセスがどのように動いているのかを知り、理解を深めることを目的としている。
ネット上の情報も参考にしながらビルドを試みたが、上手くいかなかった。原書が出版されたのはかなり昔のようなので、仕方ないかもしれないが。

本文中に出てくるコードが簡潔なのも素晴らしい。
主題とは無関係な記述が多くサンプルコードが冗長になってしまっている事象を見かけるが、本書ではそのようなことはない。
どのコードもシンプルさを保っており、ほとんどのサンプルコードが 10 行以内に収まっている。
そのため、Ruby を全く知らなくても、何をしているのか概ね理解できる気がする。今なら ChatGPT に聞いてもいいわけだし。

そしてもちろん、本書の説明そのものが分かりやすい。
私のような初学者でも理解できるように、とても丁寧に説明されている。著者が文章が上手いというのもあるだろうし、それが自然に翻訳されているというのもある。訳書にありがちな読みづらさは全くなかった。
専門書を母国語で読めるのは本当にありがたい。いろんなニュースを見ていると、訳書に限らず専門書の出版は難しくなっているようだけど、何とか頑張って欲しい。

以下は訳者の一人が執筆された記事なのだが、この記事自体もかなり分かりやすい。
本書の一部を抜粋したような内容なので、これを読むと本書の雰囲気を掴めると思う。

magazine.rubyist.net

『Software Design 2023年4月号』の「x86やArmって何? 一度は学んでおきたいCPUのしくみ」を読んだ

CPU について学ぶ初歩的な教材としてよさそうと思い、手に取った。
期待した通り、平易な内容で程よくコンパクトにまとまっており、読みやすかった。

gihyo.jp

CPU はレジスタや ALU から構成されること、CPU は01で構成される機械語しか理解できないため高水準言語も最終的には機械語に変換されること、などの初歩的な内容から始まり、命令セットアーキテクチャやマイクロアーキテクチャの話、CPU の性能を引き出すための工夫、などについても扱っている。

既に一定以上の知識を持っている人にとっては物足りない内容かもしれないが、少なくとも自分は読んでよかった。
なんとなくぼんやり理解していたことについて確認したり、曖昧だった部分を整理したりすることが出来た。
例えば、x86 や Arm が CPU の種類を表現する何かだということは分かっていたが、それが「命令セットアーキテクチャ」というもののことだと初めて知ったし、 Apple の M シリーズは Arm であることや、RISC-V という新興の命令セットアーキテクチャが注目されていることなどを知れた。CISC と RISC という分類も初めて知った。

ハードウェアや低レイヤーの書籍は行間が広いというか、「これくらい知ってるだろ、知っていてくれ」と説明が省略されていることが多い印象があるが、本特集はそういう部分がほとんどなくて読みやすかった。

コンピュータや CPU の仕組みに関心があるけど敷居が高くて何から学べばいいか分からない、という人におすすめ。