2024-08-01

なぜ「低レイヤを知りたい人のためのCコンパイラ作成入門」を勉強会の題材として実践するのか

TL;DR

コンパイラ作成は楽しいから

記事を書くことになった理由

THEHUBという会社でエンジニアリング勉強会として週に1度、1時間 低レイヤを知りたい人のためのCコンパイラ作成入門 を業務時間に進めていく活動を始めた

そこで講師をしているが、なんでエンジニアリング勉強会を開催しているか、題材としてコンパイラ作成入門を選んだかなどを記しておく

エンジニアリング勉強なので、参加者はエンジニアだけじゃなく事業開発メンバーもWSLで参加している

なんでエンジニアリング勉強会を開催するのか

  1. エンジニアとしてこの先生き残るための術を身につけるとbetter
  2. 人に教えることで自分の理解度を高めたい
  3. 仲間がいれば長く続けられるのでbetter

エンジニアとしてこの先生き残るための術を身につけるとbetter

偉大なるt-wada氏がすべてを説明してくれている最強の資料があるのでそちらをどうぞ

Embedded content: https://speakerdeck.com/rtechkouhou/enziniatositekofalsexian-sheng-kifalsekorutameni

仕事に追われるときこりのジレンマしていってしまうので、仕事としてきこりのジレンマを打破していこう

人に教えることで自分の理解度を高めたい

人に教えると自分の理解度も飛躍的に高まるのでおすすめです

自分が知らないことをよく知っている人に教えてもらうという方針で勉強会やってたりするコミュニティもあった気がするのでおすすめです

仲間がいれば長く続けられるのでbetter

現代では娯楽がいっぱいあるので1人だと誘惑に負けてしまう、人間なので

しかし、1人でも続けるのが大変なことも一緒に実践する仲間がいれば続けられる!

とか思っていたら、Vimのプラグイン開発者のShougoさんがちょうどタイムリーな投稿をしていたので引用

Embedded content: https://x.com/ShougoMatsu/status/1821111963113681404

もちろん、1人でもできる人は1人でやってもOK

なんでCコンパイラ作成入門なのか

  1. コンパイラ作成は楽しい
  2. 技術選定の審美眼が身につくとbetter
  3. システム開発のやり方が身につくとbetter
  4. 良い記事なので布教したい

コンパイラ作成は楽しい

コンパイラ作成は大変楽しい作業です。最初のころはバカバカしいくらい単純なことしかできなかった自作言語が、開発を続けていくとたちまちのうちに自分でも驚くくらいC言語っぽく成長していって、まるで魔法のようにうまく動くようになります。実際に開発をしてみると、その時点でうまくコンパイルできるとは思えない大きめのテストコードがエラーなしにコンパイルできて、完全に正しく動くことに驚くことがよくあります。そういうコードはコンパイル結果のアセンブリを見ても自分ではすぐには理解できません。時折、自作のコンパイラが作者である自分を超える知性を持っているように感じることすらあります。コンパイラは仕組みがわかっていても、どことなく、なぜここまでうまく動くのか不思議な感じがするプログラムです。きっとあなたもその魅力に夢中になることでしょう。

低レイヤを知りたい人のためのCコンパイラ作成入門: はじめに より引用

実際にやってみると人類の叡智と歴史を感じられて本当に楽しかった

技術選定の審美眼が身につくとbetter

またもやt-wada氏がすべてを説明してくれている最強の資料があるのでそちらをどうぞ

Embedded content: https://speakerdeck.com/twada/understanding-the-spiral-of-technologies-2023-edition

技術の流行り廃りは色々あるが、根本の動作原理は今でも変わっておらず、その技術は当然Webシステム開発にも役に立つ

システム開発のやり方が身につくとbetter

また、この本は、大きなプログラムを1から書くにはどうすればよいのかということを説明している本でもあります。大きなプログラムを作るスキルというのは、データ構造やアルゴリズムを学ぶのとはまた違った一種独特のスキルなのですが、そういったものを解説している本はあまりないように思います。また、仮に解説してもらっても、実際に体験してみなければ、開発手法の良し悪しというものはよくわからないものです。本書は、自作言語をC言語に育てていくプロセスが、一つの良い開発手法の実体験になるようにデザインされています。

低レイヤを知りたい人のためのCコンパイラ作成入門: はじめに より引用

これは当然大きなWebシステム開発にも適用できるし、もっと言えばすべての仕事にも当てはまる

良い記事なので布教したい

これが推しを布教する心なんだと理解できる

蛇足

木こりのジレンマを打破するためにやれることはいっぱいあるが、仕事として一番触れている時間が長くて楽しいのはプログラミング言語作成かと思い、それをやることにした

自分は crafting interpreters をやってから 低レイヤを知りたい人のためのCコンパイラ作成入門 をやった

このときの経験はどちらも良かったが、Cコンパイラ作成の方が直接的にパソコンの動作理解に役に立ったので今回はそっちをやることにした

crafting interpretersも良い記事なので興味があればぜひやってほしい

おしまい