3

有在supervening relationships一種美的構建面向對象的編程語言。考慮以下示例:從「原子」

  1. 原子由亞原子粒子,分子由原子組成,細胞分子組成,器官是由細胞,人是由器官,社會是由人。
  2. game of Go的複雜的策略是在需要做出結構與「兩隻眼睛」,使他們能活得下去建 - 然而,「兩隻眼睛」的事情永遠不會在規則中所規定,但本身的涌現性Go的非常簡單的規則。
  3. Conway's_Game_of_Life圖靈完整性可以在glidersgunsspaceships術語,這是在轉基於開啓和關閉和very simple set of rules的概念證明。

在所有情況下,一組最小的對象和一組最小的規則最終導致非常複雜的結構。

我的第一個問題:是否有可能勾畫出一小組和一組可用於構建OOP語言的編程「對象」和「規則」?

現在,聰明計算機科學家很可能指向的rule 110圖靈完備性,並說,這是你所需要的!但那不是我想要的。相反,冒着不明確問題的風險,可以將哪些最簡單的,人類可理解的概念構建到面向對象的編程語言中?

對於暗示我想要什麼不好的和不完整的例子,定義了三個概念對象:一個參考,一個功能信息持有者。然後(等級2?)將結構定義爲信息持有者,其通過對其他信息文件夾的引用來保存其他信息。一個基本的(3級?)將增加結構一起功能的引用,但額外的結構必須被用來處理私人與公共職能的概念。最終,我們應該獲得全功能的OOP語言,該語言完全基於基本概念構建,並且我們無法通過硬編碼優化或語法鹽與機器碼來欺騙。理想情況下,最終結果仍然是有吸引力和可讀性的代碼。

我的第二個問題:有沒有任何OOP語言在那裏已經接近這個?

+0

此前已經完成(http://goo.gl/9RHP4),不止一次。我的一位教授創建了一種語言,定義了所有以0/1爲布爾代數開始的離散數學;如果你有興趣,我可能會找到一個參考。 – Apalala 2011-02-01 14:46:17

+0

@Apalala如果不難找到參考,那麼我會感興趣。但不要花太多時間。你給了我一個Lisp參考。我想知道Lisp是否會在這次談話中露面。 – JnBrymn 2011-02-01 15:28:00

+0

貝瑞曼我找到了參考。矛盾的是,要定義一種語言,你必須用某種語言來完成它。該參考使用謂詞邏輯,所以我不認爲你會感興趣。 – Apalala 2011-02-18 14:51:00

回答

1

原型

IO語言參考給出了一個很好的提示 - OOP的最簡單的計算策略似乎是prototype based programming。您所需要的基本上是關聯陣列一等功能。由於包括字典在內的許多數據結構都可以用函數in terms來實現,所以我們很快就會涉及一些語法糖和lambda calculus,它涵蓋了一個完整的圖靈完整計算模型。

1

io可能是在那裏最接近的語言,你在找什麼。

0

有趣的問題,但我不能完全肯定這是明智的。

考慮到1和0是我們在計算機科學中的原子。它們是嚴格不可分割的。它們的不同組合可以產生各種令人驚歎的屬性。但是,由於抽象級別太低,所以寫入1和0是不合適的。

我覺得同樣的問題會降臨你的語言。如果它足夠靈活以允許構建任何東西,那將是無法使用的,如果不是,它不會滿足您的要求。

0

Smalltalk建立在一個非常有限的一組基元上,但OO ideoms在那裏是原子。理論上,您可以在基礎之上構建任意複雜的語言,就像SK logic或lambda演算一樣簡單。面向對象的功能沒有什麼不同,它們可以簡化爲更原始的設置。在原始Lisp宏的頂部的任何OO系統都可以成爲一個很好的例子。

更新:看一看在Term Rewriting Systems一般,它是對簡單事物的頂部定義複雜語義的強大技術。

我也建議你閱讀一本書http://www.cambridge.org/gb/knowledge/isbn/item1132720/?site_locale=en_GB