如果哲學(xué)家是程序員
盡管沒那么明顯,但至少對我而言,哲學(xué)與編程有很深刻的關(guān)系。你想想看,軟件代碼無非是反應(yīng)了開發(fā)者看問題的視角和解決方案。在開始編碼之前,開發(fā) 人員會花時間反復(fù)思考待解決的問題,明確該問題的要點以及它們之間關(guān)系,這種過程正好反應(yīng)了他們看待這個世界的哲學(xué)。同樣地,哲學(xué)家們都在不停地琢磨他們 所關(guān)心問題的重要特征,比如生命、意識或者上帝。
那么依此來看,我們可以將程序語言背后的思維與哲學(xué)家們多年的思想很好地關(guān)聯(lián)起來。我們完全有足夠的理由將程序語言視為一個虛擬世界中的各種不同流派的哲學(xué),在這個虛擬世界中存在交互的實體。即使是最基本的哲學(xué)命題都有有趣的轉(zhuǎn)換:比如,“什么是自我意識?”轉(zhuǎn)換為“什么是反射?(reflection)”
接下來是更有趣的問題:“如果哲學(xué)家們是程序員?那么他們會使用那種程序語言呢?”好吧,下面是我的答案!
蘇格拉底:硬派匯編程序員
蘇格拉底是哲學(xué)的奠基者之一,但這并不是唯一相同之處(匯編是一切程序語言之祖)。蘇格拉底自創(chuàng)了一種明智的方法論,可以贏得每次辯論。他依靠不斷地提問,直到(回答者)自相矛盾。比如,當有人聲稱“道德是重要的”,蘇格拉底則問道“那么,你如何來定義道德呢?”
同樣地,匯編程序中的任何(符號)都意味著問題。沒有什么是預(yù)先設(shè)定好的(至少對純匯編而言,而不是那些混雜了庫和其 他東西的匯編),并且所有的東西一定有非常清晰的含義。如果你和程序員蘇格拉底在一塊工作,并且給他看了類似這行的代碼“var x = null;”,你的這位搭檔一定會開始問到“什么是var”!
亞里斯多德:大牛 C 程序員
亞里斯多德對西方哲學(xué)有巨大的影響,創(chuàng)建了很多科學(xué)領(lǐng)域,從物理學(xué)到生物學(xué)。他第一個仔細研究實體是萬物之本質(zhì)命題;與柏拉圖的抽象形成了對比。他的哲學(xué)采用了中庸的方法去獲得道德或者是理解生活(物質(zhì)與形式)
C語言對其他程序語言有著同等規(guī)模的重要影響,在語法層面尤其如此。而且,在70年代早期的時候,C語言被視為所謂的高級語言和匯編語言的中庸之道:既可以編寫機器獨立的程序,也具備訪問底層的能力。
柏拉圖:理想的 C++ 傳教士
柏拉圖是哲學(xué)中一個大人物,他是蘇格拉底的學(xué)生,也是亞里斯多德的老師。那么,我要向你解釋一個明顯的疑問:C++(柏拉圖)怎么會在C(亞里斯多德)之后?讓我來解釋。柏拉圖以他的形式或理念而聞名,引出了我們周遭萬物所存在的理念世界。因此,你桌子上的茶杯不過是理念世界中具有橢圓形狀的對象的一個影子。用編程的行話來講就是,它是茶杯類的一個實例。
同樣地,C++作為C的擴展,是第一門嘗試在任何實現(xiàn)之前,就提供給程序員抽象問題的能力的語言。這本身是巨大的進步,即使解決問題的代碼未寫一 行,對問題的分類和建模顯得易懂且有用。你也許奇怪為什么柏拉圖不用Java,他當然可以,不過這個故事另有隱情:柏拉圖對用符號去表達他的形式理念不是 那么有信心,而且他偏愛對話體(參見斐多)。同樣地,C++不是很自信它的發(fā)展方向,所以仍然保留C作為其子集,并完全地向后兼容不那么理想的C語法。
斯多葛學(xué)派:快樂的 Perl 學(xué)派
斯多葛和他們的哲學(xué)(斯多葛學(xué)派)對西方哲學(xué),乃至世界哲學(xué)和文化都有著潛移默化而且深遠的影響。有意思的是,他們不是一個人,而是相互協(xié)作的群 體。斯多葛拒絕任何非物質(zhì)的東西,并且試圖使用命題邏輯解釋這個世界。因此,斯多葛學(xué)派拒絕任何理念,而專注于道德:他們讓我們遠離任何無法控制的事物, 而不是通過自我審思獲得真智慧。斯多葛學(xué)派拒絕政治體制和形式主義,并提倡蘇格拉底的公民社會。人們要成為兄弟,消除差別,為友愛的社會貢獻自己(世界各 國之共同法律)。你應(yīng)當注意到他們對大宗教,比如基督教和佛教的影響。
最有意思的是,Perl是在80年代發(fā)明的,在這個年代里面邏輯/函數(shù)式編程最終找到了它們在程序語言世界中的位置。然而,Perl社區(qū)(和語言) 和斯多葛學(xué)派有著驚人的相似。Perl作為一門語言,易擴展又靈活。事實上Perl世界中最流行的話是“不止一種方式”,簡稱為 TIMTOADY(there is more than on way to do it)。Perl背后的哲學(xué)拒絕語法上的約束,給程序員們編碼時足夠自由的風格,但同時鼓勵他們共享和參與社區(qū)。Perl的強大源于CPAN社區(qū)的存在, 里面的模塊和軟件被全球的Perl程序員快樂地分享著。這門語言一直在默默影響編程世界,其深遠非立見。可以一提的是Perl對腳本編程、動態(tài)類型編程和 函數(shù)式編程的強烈影響,但總之可以簡單地歸結(jié)為一句在Perl粉中廣為流傳的笑話:下一輪市場崩盤將由某個Perl腳本中的bug所引發(fā)。
勒奈·笛卡爾:真正的 Java 大師
笛卡爾是反對經(jīng)典古希臘哲學(xué)的第一位西方哲學(xué)家。他的核心思想在他的《哲學(xué)原理》中著名的第七章有所提及,該書基于我思(理性自我)這一概念。笛卡 爾相信懷疑是存在的證明,我思是懷疑的起因,因此得出了著名的“我思故我在”。我思并不是我們進行的一項活動,而是我們的所有活動。所以,我們所要、所想 和所感,通過我思都可以直接獲得,笛卡爾幾乎“證明”了上帝的存在,理由是人們能夠思考上帝存在之必要這一問題。事實上,任何理念或者形式都可以通過我思 來獲得。笛卡爾在哲學(xué)中的另一重要貢獻是:從他開始,哲學(xué)盡量避免模糊的抽象之論,去追求簡練而近于幾何理論的形式。笛卡爾以近乎定理的形式闡述了他的思 想。
笛卡爾絕對是完美的Java大師。Java是第一門強類型語言,它的每一樣?xùn)|西在使用之前必須有一個類型(或哲學(xué)地說,它們共享一種形式),這非常 符合笛卡爾關(guān)于他精確言談的努力。笛卡爾的我思是柏拉圖形式的再現(xiàn),區(qū)別在于,笛卡爾認為理念存在,是因為我們思考,而且它并不存在于另一個宇宙。他的哲 學(xué)可以說是純面向?qū)ο蟮模俏覀兊玫降慕鉀Q方案,也是我們智慧的直接產(chǎn)物。
伊曼努爾·康德:首位 Python 程序員
康德找了通往哲學(xué)殿堂的“簡易”方法:放棄采用笛卡爾的我思和經(jīng)驗主義這兩種對立、相反的學(xué)說中的任何一種,而大喊“都要”。康德審視了人類的理 性,聲稱被先驗理性過濾的經(jīng)驗?zāi)芡ㄏ蛘胬怼.斔恼軐W(xué)成熟后,開始研究美學(xué),試圖理論化解釋人的審美。康德極端精準的性格,癡迷于整潔和精確,在每天固定 的時刻做固定的事情,以至于他的熟人竟然將他“用于”計時。
同樣地,Python是一門嘗試將各種解決方案組合在一起的新程序語言。它是多范式的程序語言,從面向?qū)ο缶幊痰交谄跫s的編程。Python程序 員拒絕像Perl一樣自由表達的形式,同時又從它借鑒了不少特性。Python強調(diào)簡潔和清晰的代碼。Python太“癡迷”于此,以致將空白縮進作為代 碼塊的分隔符。在“Python之禪”的19條教義中首條便是“美勝于丑”。康德對美和藝術(shù)的追求,讓他成為名副其實的首位Python程序員。
路德維希·維特根斯坦:天才 Haskell 程序員
維特根斯坦猶如蘇格拉底的辯經(jīng),深刻地革命了西方哲學(xué)。他的札記般的哲學(xué)著作《邏輯哲學(xué)論》堪比邏輯學(xué)艱深的研究生數(shù)學(xué)讀本。維特根斯坦指出語義和 符號形式是一切這些問題的根源,剩下的都可明確地歸為科學(xué)的范疇。依靠純邏輯,他推導(dǎo)出語言內(nèi)在的歧義性決定了哲學(xué)不過是在重復(fù)它自己,并且以這句“但凡不可言所,務(wù)必保持沉默”的曠世名言結(jié)束了本書,同時聲稱解決了所有的哲學(xué)問題。
維特根斯坦是天生的 Haskell 程序員。Haskell 不是第一門函數(shù)式編程語言,而是在80年代后期出現(xiàn)的,并被視為最為重要的函數(shù)式語言。Haskell 并不是適合所有人,就像《邏輯哲學(xué)論》一樣。如維基百科中所寫,它有嚴格的數(shù)學(xué)和邏輯形式。Haskell 是純函數(shù)式程序語言,它重新定義了程序員使用抽象數(shù)據(jù)類型的方式,正如維特根斯坦像蘇格拉底的辯論法一樣,革新了現(xiàn)代西方哲學(xué)。
上面這些聽起來也許有點奇怪,但是對程序員來說,很容易意識到它們之間深層次的聯(lián)系,但我不確定哲學(xué)家們是否持有相同的觀點。無論如何,至少是現(xiàn)在可以理解,為什么在維基百科中每一篇關(guān)于程序語言的文章中,都有“語言哲學(xué)”這特別的一節(jié)。
原文鏈接:http://developeronline.blogspot.kr/2009/04/if-philosophers-were-programmers.html