Slide 1

Slide 1 text

低レイヤへの誘い 2022.7/5 LT 杏寿郎、お前も 低レイヤの住人にならないか?

Slide 2

Slide 2 text

01 02 03 04 05 こんな仲間が欲しい! 自己紹介 低レイヤとは? Let's 低レイヤ! おわりに 目次

Slide 3

Slide 3 text

自己紹介 01 01

Slide 4

Slide 4 text

01 自己紹介 ・稲井友亮 ・25歳 ・RUNTEQ34期生 ・医者目指してた ・低レイヤ大好き

Slide 5

Slide 5 text

自己紹介 01 自己紹介

Slide 6

Slide 6 text

02 02 こんな仲間が 欲しい!

Slide 7

Slide 7 text

02 こんな仲間が 欲しい! 以上 募集する仲間 低レイヤ プログラミング仲間 以上

Slide 8

Slide 8 text

03 03低レイヤとは?

Slide 9

Slide 9 text

03 低レイヤと は? ハードウェアに近い階層 =低レイヤ

Slide 10

Slide 10 text

「縁の下の力持ち」 03 低レイヤと は?

Slide 11

Slide 11 text

03 低レイヤと は?

Slide 12

Slide 12 text

03 低レイヤと は? ※引用元 https://qiita.com/no wnabe/items/47cc5d 95e8b4e01205a8

Slide 13

Slide 13 text

03 低レイヤと は? 低レイヤ風に説明 Rubyプログラム実行プロセス 01 01 02 02 03 03 04 04 まずRubyインタプリタ ( コ ー ド を 実 行 す る 際 に、rubyコマンドと打つ あれ)がプログラムを意 味のわかる最小単位にま で分解する 字句解析 構文解析 トークン列がどんな意味 のプログラムなのか理解 するために構文木と呼ば れるデータ構造に落とし 込む コード生成 構文木をコンパイルし、 Rubyを実行するために 設計された仮想マシンで あ る RubyVM 用 の 言 語 (バイトコード)に落と し込む 実行 RubyVMがバイトコード を実行

Slide 14

Slide 14 text

04 04 Let's 低レイヤ!

Slide 15

Slide 15 text

低レイヤがしていることを 実際に体験してみよう! 04 Let's 低レ イヤ!

Slide 16

Slide 16 text

04 Let's 低レ イヤ! 例題プログラム

Slide 17

Slide 17 text

低レイヤ Rubyプログラム実行プロセス 01 01 02 02 03 03 04 04 まずRubyインタプリタ ( コ ー ド を 実 行 す る 際 に、rubyコマンドと打つ あれ)がプログラムを意 味のわかる最小単位にま で分解する 字句解析 構文解析 トークン列がどんな意味 のプログラムなのか理解 するために構文木と呼ば れるデータ構造に落とし 込む コード生成 構文木をコンパイルし、 Rubyを実行するために 設計された仮想マシンで あ る RubyVM 用 の 言 語 (バイトコード)に落と し込む 実行 RubyVMがバイトコード を実行 04 Let's 低レ イヤ!

Slide 18

Slide 18 text

04 Let's 低レ イヤ! 低レイヤ Rubyプログラム実行プロセス 03 03 04 04 コード生成 構文木をコンパイルし、 Rubyを実行するために 設計された仮想マシンで あ る RubyVM 用 の 言 語 (バイトコード)に落と し込む 実行 RubyVMがバイトコード を実行 詳細を知りたい人は 「言語理論」「オートマトン 」 「文脈自由文法」「再帰下降構文解析」 辺りでググろう♪

Slide 19

Slide 19 text

04 Let's 低レ イヤ! 低レイヤ Rubyプログラム実行プロセス 03 03 04 04 コード生成 構文木をコンパイルし、 Rubyを実行するために 設計された仮想マシンで あ る RubyVM 用 の 言 語 (バイトコード)に落と し込む 実行 RubyVMがバイトコード を実行

Slide 20

Slide 20 text

04 Let's 低レ イヤ! 構文木 =データ構造

Slide 21

Slide 21 text

04 Let's 低レ イヤ! 低レイヤ Rubyプログラム実行プロセス 03 03 04 04 コード生成 構文木をコンパイルし、 Rubyを実行するために 設計された仮想マシンで あ る RubyVM 用 の 言 語 (バイトコード)に落と し込む 実行 RubyVMがバイトコード を実行 コンパイル ・言語を変換すること ・英語のcompileから来ており、元は編纂って意味 ・昔はコンピュータで仕事をする前、いろいろな書類   を綴じて(file)、紙挟み(folder)に入れることを compileと言っていました。

