3

関係を管理することには一種の美しさがあります。次の例を検討してください。

  1. 原子は亜原子粒子で構成され、分子は原子で構成され、細胞は分子で構成され、器官は細胞で構成され、人は器官で構成され、社会は人で構成されます。
  2. 囲碁のゲームの複雑な戦略は、生き残るために「両目」で構造を作る必要性に基づいています。ただし、「両目」のことはルールに記載されていませんが、それ自体が囲碁の非常に単純なルール。
  3. Conwayのs_Game_of_Lifeのチューリング完全性は、グライダー宇宙船の観点から証明できます。これらは、オンとオフの概念と非常に単純なルールのセットに基づいています。

すべての場合において、最小限のオブジェクトのセットと最小限のルールのセットは、最終的に非常に複雑な構造になります。

私の最初の質問: OOP言語を構築するために使用できるプログラミング「オブジェクト」と「ルール」の小さくてミニマルなセットの概要を説明することは可能ですか?

さて、賢いコンピューター科学者はおそらくルール110のチューリング完全性を指摘し、これがあなたが必要とするすべてであると言うでしょう!しかし、それは私が探しているものではありません。むしろ、明確に定義されていない質問を投げかけるリスクを冒して、オブジェクト指向プログラミング言語に組み込むことができる最も単純で人間が理解できる概念は何ですか?

私が欲しいものを示唆する悪い不完全な例については、3つの概念オブジェクトを定義します:参照関数、および情報ホルダー。次に(レベル2?)、他の情報フォルダーへの参照を介して他の情報を保持する情報ホルダーとなる構造を定義します。初歩的なクラス(レベル3?)は、関数への参照で構造を拡張しますが、プライベート関数とパブリック関数の概念を処理するには、追加の構造を構築する必要があります。最終的には、基本的な概念のみに基づいて構築されたフル機能のOOP言語に到達する必要があり、どこにも不正行為はありませんでした。ハードコーディングの最適化またはマシンコードとの構文ソルトによる。そして理想的には、最終結果は依然として魅力的で読みやすいコードです。

私の2番目の質問:すでにこれに近づいているOOP言語はありますか?

4

4 に答える 4

1

ioはおそらくあなたが探しているものに最も近い言語です。

于 2011-02-01T03:41:11.047 に答える
1

プロトタイプ

IO言語リファレンスは良いヒントを与えてくれます。OOP への最も単純なアプローチは、プロトタイプ ベースのプログラミングのようです。必要なのは、基本的に連想配列ファーストクラスの関数だけです。

ディクショナリを含む多くのデータ構造は関数の観点から実装できるため、チューリング完全な計算モデル全体をカバーする構文シュガーとラムダ計算にすぐにたどり着きます。

于 2011-02-02T12:50:40.793 に答える
0

興味深い質問ですが、それが賢明かどうかは完全にはわかりません。

1 と 0 は、コンピューター サイエンスにおけるアトムであると考えてください。それらは厳密には分割できません。そして、それらのさまざまな組み合わせにより、あらゆる種類の驚くべき特性を持つプログラムが生まれます。ただし、抽象度が低すぎるため、1 と 0 で記述するのは適切ではありません。

同じ問題があなたの言語にも降りかかると思います。どんなものでも構築できるほど柔軟性があれば、それは使えませんし、そうでなければ、要件を満たしていません。

于 2011-02-01T03:54:20.280 に答える
0

Smalltalk は非常に限定されたプリミティブ セットに基づいて構築されていますが、オブジェクト指向イデオムはアトミックです。理論的には、 SK ロジックやラムダ計算のような単純なベースの上に任意の複雑な言語を構築できます。オブジェクト指向の機能も同じで、より原始的なセットに減らすことができます。プリミティブな Lisp マクロの上にあるオブジェクト指向システムが良い例です。

更新: 一般に用語書き換えシステムを見てください。これは、単純なものの上に複雑なセマンティクスを定義するための強力な手法です。

本を読むこともお勧めします http://www.cambridge.org/gb/knowledge/isbn/item1132720/?site_locale=en_GB

于 2011-02-02T12:01:32.647 に答える