* プログラミング言語 Essen -(by [[K]], 2016.10.24) ** これはなに? -インタプリタ型で対話式のプログラミング言語です。高速ではありません。インストールサイズは結構小さいです。 -変数の仕組み(構造体の仕組み)がファイルパスに似ているというところに目を付けて、入れ子になった構造体変数がファイルシステムの代わりになることを目指しています。変数は永続化され、PCの電源をOFFにしても消えません。 -また同時に複数のプログラムを動かすことができ、その際にはプログラムの優先度を設定できたりするなど、タスクスケジューラのような機能も持たせる予定です。 -つまりOS側に多階層のファイルシステムがなかったり、マルチタスクのサポートがなくても、それらについてはEssenが面倒を見ますので、シェルとしてEssenを移植したら、「簡素な自作OSが急に立派になった」みたいなことを目指しています。 -しかし当面はWindows向けに開発します。 -現状は開発初期で、上記はすべて「目標」です。 ** 特徴 -C言語は関数を自由に作れた。C++は型を自由に作れた。 -Essenは、それらに加えて、演算子と構文を自由に作れる。 -変数はファイルの代わりなので、名前を変更することができる。移動もできる。 ** プログラム例 -1~9の数字が書かれたカードが、それぞれ1枚ずつある。 -ここから3枚を選ぶ。 -3枚の数字の合計が10になるのは何パターンあるか? c = 0 combiFor(f 9 3) { if (sum(k 1 9) { f[k - 1] * k } == 10) { c++ } } print(c) -ポイント: --セミコロンは省略できる。引数区切りのカンマも省略できる。 --文が1文しかなくても、中カッコは省略できない。 --型宣言は不要。 --combiFor(f 9 3)は9個の中から3つを選ぶ組わせをすべて列挙するforループ。変数fに(1 1 1 0 0 0 0 0 0)などが格納される。 --sum(k 1 9) { ... } は、k=1~9に対して、{ } の中を計算してその和を取る。 --Essenは構文を自由に作れるので、combiForやsumのような構文も思いつきですぐに作れる。 ** 背景の思想 -同じようなことをしたいだけなのに、記法が何通りもあるのは気に入りません。しかもそれを強いられるのが嫌いです。 -シェルスクリプト(バッチファイル)の文法が、どうしてC言語と同じじゃいけないんですか? -「データを記憶する」という同じ動作なのに、変数だと代入で、ファイルだとfopen/fwriteで、環境変数だとputenvで、データベースだとINSERT文で・・・ってどうしてこんなに違うのか・・・。操作対象が違ってもそれほどには記法が変わらない世界は構築できないのでしょうか。 -そんなことを考えて、それを実現するにはどうしたらいいだろう、じゃあこうしてみようという自分なりの回答がEssenです。 ** よきライバル -プログラミング言語 nv (hikaliumさん作) → https://github.com/hikalium/nv/wiki //-プログラミング言語 rhino-c (yasuo-ozuさん作) → https://github.com/yasuo-ozu/rhino-c2/wiki ** 目次 -[[EssenMemo0001]]: こういうのがやりたい#1~#2 (ほぼ没) -[[EssenMemo0002]]: 進捗: 2017.04.24~ -[[EssenMemo0003]]: 基本的な文法・機能(案) -[[EssenMemo0004]]: スキップリスト・KISL -[[EssenMemo0005]]: virtual-index -[[EssenMemo0006]]: セキュリティキャンプ2017 の応募用紙からいただいた意見について -[[EssenMemo0007]]: プログラミング言語を作るべきときはいつか? -[[EssenMemo0008]]: Essen_Rev1 -[[EssenMemo0009]]: -[[EssenMemo0009]]: 実現したい機能のために仕様を考える#1