Lucid
ちょっと間が空いてしまったけど、前回の続き。 2.8 無限プログラミング Iswimファミリについてのこれまでの議論は、従来のオブジェクトが有限な代数に限定したものだった。 この形式のIswimは、ALGOLのような従来の命令型言語の再帰的サブセットに多かれ少…
前回の続き。 2.7 遅延評価 しかし、Iswimの操作的(動的)解釈として、より適切なものがある。 この方法論では、プログラムは実行されると考えるのではなく、プログラムは評価されると考え、その評価は必要に応じて行われるとする。 この評価の方法は、必要…
前回の続き。 2.6 Iswimでの呼び出しと束縛 手続き的解釈の適用には注意が必要である。 というのも、そうでなければ、スコープ規則に関して間違いが生じる可能性があるからだ。 特に、グローバル変数を含む関数定義の正しい解釈について注意する必要がある。…
前回の続き。 2.4 サンプルプログラム where節の本体が「補助定義」であるという非形式的な考え方に形式的意味論がどう一致しているかを説明するために、前に出てきた次の式を考えてみる: C + A * Z where A = 5; B = 5; C = Z * A + 1 where A = 3; Z = A …
前回の続き。 2.2 Iswimの構文 Iswim()という言語の(抽象)構文(syntax)と意味論(semantics)は代数によって完全に定まる。 Iswimファミリはシンプルであり、以下の数段落で合理的で正確な仕様を与えることが出来る。 代数が与えられると、そのシグネチ…
前回の続き。 2.1 代数 プログラミング言語についての質問で最もよくされるものの1つは、「その言語にはどのようなデータ型があるのか?」というものである。 言い換えれば、どんな種類のデータがその言語では扱われるのか、ということである。 この質問に対…
だいぶ間が空いてしまったけど、久々に。 2. ISWIMと代数 Lucidは定義型言語(definitional language)である。 すなわち、Lucidプログラムの文(statement)はストリームとフィルタを定義する式であり、格納場所を更新するコマンドではない。 Lucidはこの意…
ちょっと間が空いてしまったけど、前回の続き。 1.8 Lucidーーバランスのとれた言語 Lucidでは、応用数学の他の分野で見られるような、静的と動的の間の調和のプログラミングを復元しようとしている。 Lucidは実際には非手続き型言語だが、決して純粋に静的…
前回の続き。 1.6 Honest, Folks, We Was Just Funnin’ この数ページで、プログラミング言語に取り組んでいるほぼすべてのコンピュータ科学者を致命的に怒らせただろう。 今や、怒れるカウボーイ達、ウィザード達、伝道師達、技術者達、よろず屋達(Handymen…
前回の続き。 1.4 命令型アプローチの問題 近年、プログラミング言語に対する命令型のアプローチは、ますますひどい兆候を示している。 従来の「主流」のプログラミング言語は、これまで以上に複雑な作業に、そして、これまで以上に多くの人々に使用されてい…
前回の続き。 なお、かなり意訳。 1.2 命令型プログラミング RMS(二乗平均平方根)プログラムは、PASCALのような命令型言語で書かれたときには、ほぼ同じアプローチが使用されていても、とても異なったものになる。 次のPASCALプログラムは、前節でのLucid…
昨日の続き。 1. イントロダクション Lucidはプログラミング言語だが、読者がすでに慣れ親しんでいるプログラミング言語(BASICやPASCAL、あるいはLISPでさえ)とは、まったく異なる。 以下は、有理数を含む計算を記述した簡単なLucidプログラムである。 こ…
だいぶ間が空いてしまったけど、以前書いた通り、データフロー言語であるpLucidをいじっていたりする。 この実装をいじりながらコードを読んでいたのだけど、どうにも分からない部分が。 というのも、実装が丸々ifdefで落とされていて、しかも、落とされたコ…
前回はLucidの処理系であるpLucidについて紹介した。 今回はLucidについて触れていきたい。 Lucidとは? Lucidというのは、前回も触れたとおり、データフロープログラミング言語の1つ。 データフロープログラミング - Wikipedia Lucid (プログラミング言語) …
最近、pLucidをいじってるので、それについて少しずつ書いていこうと思う。 pLucidとは? pLucidというのは、Lucidというデータフロープログラミング言語の処理系の1つ。 データフロープログラミング - Wikipedia Lucid (プログラミング言語) - Wikipedia 新…