* KH-FDPL に関するメモ-0005 -(by [[K]], 2015.02.15) ** KH-FDPLの特徴(1) - オブジェクト(変数)の永続性 -(1-1) KH-FDPLでは、プログラムを終了しても、プログラムが代入した結果などは原則としてそのまま残ります。 --その値を次の実行の際に参照することが可能ですし、他のプログラムから参照させることもできます(させないこともできます)。 --雰囲気としては、言語処理系がファイルシステムをもっているようなものです。このファイルシステムは基本的にメモリ上に構築され、処理系が終了するときにセーブファイルに書き出されて、処理系が再起動するときに読み込まれます。・・・ということで、ファイルシステムによく似てはいても、実際にファイルを使って読み書きしているわけではなく、基本的にはオンメモリで処理しています。 -(1-2) また記述されたプログラムもKH-FDPLでは「オブジェクト」として扱われるため、書いたプログラムがどんどん蓄積されていくことになります。 --このような仕様なのでincludeみたいな記述は基本的に不要です。最初からアクセス可能な状態にあることになります。 -(1-3) なぜこのような仕様を選んだのか?(1) --現在の一般的なプログラミング環境においては、いろいろなタイプのオブジェクトが存在しています。まず普通の変数、そしてOSなどが提供する環境変数、さらにはファイルシステムの中のファイル。ネットワーク上のファイルなどもあります。しかもやっかいなことに、それらはそれぞれリードライト方法が異なっています。普通の変数は代入すれば値を設定できますが、環境変数を設定するにはAPIなどを使わなければいけませんし、ファイルを書き換える時はfopenしたりしなければいけません。・・・これは十分に煩雑です。 --KH-FDPLではこれらを一種類にまとめてしまいたいと思いました。そうすれば、とてもすっきりしますし、理解しやすくなります。 --変数が、環境変数やファイルの代わりになることを目指す以上は、永続性は不可欠です。というかデータを永続的に扱いたいときにファイルを使うのであって、そうでなければたいていは変数で済ませますよね。 -(1-4) なぜこのような仕様を選んだのか?(2) --なにか計算に結構な時間のかかるプログラムがあったとします。しかし実行して数時間して、「あ、ここは明らかに間違っている!」と気づいたとします。でもそこを直さなくても、出てきた結果にちょっと計算を加えれば、一応正しい結果も分かりそうだとします。こういう場合は、たいてい、とりあえずプログラムは修正するかも知れませんが、今動いている実行ファイルを止めたりはしないものです。時間がもったいないので。 --でも理想を言えば、プログラムをその場で直したいのです。どうしてそうしないのかというと、プログラムを止めたら数時間分の計算結果が失われてしまうからです。それは要するに変数に永続性がないからです。もし永続性があって、かつ、プログラムの変更をしても途中から再開できれば、こんな無理はしないで、素直にすぐに修正して実行を継続するのです。 -(1-5) 予想されるプログラミングスタイルの変化 --たとえば画面に画像を表示するプログラムでは、プログラム内に定数として画像イメージを持つ方法と、外部の画像ファイルを読み込んで表示する方法があると思います。この外部画像ファイル方式みたいなプログラミングスタイルが、KH-FDPLでの一般的な記述方法になると思います。 --従来のプログラミング言語では、たとえば画面に画像を表示するプログラムで、プログラム内に定数として画像イメージを持つ方法と、外部の画像ファイルを読み込んで表示する方法があると思います。この外部画像ファイル方式みたいなプログラミングスタイルが、KH-FDPLでの一般的な記述方法になると思います。 --つまり定数値そのものはソースコードに表れず、ソース外のリソースを参照する感じです。・・・もちろんソースコード内に定数を書くこともできますが、きっとその書き方は主流にはならないでしょう。 * こめんと欄 #comment