『言語のしくみ』
https://gyazo.com/2f18e16320f0a4d321bab80f0fd78d7b
/mrsekut-book-4822239179
これ、自作言語を作りたい人からするとマジで神みたいな本だな...mrsekut.iconmrsekut.icon*2
なぜ言語を作るのか
プログラミング能力の向上
デザイン能力の向上
自己ブランド化
自由の獲得
タイニー言語の例
GAME
BASIC起源
予約語が全て記号、すべての文が代入文
TL/1
Pascalっぽい構文と変数の型が1バイト整数しかない
プログラミング言語の構造
多層的な構造を持つ
言語と言語処理系
言語と言語処理系
言語
言語をデザインするのはコンピュータはなくてもできる
大きくは文法と語彙にわけられる
文法
どのような記述がその言語でのプログラムの表現になるのかを定めたルール
語彙
その言語で記述されたプログラムから呼び出せる機能の集合
言語処理系
文法や語彙を実際にコンピュータ上で実行できるようにするためのソフトウェア
コンパイラ、ライブラリ、ランタイムにわけられる
Compiler
文法を解釈する
Compile: 編集する、という意味
字句解析、構文解析、コード生成、コード最適化などをする
ライブラリ
語彙に相当
ランタイム
ソフトウェアを実際に動作させるのに必要なもの
バーチャルマシンなど
流れ
字句解析
構文解析
コード生成
コード最適化
プロセスVM
mrubyの命令
プログラミング言語のデザイン
Error Handling
2章
並列
並行
プロセスとスレッド
並列プログラミングのための機構
ACID原則
ShellScriptのパイプ|は、マルチプロセスで並列に実行している
https://qiita.com/nyango/items/7b6b719f248b2ee8d379
手軽に並列処理を書けるのは良いが、いかんせんプロセスの生成はコストが高いので、小さいプロセスを作りまくるのはあまり効率が良くない
プロセス間通信もしてるので、そのコストも掛かっている
並列処理のデザインパターン
#スクボ読書化した本