プログラミング言語のコンパイラを作ってみよう

オンライン

四則演算の式を受け取ってCPUの命令を出力する、オリジナルのコンパイラを実装します

こんなことを学びます

<こんなことが体験出来ます>
四則演算の式を表す文字列を受け取り、機械語(正確に言えばx86-64やAArch64のアセンブリ言語)へと変換するコンパイラを作ります。「Hello, world」だけでは味わえない、文字列処理を多用するプログラミングを体験できます。主としてC言語を用いた講義を想定していますが、PythonやRustでも対応可能です。

<コンパイラって何?>
コンパイラは入力された文書を別の文書へと翻訳するものの総称で、現代のコンピュータシステムを支える重要な要素です。例えば、gccというコンパイラ(正解的に有名なCコンパイラ)にC言語で書かれたソースコードを与えると、CPUが理解可能な機械語のソースコードに翻訳して出力されます。世の中にはプログラミング言語やCPUの種類に応じた多様なコンパイラが存在します。

<四則演算って何?>
+、-、×、÷を使った計算式のことです。例えば「2+3×4」は四則演算の式ですね。パソコンに搭載されたCPUにとって、このような文字列は計算可能ではありません。コンパイラに四則演算の式を入力し、CPUが処理できる機械語へと翻訳する必要があります。

<こんな風に教えます>
1人か2人くらいの少人数制で、各々のレベルに合わせて指導します。コンパイラの実装にはバグがつきものです。生徒の画面を共有してもらいながら、バグ発見のお手伝いや具体的な操作の指導も行います。

<このレッスンで得られるもの>
入力された文字列を別の文字列へ翻訳するというコンパイラの基本原理を学べます。また、プログラミング言語を用いた文字列処理の基礎が分かります。それらの知識は、コンピュータがどうやって動いているのかを知る足がかりとなります。

作業はmacやLinux(WindowsならWSL)のターミナルを用いて行いますので、コマンド操作についてもある程度経験できます。具体的にはcd、ls、rmなどのコマンドを使います。

<定員>
1名~2名
続きを読む

開催日程がありません

開催予定エリアオンライン

価格(税込)¥8,000

現在は開催リクエストを受け付けていません
受けたい
5人が受けたい登録しています

オンライン受講日程

開催日程はありません。

オンライン受講料に含まれるもの

受講料には講義代金が含まれます。

受講料には生徒が受講に必要な設備を整える費用は含まれません。
例えば次のような費用は含まれません。
・パソコンを調達する費用
・インターネット接続の費用

この講義はパソコンとインターネット環境さえあれば十分です。
特別な装置や材料などは不要ですので、それらの費用がかかる心配はありません。
プログラミングに用いるソフトウェアも無料で揃えることが可能です。

この講座の先生

ソフトウェアエンジニア

2014年に東京工業大学 情報工学専攻を修士で卒業、サイボウズ株式会社に入社。SREとしてデータセンタ用ミドルウェアの開発運用を6年間経験しました。

本業の傍ら、2016年からセキュリティ・キャンプ全国大会で講師を務めています。また、2018年~2021年に特任助教として大学院でソフトウェア開発の演習講義を担当しました。YouTubeに大学院の講義動画があります→ https://www.youtube.com/watch?v=WMIiPcgGC4Q

2020年にサイボウズ・ラボ株式会社へ転籍。教育用OS「MikanOS」を開発し、解説...
+続きを読む

当日の流れとタイムスケジュール

<所要時間>
2時間程度

<当日の講義の流れ>
30分 整数1つの認識に対応したコンパイラの作成
30分 加減算に対応させる
60分 再帰下降パーサーと乗除算

<講義スタイル>
講義の後に演習を行う、というの数セット繰り返します。講義ではその次の演習に必要となる事柄を説明し、演習ではその知識を生かして実際にプログラミングを行っていただきます。各段階の目標に到達したら次の段階へと進みます。

受講者さんのスキルや興味の違いなどにより進み具合が変化します。講義は2時間とし、時間内に進めるところまで進みます。2時間経った時点で、もし最後まで進めていなくても講義を終了させていただきます。
続きを読む

こんな方を対象としています

・何らかのプログラミング言語の文法は学んだので、次は大きなソフトウェアの作り方を知りたいと思っている方
・コンピュータがなぜ動くのか、仕組みに興味がある方
・x86-64やAArch64といったCPUのアセンブリ言語に触れてみたい方
・Cコンパイラを自作してみたい方
続きを読む

受講する際は以下をお読み下さい

<講義内容を満たせない可能性について>
この講義はターミナルでの作業やプログラミングを伴うため、講義の進み具合は受講者のスキルに大きく影響を受けます。そのため「教える内容」に書かれたことを全て達成することが出来ない可能性が十分にあります。その点をあらかじめご了承ください。

ただ、どんなスキルの方であっても何か得るものが有るように指導を工夫します。例えば、プログラミング経験が一切無ければきっと想定通りの講義内容にはならないでしょう。そのような場合でもコンピュータが動く仕組みを講義することで普段のパソコンの使い方では味わえない、深い分野の知識を得ることはできましょう。逆に、実は過去に四則演算用コンパイラ程度は作ったことがあるという場合は、変数代入や関数呼び出しなどに対応する方法を講義いたします。

<事前に準備してあると良いもの>
これらを準備してあるとスムーズに講義を進めることができ、結果として「教える内容」を十分に満たせる可能性が高くなります。逆に、準備が不十分であれば講義の中で足りないものの準備を含めて指導することになり、「教える内容」は満たせなくなってしまいます。

・ターミナル環境
 ・macやLinuxであれば標準的に搭載されている。オススメはLinux(Ubuntu)。
 ・WindowsであればWSL2をインストールし、Linux(Ubuntuがオススメ)をセットアップしておく。
・テキストエディタ
 ・Visual Studio CodeやVimなど、お好みのテキストエディタ。
 ・C言語プログラムの作成に用いる。
・ターミナルで動くCコンパイラ
 ・例えばgccやclangなど。
 ・試しにHello world等の簡単なプログラムのコンパイルを試しておくと良い。
・Zoom
 ・マイクで話せるように設定しておく。
続きを読む
※ストアカでは講座に適用される保険を用意しています。詳しくはストアカ補償制度をご覧ください。

プログラミングのおすすめの先生プログラミングの先生を探す

C・C++・C#の関連カテゴリーから講座を探す

先生のスキルから探す