K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
> さすが(ぱ)さんと言うか、鋭い突っ込みありがとうございます。実はシステム変数に >ついては多少触れるのを避けていました。。なぜなら(ぱ)さんの「表計算ソフトって」 >のコラムで表についての意見を読んでいて、まさにその表を言語に組み込もうとしている >のです。だから、完成する前にキツイ指摘を受けるのではないかと… > > システム変数は、簡単に説明すると。項と列によって構成されるシートが基本で、この >シートによって複数の機能と特徴を持っています。 > > Aシート ・・・~・・・ Zシート (26シート) > ----------- ------------ > | | | | > | | | | > ----------- ------------ > このシート名が変数の最初の「A」にあたり > > 000 ...................................... 999 (1000個の項目) > ------------------------------------------------- > A | | ・・・ | | > : | | --------------------- | | > Z | | | int double string | | | > a | | --------------------- | | > : | | ↑一つのセルの中に | | > : | | 3つのデータがある | | > z | | ・・・ | | > ------------------------------------------------- >(52の列) > > 変数名は 「シート+列+データ型+項目番号」 = AAI000 となります。だから >自由に変数名はつけれない。それを解消するために#defnieが必衰でした。 > ちなみに、システム変数にアクセスする方法は、直値=AAI001と言う形と、相対配列 >=ABI010「X][Y] これは、指定の座標から項にX値の相対座標指定、列にY値の相対座標を >指定してアクセスします。 ABI010[X] は項目のX相対座標指定です。 > もともとこのシート形式は、目的アプリケーションで必要だった機能を実現する為の >些細なアイデアでした。しかし、言語を作っていく上でシステムの基本となり。言語上 >でもかなめ的要素(中心的要素)になったのです。注意、EXCELを作るわけではありません。 > > ここからは既存の言語的常識を一時保留にして読んでください。 > > 例えば、市役所等での情報の伝達はシート、書式を持った紙です。市民登録、婚姻届等に >必要な項目を記入し提出する。それを受け取り保存する。別にガッシリとデータ定義された >構造体やclassがあるわけではありません。記入する方も総ての項目を初期化したり記入し >たりしません、必要な項目のみ記入して提出します。 > このイメージをモジュール間の情報伝達に使用しようと考えたのです。例えばシートAに >に必要なことを書いて、他のモジュールに動作指示を出す。その時シート名を伝達するだ >けでいい、構造体やclassは不要です。なおかつしたい事の種類のよって、多くの構造体や >多くのクラス定義が必要になったりしますが、シートでは必要な部分だけを書けばいい。 > と発想したのが元です。 > > 情報伝達の単位は、最小のint,double,string、そして一つのセル、相対X領域,相対Y領域、 >相対矩形の領域、列、シート、そしてパックされた情報の8つの単位で情報伝達を考えてい >ます。この処理単位で情報伝達するために、言語は関数内では普通の言語的整合性を持って >いますが、一歩外のグローバルではシステム変数で情報伝達する。その結果グローバル変数 >はシステム変数となり、言語的整合性ではなくシステムの目的にそって作られています。 > >補足 >1、一つのセルの中にint,double,stringデータの情報が入っているのは、もともとはデータ >の型別にシートが分かれていました。しかし、リストやソート、検索、辞書(map)の場合、 >3つのデータをまとめて処理したほうが利便性がいいとの理由です。そのため1セルに3つの >情報を入れました。しかし、変数としては別々にアクセスします。 > 例えばstringでソートした場合、intもdoubleもいっしょにソートされます。 > 例えば、intに優先NOが入っていたら、intでソートしたら文字列もいっしょにソート >されます。 > 利便性の目的のためだけに、3つの情報を一セルに入れました。 > >2、パックされた情報は、stringデータに入ります。なのでstringデータは複数のデータ >を大量に保持することが出来ます。 > >3.システム変数を言語内の変数と同じように、透過的にアクセスできるように作れたため、 >システム変数の操作を速くする事ができた。これは、関数を用いてシステム変数を操作する >ことを思えば、スレッドセーフでも、格段に融通が利き速い動作を保証できる。 > >最後に > この言語だけでは、奇妙な言語が一つ出来ただけの事です。この仕組が受け入れられる >かは、その上に乗ったアプリケーションが洗練されていて使いやすく受け入れるか如何に >かかっています。ここから先はいかにいい物を作るかだけでしょう。それに、言語の >初心者を対象にしているので、ここからはバリバリな日本語化に走ります。 > プログラミング言語ができる人は、C/C++なりJavaなり、その他各種汎用言語を使って >ください。がベースにあります。^^ > 今ある汎用言語は洗練されていて複雑で優秀です。だから私がいまさら作る意味が無い >ですし。 > >追加の補足 > 上記のことを書いた後に、グローバル変数でもいいのではないか。の発想もありますが、 >その場合、情報の集合体としての構造体やclassが必要です。でも、移転届用紙のような >多数の関係の薄そうなデータ総てを構造体やclassに入れるのは、根本的にシステム設計 >が間違っている方向でしょう。やはり書式用紙に代表されるデータ構造と、プログラム上の >データ構造とは明らかに違っています。プログラムでは関連のあるデータを参照やキー >情報、その他関連情報で持ちます。しかし、この構造は前にも話したように他の何かの >サポート無しに完全な一意の意味を保証することは不可能です。 > でも、シート形式なら完全かと言うとそうでもありません。実は時系列な情報変化の >保証は出来ないのです。これはあきらめています。時系列的な情報の変化とは、転移届を >受理して完全に処理される前に。同じ人から違う転移届を受け取ってしまった場合の矛盾 >です。 これは外部の何らかのサポート、受理処理が完全に終了するまで受け付けない >フラグ等のサポートが必要になり。これはシステムではなく、プログラマがそれを理解し >作らなければならないのです。 > 完全なデータフローマシンでも作ればいいのですが、そのプログラミングはまた違った、 >別の複雑な知識が必要になってきます。
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!