* プログラミング言語 Essen #4 -(by [[K]], 2016.10.21) ** Essenの変数システム -(1) --CやC++などの言語で、 abc.def.ghi = 3; みたいに書くことはある。 --これはファイルパスで abc/def/ghi.txt みたいに指定するのととても似ている気がする。 --だったら、変数をファイル代わりにして、OSからファイルシステムを取っ払ってしまえばいいのではないか? --そして変数は言語を終了しても、電源を切っても、値が保持されるようにすればいいのではないか? -(2) --そもそも今は「情報を記憶させる場所」が複数ある。 ---変数、ファイル、環境変数 --このどれにするかをプログラマに悩ませるなんてなんか間違っていないか? --全部変数でいいじゃないか。変数が永続的で他のプログラムなどからも参照できるのなら、ファイルとかなくたって困らないんだ! -(3) --最新の構想では、Essenでは小カッコと角カッコとを区別しないので、以下のどちらの書き方でもディレクトリ型を記述できます。 --ディレクトリ型というのは、配列と構造体を混ぜたようなものです。別の言い方をするとPythonのリスト型と辞書型を混ぜたようなものです。 a = (1 2 3) b = [1 2 3] c = (1, 2, 3) // このようにカンマで区切ることもできる d = (abc:1 def:2) // こう書けば構造体 e = (abc:1 def:2 3 4) // こう書けば構造体と配列が混在 → e.abc = 1 e.def = 2 e[0] = 3 e[1] = 4 f = [(1 2 3) (4 5 6)] // 入れ子にもできます 角カッコだと見やすいかな?(小カッコでももちろんOKです) --簡単に配列や構造体が書けるのは素晴らしいことだけど、PythonやRubyではすでにできることなので、Essenの優位点にはなりません。 ** Essenの優位点 -コード片オブジェクト(コードブロック)を簡単に関数に渡せる if (a == 0) { b = 0 } `else { b = 1 } // この b = 0 や b = 1 の部分はコード片としてifという関数に渡される -新しい演算子を定義できる、既存の演算子を変えられる -新しい制御構文を定義できる、既存の制御構文を変えられる -Essenは複数のウィンドウを持っていてそれらを個別に操作できるような想定だけど、ウィンドウ1でプログラムを実行し、ウィンドウ2でプログラムの変数に対してprintすると、変数が変わっていく様子が見られる --デバッガなどがなくてもそこそこのデバッグができる --見るだけではなく値を変更することもできる -インラインで既存言語のソースコードを書くことができる(関数単位) --それをEssenから呼び出せる --Essenは実行速度が速い言語ではないので、部分的にCなどを併用して実用的な速度にすることを想定 -処理系が異様に小さい(予定) --[[K]]が作るので、もはや「お約束」です! -変数が永続的なので、定義した関数も削除しなければずっと残っていていつでも使えるし、変数も値を確認できる -変数が永続的なので、プログラムが終了した後でも、定義した関数も削除しなければずっと残っていていつでも使えるし、変数も値を確認できる --プログラムを実行するたびにローカルディレクトリを作りますので、ローカルで使っている限りは衝突しない --変数はファイルのように、コピー、移動、削除、名前の変更などができる --f = function(a, b, c) { ... } とやって実行した後にはfは関数になるけど、一度そうなった後はプログラムを削除してしまってもfには設定が残るので、そのまま使い続けられる * こめんと欄 #comment