Posted on 2007-07-17 09:20
dennis 閱讀(1550)
評論(8) 編輯 收藏 所屬分類:
涂鴉 、
my open-source
先讓我們來了解下柏拉圖對世界的理解,柏拉圖認為,自然界中有形的東西是流動的,但是構成這些有形物質的“形式”或“理念”卻是永恒不變的。柏拉圖指出,當我們說到“馬”時,我們沒有指任何一
匹馬,而是稱任何一種馬。而“馬”的含義本身獨立于各種馬(“有形的”),它不存在于空間和時間中,因此是永恒的。但是某一匹特定的、有形的、存在于感官
世界的馬,卻是“流動”的,會死亡,會腐爛。柏拉圖把這個永恒不變的“形式”稱為“理型”,他認為這個世界分為兩個部分,一部分是完美的由“理型”組成的世界,另一個就是我們現實的“粗糙”的世界,真實世界是按照理型世界的標準設計的,總是努力達致完美的理型世界,但總是存有偏差。
因此他相信人類的靈魂是不朽的,靈魂蘇醒后會向往回到完美“理型”的世界,人生來就有“理型”的觀念。總之,柏拉圖深信“理性”遠比“感官”可靠。而他的學生亞里士多德卻反駁他的老師,在亞里士多德看來,他也贊成世界是有變化的“質料”與不變的“形式”組成,比如具體的某只馬是有一些“質料”組成,它有馬的“形式”在里頭,因此它被稱為馬。而“形式”存在于具體的“物”之中,比如“馬”的含義就存在具體的千千萬萬只馬之中,
“形式”的觀念并不是人與生俱來的,而是借助于“感官”去感知外界事物而得來的。他把這種“形式”更多地稱為“特征”,由此提出了他的自然界分類觀點,對“物”分類依據的是它能做什么以及它有什么特征??梢哉f,亞里士多德比他的老師更相信“感官”,沒有像他的老師那樣陷入對完美“理型世界”的眷念而不可自拔。
聯想到我們在使用靜態OO語言(比如java)試圖去描述現實世界的場景,我們總是試圖先設計出一些類(class),這些類秉承我們的意志,我們預期它們能完美地描述事物,并且試圖去符合所有的現實的場景??梢宰⒁獾?,這樣的想法不正是柏拉圖式的偏執?我們用頭腦中出現的“理型”(具體到語言中的類)去描述現實世界,可現實世界往往是模糊的、粗糙的,兩者的沖突不可避免,導致類不再按照我們的設想發展,它變的龐大,變的不是那么清晰,因此我們又造出“設計模式”“重構”的“詭辯之術”去彌補、去完整,可這并不是治本之道。首先我們必須承認世界是不完美的,完美的“理型”或者說完美的類是不存在的,類型的劃分不能依賴于頭腦中的完美“理型”(類型的劃分不是取決于類),而應該根據事物的特征以及事物能做什么來劃分。放棄對類描述世界的追求,轉而構造模糊的類型,對象的類型不再預先構造,它的類型取決于它能干什么,它有什么特征,這正是動態語言中的“Duck-Typing”以及一些函數式語言中的模式匹配希望做到的,兩者都是為了描述模糊的現實世界。再比如ruby中的mixin和open class特性又提供了方式讓我們去慢慢完善“粗糙”的類,放棄一蹴而就,選擇有機成長。
不是很清晰的想法,只是看《蘇菲的世界》里對希臘古典哲學的描述突然想到的,各位權當荒唐言。
評論
# re: 關于靜態與動態之辯的一點想法 回復 更多評論
2007-07-17 09:45 by
驚為天人。。。以為走錯了地兒。。
# re: 關于靜態與動態之辯的一點想法 回復 更多評論
2007-07-17 10:06 by
不過還好程序語言不是用來描述世界
# re: 關于靜態與動態之辯的一點想法 回復 更多評論
2007-07-17 11:08 by
寫的很好,學哲學的?
# re: 關于靜態與動態之辯的一點想法 回復 更多評論
2007-07-17 11:44 by
@itkui
學哲學?您也太看得起我了,是看《蘇菲的世界》,一本用偵探小說形式討論哲學的入門讀物
# re: 關于靜態與動態之辯的一點想法 回復 更多評論
2007-07-17 16:55 by
@dennis
你好有想法呀~
# re: 關于靜態與動態之辯的一點想法 回復 更多評論
2007-07-18 13:16 by
寫的很好。
OO的問題不僅僅是用“理型”有意地忽略了“個性”,而且由于Class=attributes+methods的簡單,很難表達真實世界中事物的復雜性。
程序語言不是用來描述世界的,但是卻是用來映射世界的。
至少,現在的程序語言所能映射的是一種機械的、不完備的世界。
人對世界的理解之所以能超越計算機,是因為人的思維可以“模糊”、可以“抽象”,可以具有不確定性。順便說一下,最新的物理研究認為宇宙中充滿著不確定性,牛頓定律只是概率最大的一種情況而已。
# re: 關于靜態與動態之辯的一點想法 回復 更多評論
2007-07-18 23:32 by
@心內求法
有道理,感覺程序設計本身就是一個哲學問題
# re: 關于靜態與動態之辯的一點想法 回復 更多評論
2007-07-19 12:48 by
樓主說的及至,相信有過靜態語言面向對象設計經驗的人都會有此同感。
讓我沒想到的是,竟然幾千年前的古人就曾討論過此問題!