Slide 22

Slide 22 text

04 Let's 低レ イヤ! 低レイヤ Rubyプログラム実行プロセス 03 03 04 04 コード生成 構文木をコンパイルし、 Rubyを実行するために 設計された仮想マシンで あ る RubyVM 用 の 言 語 (バイトコード)に落と し込む 実行 RubyVMがバイトコード を実行

Slide 23

Slide 23 text

04 Let's 低レ イヤ! (Rubyを実行するために設計された仮想マシンで あるRubyVM用の)言語に落とし込む →「別の言語に置き換える」ということ RubyVMがバイトコードを実行 →「置き換わった言語を実行する」ということ

Slide 24

Slide 24 text

低レイヤ Rubyプログラム実行プロセス 03 03 04 04 コード生成 構文木をコンパイルし、 Rubyを実行するために 設計された仮想マシンで あ る RubyVM 用 の 言 語 (バイトコード)に落と し込む 実行 RubyVMがバイトコード を実行 04 Let's 低レ イヤ! + ⬅️ 構文木を別の言語に置き 換えて処理して実行する

Slide 25

Slide 25 text

低レイヤ Rubyプログラム実行プロセス 04 Let's 低レ イヤ! ⬅️ 構文木をRubyで処 理して実行する 03 03 04 04 コード生成 構文木をコンパイルし、 Rubyを実行するために 設計された仮想マシンで あ る RubyVM 用 の 言 語 (バイトコード)に落と し込む 実行 RubyVMがバイトコード を実行 +

Slide 26

Slide 26 text

04 Let's 低レ イヤ! 例題プログラム

Slide 27

Slide 27 text

04 Let's 低レ イヤ! + + 3 1 2 今回の構文木

Slide 28

Slide 28 text

04 Let's 低レ イヤ! 木を配列で表現 木の表現方法 ・今回は[名前、左の木、右の木]の順番で配列に格納 ・ただしこれ以外にも方法は色々ある

Slide 29

Slide 29 text

04 Let's 低レ イヤ! + + 3 1 2 今回の構文木

Slide 30

Slide 30 text

04 Let's 低レ イヤ! Rubyに落とし込む

Slide 31

Slide 31 text

04 Let's 低レ イヤ! + + 3 1 2 今回の構文木

Slide 32

Slide 32 text

04 Let's 低レ イヤ! Rubyに落とし込む

Slide 33

Slide 33 text

04 Let's 低レ イヤ! アクセス方法

Slide 34

Slide 34 text

04 Let's 低レ イヤ! + + 3 1 2 今回の構文木

Slide 35

Slide 35 text

04 Let's 低レ イヤ! 実際にコードを書いて みよう! 皆さんも一緒に考えながらやっていただける と幸いです。

Slide 36

Slide 36 text

04 Let's 低レ イヤ! 例題プログラム

Slide 37

Slide 37 text

04 Let's 低レ イヤ! 木の処理方法 木の処理方法 ・木を処理する方法は名前の部分が値ならその値、値  でなければ左と右を処理して得られた値に「名前」  の処理を行う

Slide 38

Slide 38 text

04 Let's 低レ イヤ! + 1 2

Slide 39

Slide 39 text

04 Let's 低レ イヤ! + + 3 1 2 今回の構文木

Slide 40

Slide 40 text

04 Let's 低レ イヤ! 雛型を作成

Slide 41

Slide 41 text

04 Let's 低レ イヤ! + + 3 1 2 今回の構文木

Slide 42

Slide 42 text

04 Let's 低レ イヤ! 左側の処理

Slide 43

Slide 43 text

04 Let's 低レ イヤ! + + 3 1 2 今回の構文木

Slide 44

Slide 44 text

04 Let's 低レ イヤ! 右側の処理

Slide 45

Slide 45 text

04 Let's 低レ イヤ! + + 3 1 2 今回の構文木

Slide 46

Slide 46 text

04 Let's 低レ イヤ! 全体処理

Slide 47

Slide 47 text

04 Let's 低レ イヤ! 完成!!

Slide 48

Slide 48 text

04 Let's 低レ イヤ!

Slide 49

Slide 49 text

05 05 おわりに

Slide 50

Slide 50 text

低レイヤを知れば 世界が広がる!!