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