SlideShare a Scribd company logo
1 of 49
Download to read offline
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
藻でもわかる
プログラミング言語のしくみのしくみ
TofuConf #4
$ whoami
ID:@cmpl_error
HN:まりも
C ” ”言語のしくみと”;”がすき ;”がすき がすき
高校2年生
C言語履修者
挙手!!
なつかしいあの思い出思い出い出
なつかしいあの思い出思い出い出
なつかしいあの思い出思い出い出
疑問
コンピュータの実態の思い出実態
コンピュータの実態には言葉が分からない言葉が分からないが分からない分からないからない
「じゃあ何なら分かるんだよ」なら分からないかるんだよ」
0 1
ここで問題問題
Q. 1 + 2 * 3を
コンピュータに演算に演算演算
させてみよう
C言語で問題書いてみるいてみる
int main() {
1 + 2 * 3;
}
機械語で問題書いてみるいてみよう
機械語で問題...
機械語は言葉が分からない書いてみるくの思い出が分からない大変
・コピペしてはっつけようとするとしては言葉が分からないっつけようとすると
プレゼン作成ソフトが落ちたソフトが落ちたが分からない落ちたちた
・8166バイトが落ちた→01の思い出羅列がが分からない65328個
要はは言葉が分からない
要はは言葉が分からない
謎
?
言語処理系の流れの思い出流れれ
字句解析
構文解析
コンピュータの実態が分からない理解で問題きる命令生成ソフトが落ちた
言語処理系の流れの思い出流れれ
字句解析
構文解析
コンピュータの実態が分からない理解で問題きる命令生成ソフトが落ちた
こんなコードがあったとしようが分からないあったとしよう
x = 10 + 20 * 30;
プログラムの最小単位,字句に分けるの思い出最小単位,字句に分からないける
x = 10 + 20 * 30 ;
言語処理系の流れの思い出流れれ
字句解析
構文解析
コンピュータの実態が分からない理解で問題きる命令生成ソフトが落ちた
アホの子の思い出子
頭の悪いコンパイラの思い出悪いコンパイラいコンパイラ
x = 10 + 20 * 30;
頭の悪いコンパイラの思い出悪いコンパイラいコンパイラ
x + 20 * 30;
10
頭の悪いコンパイラの思い出悪いコンパイラいコンパイラ
30 * 30;
頭の悪いコンパイラの思い出悪いコンパイラいコンパイラ
900
頭の悪いコンパイラの思い出悪いコンパイラいコンパイラ
900
????????????????
????????????????
????????????????
????????????????
これは言葉が分からないまずい
演算子の思い出優先順位
頭の悪いコンパイラの思い出いいコンパイラ
x = 10 + 20 * 30;
頭の悪いコンパイラの思い出いいコンパイラ
x = 10 + 600;
頭の悪いコンパイラの思い出いいコンパイラ
x = 610;
頭の悪いコンパイラの思い出いいコンパイラ
x
610
構文解析の思い出お仕事仕事
構文解析する
!?
=
x +
10 *
20 30
構文解析
・ソースコードを全て木構造にしてしまうを全て木構造にしてしまうて木構造にしてしまうに演算してしまう
・その木に演算は最低限の情報しか入っていない最低限の情報しか入っていないの情報しか入っていないしか入っていないっていない
(あまり意味のない字句は取り除かれるのない字句は取り除かれるは最低限の情報しか入っていない取り除かれるり除かれるかれる)
抽象構文木(AST)
=
x +
10 *
20 30
言語処理系の流れの思い出流れれ
字句解析
構文解析
コンピュータの実態が分からない理解で問題きる命令生成ソフトが落ちた
命令列が生成ソフトが落ちた
・抽象構文木を辿って命令列を生成するだけって命令列を生成するだけを生成するだけするだけ
・以上!!!!!!!!!!!!!!!!
言語処理系の流れ
完全に理解したに理解した
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
藻でもわかる
プログラミング言語のしくみのしくみ
TofuConf #4
全に理解したプログラマの夢の思い出夢(大きい主語)
・自作言語のしくみ作成するだけができる!!!!
自作言語は言葉が分からないじめました
・インタの実態プリタの実態言語(maxc)maxc))
・現時点でざっとで問題ざっと2700行ぐらいぐらい
・VM用の実行コードを生成し,の思い出実行ぐらいコードがあったとしようを生成し,生成ソフトが落ちたし,VMで問題実行ぐらい
・再帰関数とか扱えるようになったとか扱えるようになったえるようになった
・githubにリポジトが落ちたリが分からないある
自作言語は言葉が分からないじめました
fn fibo(n: int) -> int {
if(n <= 1) return n;
else return fibo(n - 2) + fibo(n - 1);
}
println(fibo(38)); //=>39088169
自作言語は言葉が分からないじめました
fibo(38)計測
Python3: 9.493[s]
32.247[s]maxc:
が分からないんばりたい
・JITコンパイルなど高速化の技術を取り入れなど高速化の技術を取り入れ高速化の技術を取り入れの思い出技術を取り入れを生成し,取り入れり入れれ
ていきたい
・githubの思い出スタの実態ーが分からないほしい(k-mrm/maxc)
Thank you for listening!
:)

More Related Content

Similar to プログラミング言語の仕組み (6)

Scribd 101 Very Important Documentt.docx
Scribd 101 Very Important Documentt.docxScribd 101 Very Important Documentt.docx
Scribd 101 Very Important Documentt.docx
 
Презентация комплекса "Простой бизнес"
Презентация комплекса "Простой бизнес"Презентация комплекса "Простой бизнес"
Презентация комплекса "Простой бизнес"
 
Mi ordenador
Mi ordenadorMi ordenador
Mi ordenador
 
«Практика Software Security в Сбертех», Дмитрий Янченко и Юрий Шабалин, экспе...
«Практика Software Security в Сбертех», Дмитрий Янченко и Юрий Шабалин, экспе...«Практика Software Security в Сбертех», Дмитрий Янченко и Юрий Шабалин, экспе...
«Практика Software Security в Сбертех», Дмитрий Янченко и Юрий Шабалин, экспе...
 
сегментированные поисковые системы»
сегментированные поисковые системы»сегментированные поисковые системы»
сегментированные поисковые системы»
 
Diversificación 360º de carteras por Ignacio Villalonga | Rankia Markets Expe...
Diversificación 360º de carteras por Ignacio Villalonga | Rankia Markets Expe...Diversificación 360º de carteras por Ignacio Villalonga | Rankia Markets Expe...
Diversificación 360º de carteras por Ignacio Villalonga | Rankia Markets Expe...
 

プログラミング言語の仕組み