質問

ある種の美しさがあります 関係を超えています. 。次の例を考えてみましょう。

  1. 原子は亜原子粒子で構成され、分子は原子で構成され、細胞は分子で構成され、臓器は細胞で構成され、人々は臓器で構成され、社会は人々で構成されています。
  2. の複雑な戦略 ゲームのゲーム それらが生き残るために「2つの目」で構造を作る必要性に基づいて構築されています - しかし、「2つの目」のことはルールでは決して述べられていませんが、それ自体が非常に単純なルールの緊急の財産です。
  3. のチューリングの完全性 conway's_game_of_life の観点から証明することができます グライダー, 宇宙船, 、オンとオフの概念に基づいて回転し、 非常にシンプルなルールセット.

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

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

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

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

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

役に立ちましたか?

解決

プロトタイプ

io 言語リファレンスは良いヒントを与えます - OOPの最も単純な承認は プロトタイプベースのプログラミング. 。必要なのは基本的にです 連想配列ファーストクラス機能.

辞書を含む多くのデータ構造を実装できるため 用語で 機能のうち、私たちはすぐにいくつかの構文砂糖と ラムダ計算, 、チューリングの完全な計算モデル全体をカバーしています。

他のヒント

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

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

1と0はコンピューターサイエンスの原子であると考えてください。それらは厳密に不可分です。そして、それらのさまざまな組み合わせは、あらゆる種類の驚くべきプロパティでプログラムを引き起こします。ただし、抽象化のレベルが低すぎるため、1と0で書くことは適切ではありません。

同じ問題があなたの言語に降りかかると思います。何かの建設を許可するのに十分な柔軟性があれば、それは使用できず、そうでない場合、それはあなたの要件を満たしていません。

SmallTalkは非常に限られたプリミティブのセットに基づいて構築されていますが、OO IDEOMはそこに原子的です。理論的には、ベースの上に任意の複雑な言語を構築できます。 SKロジック またはラムダ計算。 OO機能は違いはありません。より原始的なセットに縮小することができます。プリミティブLISPマクロの上にあるOOシステムは、良い例です。

アップデート: :そして、見てください 期間書き換えシステム 一般に、これは、より単純なものに加えて複雑なセマンティクスを定義するための強力なテクニックです。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top