Essen1
の編集
http://khfdpl.osask.jp/wiki/?Essen1
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
2016_10
2016_11
2016_12
BracketName
Essen
Essen0
Essen1
Essen2
Essen3
Essen4
EssenMemo0001
EssenMemo0002
EssenMemo0003
EssenMemo0004
EssenMemo0005
EssenMemo0006
EssenMemo0007
EssenMemo0008
EssenMemo0009
EssenMemo0010
EssenMemo0011
EssenR2
EssenR2_ess03f
EssenR2_ess03h
EssenR2_ess03i
EssenR2_ideas
EssenR2_jit00
EssenR2_jit01
FormattingRules
FrontPage
Help
IP
InterWiki
InterWikiName
InterWikiSandBox
K
KHPC
KHPC_v000doc01
KHPC_v001doc01
KHPC_v002doc01
KHPC_v003doc01
MenuBar
OSC
OSC20181027
OSC20190222
OSC20191123
OSC20230401
OSC20230528
OSC20231021
OSC20240310
OSC20241026
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
SltVA
VariableArray
WikiEngines
WikiName
YukiWiki
advcal20161205
advcal20161206
advcal20161209
advcal20161210
advcal20161215
eoml0001
eoml0002
essen_ex01_0001
impressions
kcl_malloc
khfdpl_result1
members
memo0001
memo0002
note0001
note0002
note0003
note0004
note0005
note0006
oldworks
oldworks00
oldworks06
oldworks12
oldworks13
osaskjp_index
persistent_C
populars
pr20161105
pr20161105b
scsc
seccamp2017
spam_test
uxf
uxf_01
uxf_02
uxp
* プログラミング言語 Essen #1 -(by [[K]], 2016.07.20) ** これはなに? -まずは[[Essen]]を読んでね。ここは続きを書きます。 ** Essenの基本コンセプト -(1)C言語風の言語であること --LISPみたいなのはすごいけどやりすぎで自分に使いこなせる自信がない。代入はa=1みたいに書きたいし、加算もc=a+bで書きたい。 -(2)文法規則がシンプルで例外が少ないこと --C言語はそれほどシンプルではない。なぜfor構文の時だけカッコの中にセミコロンが書けるの? -(3)ifやforなどの構文や演算子の規則が、固定されたルールではなく、C言語で言うところのライブラリみたいなものであること --つまり制御構文を増やすこともできる。 ** 基本以外のコンセプト -インタプリタ。evalがやりたい。 -ローカル変数はある。 -変数に型はなく、値に型がある。 -gotoもある。ただしスコープのネストの内側にはジャンプできない。同じスコープか 、外側のスコープならジャンプできる(このスコープのルールさえ満たしていれば、関数の中から脱出することも可能だし、前方参照・後方参照も自由自在)。 -主にC言語で実装するが、できるだけシンプルに書きたい。 ** Essenが目指しているもの -EssenはPCを起動したらすぐ起動して、PCの電源を切るまでずっと起動したままにする感じで、シェルの代わりとして使う。 -Essenの変数はファイルの代わりに活用可能で、セーブしておくことができる。 -理想としては、すべてのPC作業をEssen上で完結させたい。 --Essenで書かれたテキストエディタがあり、Essenで書かれたゲームやツールとかもあって、それらがあれば事足りるイメージ。 --Essenはあまり大きなプログラムではないので、移植も容易で、つまり簡単にそれらの環境をさまざまな環境で再現できる。 -インタプリタなのでコンパイラ言語よりは遅いが、しかしそうはいっても速度比は10倍程度だろうと思われるので、アルゴリズムの比ほどではない(アルゴリズムの良し悪しで、速度は100倍くらい違うこともある)。つまり、Essenではアルゴリズムを追及してほしい。それでも速さが足りなければ、その時点で特に重い部分だけをC言語などで書き直せばいいと思う。何もかも高速化する必要なんてない。 ** [[Essen]]からの差分 -式評価アルゴリズムの変更: --a=2*3+4*(5+6); という式があったときに、[[Essen]]に書いたアルゴリズムではまず5+6=11を計算してしまう。 --でも世間一般で期待されているのは、おそらく2*3を先にやることだと思う。 #1: 2*3=6 #2: 5+6=11 #3: 4*11=44 #4: 6+44=50 --ということでこの順序で計算させることにした。 -整数の精度を256ビットから無制限可変長に: --nvが可変長整数を採用するらしく、それが非常にうらやましかったため(笑)。 ** C言語とは明らかに違う仕様 -(1)if文、for文、while文で、たとえコード片(コードブロックのこと)が1文しかなくても、{ }を省略することができない。 -(2)カッコは関数の引数の範囲を指定するか、もしくは配列や構造体を作る記号としての役目が割り当てられており、純粋に計算順位だけを指定したい場合は、直前にアンダスコアを付ける。 [例] a=2*_(3+4); -(3)C言語では、単に変数スコープを一段深くするために{ }を書くことがあるが、これをやるときは{ }で書くのではなく、_{ }と書くようにする。 --アンダスコアを付けないと、ただのコード片定数となってしまい、実行されない。エラーにもならない。 --アンダスコアは実は「関数」で、アンダースコア関数は、引数がコード片だったらそれを実行するし、コード片でなければその中身をそのまま返す。これにより(2)や(3)を達成している。 -(4)新出の変数に対して宣言はいらないものの、かといって何も気にせずに書けるルールにすると書き間違いが起きた時に発見できないかもしれないので、新出時には新出マークの#を付ける。 #a=3; abc.def.ghi = 0; // defやghiが新出でもわざわざ#は付けなくていい. ** C言語とは少し違う仕様 -文末のセミコロンは省略できる。ただしセミコロンを入れないと意味が変わってしまう場合などは、セミコロンを入れるしかない。省略は義務ではないので省略しなくても問題ない。 a = 0 b = 1 c = 2 * こめんと欄 #comment
タイムスタンプを変更しない
* プログラミング言語 Essen #1 -(by [[K]], 2016.07.20) ** これはなに? -まずは[[Essen]]を読んでね。ここは続きを書きます。 ** Essenの基本コンセプト -(1)C言語風の言語であること --LISPみたいなのはすごいけどやりすぎで自分に使いこなせる自信がない。代入はa=1みたいに書きたいし、加算もc=a+bで書きたい。 -(2)文法規則がシンプルで例外が少ないこと --C言語はそれほどシンプルではない。なぜfor構文の時だけカッコの中にセミコロンが書けるの? -(3)ifやforなどの構文や演算子の規則が、固定されたルールではなく、C言語で言うところのライブラリみたいなものであること --つまり制御構文を増やすこともできる。 ** 基本以外のコンセプト -インタプリタ。evalがやりたい。 -ローカル変数はある。 -変数に型はなく、値に型がある。 -gotoもある。ただしスコープのネストの内側にはジャンプできない。同じスコープか 、外側のスコープならジャンプできる(このスコープのルールさえ満たしていれば、関数の中から脱出することも可能だし、前方参照・後方参照も自由自在)。 -主にC言語で実装するが、できるだけシンプルに書きたい。 ** Essenが目指しているもの -EssenはPCを起動したらすぐ起動して、PCの電源を切るまでずっと起動したままにする感じで、シェルの代わりとして使う。 -Essenの変数はファイルの代わりに活用可能で、セーブしておくことができる。 -理想としては、すべてのPC作業をEssen上で完結させたい。 --Essenで書かれたテキストエディタがあり、Essenで書かれたゲームやツールとかもあって、それらがあれば事足りるイメージ。 --Essenはあまり大きなプログラムではないので、移植も容易で、つまり簡単にそれらの環境をさまざまな環境で再現できる。 -インタプリタなのでコンパイラ言語よりは遅いが、しかしそうはいっても速度比は10倍程度だろうと思われるので、アルゴリズムの比ほどではない(アルゴリズムの良し悪しで、速度は100倍くらい違うこともある)。つまり、Essenではアルゴリズムを追及してほしい。それでも速さが足りなければ、その時点で特に重い部分だけをC言語などで書き直せばいいと思う。何もかも高速化する必要なんてない。 ** [[Essen]]からの差分 -式評価アルゴリズムの変更: --a=2*3+4*(5+6); という式があったときに、[[Essen]]に書いたアルゴリズムではまず5+6=11を計算してしまう。 --でも世間一般で期待されているのは、おそらく2*3を先にやることだと思う。 #1: 2*3=6 #2: 5+6=11 #3: 4*11=44 #4: 6+44=50 --ということでこの順序で計算させることにした。 -整数の精度を256ビットから無制限可変長に: --nvが可変長整数を採用するらしく、それが非常にうらやましかったため(笑)。 ** C言語とは明らかに違う仕様 -(1)if文、for文、while文で、たとえコード片(コードブロックのこと)が1文しかなくても、{ }を省略することができない。 -(2)カッコは関数の引数の範囲を指定するか、もしくは配列や構造体を作る記号としての役目が割り当てられており、純粋に計算順位だけを指定したい場合は、直前にアンダスコアを付ける。 [例] a=2*_(3+4); -(3)C言語では、単に変数スコープを一段深くするために{ }を書くことがあるが、これをやるときは{ }で書くのではなく、_{ }と書くようにする。 --アンダスコアを付けないと、ただのコード片定数となってしまい、実行されない。エラーにもならない。 --アンダスコアは実は「関数」で、アンダースコア関数は、引数がコード片だったらそれを実行するし、コード片でなければその中身をそのまま返す。これにより(2)や(3)を達成している。 -(4)新出の変数に対して宣言はいらないものの、かといって何も気にせずに書けるルールにすると書き間違いが起きた時に発見できないかもしれないので、新出時には新出マークの#を付ける。 #a=3; abc.def.ghi = 0; // defやghiが新出でもわざわざ#は付けなくていい. ** C言語とは少し違う仕様 -文末のセミコロンは省略できる。ただしセミコロンを入れないと意味が変わってしまう場合などは、セミコロンを入れるしかない。省略は義務ではないので省略しなくても問題ない。 a = 0 b = 1 c = 2 * こめんと欄 #comment
テキスト整形のルールを表示する