👻

Computer Scienceを深く勉強しようと決意した

2024/08/17に公開

はじめまして

swapmanです。Qiitaから移行してきました。前までは競技プログラミング関連の投稿が多かったですが、最近は専ら開発の勉強をしています。26卒理系院生です。この記事はZenn初投稿です。

ずっと心にあった違和感

僕は2024年の3-4月ごろからスタートアップ企業のほうで長期インターンをさせてもらっています。
そのインターンではReactやecho、GithubActionsやGCSなど割とモダンなテックスタックを触らせてもらっており、始める前と比べて大きく成長できました。
でも、どうしてもコンピュータのことが深くわかっている感じがしませんでした。プログラムを実行してから終了するまで、何が起こっているのかを詳細に説明することができません。でもタスクを終わらせることはできるんです。公式ドキュメントを読んで必要なパラメータやライブラリのコンセプトを理解し、実装することはできるんです。でもコンピュータが何なのかがわからないんです。

サマーインターンで大きな気づきがあった

26卒なので今年は結構インターンに参加します。その一環で社名は伏せますが、7月中旬からS社でバックエンドエンジニアとしてインターンをさせていただきました。インターン中にたくさんの経験豊富なエンジニアの方とお会いして直接ランチしたり、1on1していただく機会がありました。
そのなかで、お強いエンジニアの方が口を揃えていうことは「コンピュータ・サイエンスの古典を勉強しなさい。古典を腰を据えて勉強すれば新しい技術が何を解決したかが詳細に見えるようになる。」
ってなわけでやるかぁって感じです。

で、何すんの?

具体的にはこれらの本を読みます。結構スパンは長いとおもいます。どれも世界的な名著ですし難解なので。読んだだけでは忘れるのでアウトプットして残そうぜというわけです。

  1. コンピュータ・システム プログラマの視点から
  2. SICP
  3. Operating Systems: Three Easy Pieces
  4. データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理
  5. Compilers: Principles, Techniques, and Tools

まずは1番からやっていきます。

Discussion