page0001
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* EssenRev4 の基本的なアイデア
-(by [[K]], 2018.03.05)
** (0) はじめに
-EssenRev1:
--セキュリティキャンプ2017で作っていたバージョン1
-EssenRev2:
--セキュリティキャンプ2017で作っていたバージョン2 JITコ...
-EssenRev3:
--その後迷走したバージョン
-EssenRev4:
--これから作るバージョン
** (1) 基本的なアイデア
-「変数、型、関数だけではなく、構文や演算子を自由に作れる...
-まず最大の違いとして、動的型付き言語から静的型付き言語に...
--なぜ?それはそのほうがJITコンパイル時に高速なコードが容...
--Rev1のころは速度を重視しなかったけど、速いのはやっぱり...
--C言語並みに早くなっている必要はないけど、C言語比で処理...
-Rev3以前のように型を気にしないプログラミングがやりたいと...
-速度を出すためにJITコンパイルを基本に考えるけど、生成し...
-ここで、なぜRev1のころは動的型付き言語を指向していたのか...
-Rev4ではそういうときはvar型の引数にしておけばいいと思っ...
** (2) 上位構文の目標(1) - カッコ
-みなさんはLISPという言語をご存知だろうか。私はこの言語は...
-LISPで書かれたプログラムはカッコが多い。カッコのネストは...
-そのことを説明するために、いったんLISPを離れよう。数学で...
-なぜそんなややこしい習慣があるのかと言えば、数式において...
-私はビット演算が得意なプログラマなので、C言語でこんなコ...
if ((flag & 1 << 12) != 0 && ((a ^ b) & 15) == 0) { ... }
-なんだこれは。カッコが多いじゃないか。これはひとえに、C...
-さらに関数の呼び出しでもカッコは必要だし、ifやforで多用...
-こうして「何がダメなのか」はおおよそわかっているものの、...
-まずカッコを減らす簡単なアイデアとしては、代入がある。
ここで A = a+b-c とおく
-みたいなやつである。これをやればカッコは減る。もしかした...
-ではなぜこれをやらないのかというと、なんか変数を減らした...
-いずれにせよ、その衝動を抑えるような仕組みが必要だろう。...
** (3) 上位構文の目標(2) - 変数名を渡す仕組み
-C言語では、変数aとbの値を確認したいときにこんな風に書く...
printf("a=%d, b=%d\n", a, b);
-しかし私はこの書き方が気に入らない。なぜaやbを二度書くの...
dump(a, b);
-これで変数名とその値が表示できたらどんなに便利だろう。・...
** (4) 下位機能での目標(1) - ポインタなど
-プログラミング言語を作ろうという時に、ポインタなんかなく...
-EssenRev4では、ポインタはあるしポインタがおかしくなるこ...
--なお、このポインタのチェックやオーバーフロー検出などは...
** (5) 型情報の提供
-CやC++の言語処理系は、構造体のメンバ情報などをすべて知っ...
* こめんと欄
#comment
終了行:
* EssenRev4 の基本的なアイデア
-(by [[K]], 2018.03.05)
** (0) はじめに
-EssenRev1:
--セキュリティキャンプ2017で作っていたバージョン1
-EssenRev2:
--セキュリティキャンプ2017で作っていたバージョン2 JITコ...
-EssenRev3:
--その後迷走したバージョン
-EssenRev4:
--これから作るバージョン
** (1) 基本的なアイデア
-「変数、型、関数だけではなく、構文や演算子を自由に作れる...
-まず最大の違いとして、動的型付き言語から静的型付き言語に...
--なぜ?それはそのほうがJITコンパイル時に高速なコードが容...
--Rev1のころは速度を重視しなかったけど、速いのはやっぱり...
--C言語並みに早くなっている必要はないけど、C言語比で処理...
-Rev3以前のように型を気にしないプログラミングがやりたいと...
-速度を出すためにJITコンパイルを基本に考えるけど、生成し...
-ここで、なぜRev1のころは動的型付き言語を指向していたのか...
-Rev4ではそういうときはvar型の引数にしておけばいいと思っ...
** (2) 上位構文の目標(1) - カッコ
-みなさんはLISPという言語をご存知だろうか。私はこの言語は...
-LISPで書かれたプログラムはカッコが多い。カッコのネストは...
-そのことを説明するために、いったんLISPを離れよう。数学で...
-なぜそんなややこしい習慣があるのかと言えば、数式において...
-私はビット演算が得意なプログラマなので、C言語でこんなコ...
if ((flag & 1 << 12) != 0 && ((a ^ b) & 15) == 0) { ... }
-なんだこれは。カッコが多いじゃないか。これはひとえに、C...
-さらに関数の呼び出しでもカッコは必要だし、ifやforで多用...
-こうして「何がダメなのか」はおおよそわかっているものの、...
-まずカッコを減らす簡単なアイデアとしては、代入がある。
ここで A = a+b-c とおく
-みたいなやつである。これをやればカッコは減る。もしかした...
-ではなぜこれをやらないのかというと、なんか変数を減らした...
-いずれにせよ、その衝動を抑えるような仕組みが必要だろう。...
** (3) 上位構文の目標(2) - 変数名を渡す仕組み
-C言語では、変数aとbの値を確認したいときにこんな風に書く...
printf("a=%d, b=%d\n", a, b);
-しかし私はこの書き方が気に入らない。なぜaやbを二度書くの...
dump(a, b);
-これで変数名とその値が表示できたらどんなに便利だろう。・...
** (4) 下位機能での目標(1) - ポインタなど
-プログラミング言語を作ろうという時に、ポインタなんかなく...
-EssenRev4では、ポインタはあるしポインタがおかしくなるこ...
--なお、このポインタのチェックやオーバーフロー検出などは...
** (5) 型情報の提供
-CやC++の言語処理系は、構造体のメンバ情報などをすべて知っ...
* こめんと欄
#comment
ページ名: