🖥

なぜパタヘネ本を読んだ(≒コンピュータアーキテクチャを学んだ)のか

2024/03/06に公開

パタヘネ本読んだよ

これの上下巻読んだ。ゆっくり読んでたのもあるが、8ヶ月かかった。
コンピュータの構成と設計 MIPS Edition 第6版 上
コンピュータの構成と設計 MIPS Edition 第6版 下

情報系の授業で使われることも多いそう。
トピックとしては以下。

  • アセンブラ
  • 算術演算
  • プロセッサのデータパス
  • 記憶階層(メモリやキャッシュ)
  • 並列プロセッサ

筆者の前提

  • 工学系であるが、情報系卒ではない。
  • エンジニア歴3年
  • 現業務・過去の経験共に、開発が中心。インフラはそこまで触っているわけではない
    • ただしterraform書いたり、Datadogのダッシュボードを見たり、AWS触ったりという最低限のことはしてる

なぜこれを読んだのか & 課題

「なぜパタヘネ本を読んでる(読んだ)の?」と聞かれることが多かったので、以下のように言語化しておくことにした。

実は「WEBアプリケーションを書くエンジニアには、こういう低レイヤの知識は不要」と思ってた派閥だった。
しかし、これからエンジニアとして成長していく上で、普通に壁を感じた。具体的には以下。

AWS何も分からん

AWSのSAAを受け、辛うじて合格はしたが、そもそも基本的なことが分かってないことを認識した。

  • インスタンスの種類がどう違うのかが全然理解できない
  • スループット最適化とは? IOPSが高ければ良いんじゃないの?
  • Auroraの説明を見ても何も理解できない
  • というか実はCPUとメモリとストレージの違いが分かってないよ

並行処理何も分からん

業務で並行処理を扱う機会があった。
Go言語による並行処理を読み始めたが、何を言ってるか全然理解できない。

  • そもそも並行でプロセッサが動いているってどういう状態?
  • OSのスレッドって何やねん
  • CSPの説明聞いてもピンとこない

Rust何も分からん

興味本意でRustを触ってみた。
しかし、なぜこういう設計になっているのかが理解できなかった。

  • そもそも所有権という概念があると何が嬉しいのかさっぱり分からない。
  • ヒープ領域とか、スタック領域とか、データ領域とか、何?
  • 文字列と数値ってなんか違うものなの?

共通していたこと、結論

いろんな壁に当たった過程で、コンピュータ自体に対する理解が浅すぎると気付いた。
そこで、コンピュータというものを、ちゃんと勉強しようと判断した。

Discussion