如果哲學家是程序員

jopen 11年前發布 | 8K 次閱讀 程序員

        英文原文:If Philosophers Were Programmers

        盡管沒那么明顯,但至少對我而言,哲學與編程有很深刻的關系。你想想看,軟件代碼無非是反應了開發者看問題的視角和解決方案。在開始編碼之前, 開發人員會花時間反復思考待解決的問題,明確該問題的要點以及它們之間關系,這種過程正好反應了他們看待這個世界的哲學。同樣地,哲學家們都在不停地琢磨 他們所關心問題的重要特征,比如生命、意識或者上帝。

如果哲學家是程序員

        那么依此來看,我們可以將程序語言背后的思維與哲學家們多年的思想很好地關聯起來。我們完全有足夠的理由將程序語言視為一個虛擬世界中的各種不同流派的哲學,在這個虛擬世界中存在交互的實體。即使是最基本的哲學命題都有有趣的轉換:比如,“什么是自我意識?”轉換為“什么是反射?(reflection)

        接下來是更有趣的問題:“如果哲學家們是程序員?那么他們會使用那種程序語言呢?”好吧,下面是我的答案!

        蘇格拉底:硬派匯編程序員

如果哲學家是程序員

        蘇格拉底是哲學的奠基者之一,但這并不是唯一相同之處(匯編是一切程序語言之祖)。蘇格拉底自創了一種明智的方法論,可以贏得每次辯論。他依靠不斷地提問,直到(回答者)自相矛盾。比如,當有人聲稱“道德是重要的”,蘇格拉底則問道“那么,你如何來定義道德呢?”

        同樣地,匯編程序中的任何(符號)都意味著問題。沒有什么是預先設定好的(至少對純匯編 而言,而不是那些混雜了庫和其他東西的匯編),并且所有的東西一定有非常清晰的含義。如果你和程序員蘇格拉底在一塊工作,并且給他看了類似這行的代碼 “var x = null;”,你的這位搭檔一定會開始問到“什么是 var”!

        亞里斯多德:大牛 程序員

如果哲學家是程序員

        亞里斯多德對西方哲學有巨大的影響,創建了很多科學領域,從物理學到生物學。他第一個仔細研究實體是萬物之本質命題;與柏拉圖的抽象形成了對比。他的哲學采用了中庸的方法去獲得道德或者是理解生活(物質與形式)

        C 語言對其他程序語言有著同等規模的重要影響,在語法層面尤其如此。而且,在 70 年代早期的時候,C語言被視為所謂的高級語言和匯編語言的中庸之道:既可以編寫機器獨立的程序,也具備訪問底層的能力。

        柏拉圖:理想的 C++ 傳教士

如果哲學家是程序員

        柏拉圖是哲學中一個大人物,他是蘇格拉底的學生,也是亞里斯多德的老師。那么,我要向你解釋一個明顯的疑問:C++(柏拉圖)怎么會在C(亞里斯多德)之后?讓我來解釋。柏拉圖以他的形式或理念而聞名,引出了我們周遭萬物所存在的理念世界。因此,你桌子上的茶杯不過是理念世界中具有橢圓形狀的對象的一個影子。用編程的行話來講就是,它是茶杯類的一個實例。

        同樣地,C++作為C的擴展,是第一門嘗試在任何實現之前,就提供給程序員抽象問題的能力的語言。這本身是巨大的進步,即使解決問題的代碼未寫 一行,對問題的分類和建模顯得易懂且有用。你也許奇怪為什么柏拉圖不用 Java,他當然可以,不過這個故事另有隱情:柏拉圖對用符號去表達他的形式理念不是那么有信心,而且他偏愛對話體(參見斐多)。同樣地,C++不是很自 信它的發展方向,所以仍然保留C作為其子集,并完全地向后兼容不那么理想的C語法。

        斯多葛學派:快樂的 Perl 學派

如果哲學家是程序員

        斯多葛和他們的哲學(斯多葛學派)對西方哲學,乃至世界哲學和文化都有著潛移默化而且深遠的影響。有意思的是,他們不是一個人,而是相互協作的 群體。斯多葛拒絕任何非物質的東西,并且試圖使用命題邏輯解釋這個世界。因此,斯多葛學派拒絕任何理念,而專注于道德:他們讓我們遠離任何無法控制的事 物,而不是通過自我審思獲得真智慧。斯多葛學派拒絕政治體制和形式主義,并提倡蘇格拉底的公民社會。人們要成為兄弟,消除差別,為友愛的社會貢獻自己(世 界各國之共同法律)。你應當注意到他們對大宗教,比如基督教和佛教的影響。

如果哲學家是程序員

        最有意思的是,Perl 是在 80 年代發明的,在這個年代里面邏輯/函數式編程最終找到了它們在程序語言世界中的位置。然而,Perl 社區(和語言)和斯多葛學派有著驚人的相似。Perl 作為一門語言,易擴展又靈活。事實上 Perl 世界中最流行的話是“不止一種方式”,簡稱為 TIMTOADY (there is more than on way to do it)。Perl 背后的哲學拒絕語法上的約束,給程序員們編碼時足夠自由的風格,但同時鼓勵他們共享和參與社區。Perl 的強大源于 CPAN 社區的存在,里面的模塊和軟件被全球的 Perl 程序員快樂地分享著。這門語言一直在默默影響編程世界,其深遠非立見。可以一提的是 Perl 對腳本編程、動態類型編程和函數式編程的強烈影響,但總之可以簡單地歸結為一句在 Perl 粉中廣為流傳的笑話:下一輪市場崩盤將由某個 Perl 腳本中的 bug 所引發。

        勒奈·笛卡爾:真正的 Java 大師

如果哲學家是程序員

        笛卡爾是反對經典古希臘哲學的第一位西方哲學家。他的核心思想在他的《哲學原理》中著名的第七章有所提及,該書基于我思(理性自我)這一概念。 笛卡爾相信懷疑是存在的證明,我思是懷疑的起因,因此得出了著名的“我思故我在”。我思并不是我們進行的一項活動,而是我們的所有活動。所以,我們所要、 所想和所感,通過我思都可以直接獲得,笛卡爾幾乎“證明”了上帝的存在,理由是人們能夠思考上帝存在之必要這一問題。事實上,任何理念或者形式都可以通過 我思來獲得。笛卡爾在哲學中的另一重要貢獻是:從他開始,哲學盡量避免模糊的抽象之論,去追求簡練而近于幾何理論的形式。笛卡爾以近乎定理的形式闡述了他 的思想。

如果哲學家是程序員

        笛卡爾絕對是完美的 Java 大師。Java 是第一門強類型語言,它的每一樣東西在使用之前必須有一個類型(或哲學地說,它們共享一種形式),這非常符合笛卡爾關于他精確言談的努力。笛卡爾的我思是 柏拉圖形式的再現,區別在于,笛卡爾認為理念存在,是因為我們思考,而且它并不存在于另一個宇宙。他的哲學可以說是純面向對象的,是我們得到的解決方案, 也是我們智慧的直接產物。

        伊曼努爾·康德:首位 Python 程序員

如果哲學家是程序員

        康德找了通往哲學殿堂的“簡易”方法:放棄采用笛卡爾的我思和經驗主義這兩種對立、相反的學說中的任何一種,而大喊“都要”。康德審視了人類的 理性,聲稱被先驗理性過濾的經驗能通向真理。當他的哲學成熟后,開始研究美學,試圖理論化解釋人的審美。康德極端精準的性格,癡迷于整潔和精確,在每天固 定的時刻做固定的事情,以至于他的熟人竟然將他“用于”計時。

如果哲學家是程序員

        同樣地,Python 是一門嘗試將各種解決方案組合在一起的新程序語言。它是多范式的程序語言,從面向對象編程到基于契約的編程。Python 程序員拒絕像 Perl 一樣自由表達的形式,同時又從它借鑒了不少特性。Python 強調簡潔和清晰的代碼。Python 太“癡迷”于此,以致將空白縮進作為代碼塊的分隔符。在“Python 之禪”的 19 條教義中首條便是“美勝于丑”。康德對美和藝術的追求,讓他成為名副其實的首位 Python 程序員。

        路德維希·維特根斯坦:天才 Haskell 程序員

如果哲學家是程序員

        維特根斯坦猶如蘇格拉底的辯經,深刻地革命了西方哲學。他的札記般的哲學著作《邏輯哲學論》堪比邏輯學艱深的研究生數學讀本。維特根斯坦指出語 義和符號形式是一切這些問題的根源,剩下的都可明確地歸為科學的范疇。依靠純邏輯,他推導出語言內在的歧義性決定了哲學不過是在重復它自己,并且以這句“但凡不可言所,務必保持沉默”的曠世名言結束了本書,同時聲稱解決了所有的哲學問題。

如果哲學家是程序員

        維特根斯坦是天生的 Haskell 程序員。Haskell 不是第一門函數式編程語言,而是在 80 年代后期出現的,并被視為最為重要的函數式語言。Haskell 并不是適合所有人,就像《邏輯哲學論》一樣。如維基百科中所寫,它有嚴格的數學和邏輯形式。Haskell 是純函數式程序語言,它重新定義了程序員使用抽象數據類型的方式,正如維特根斯坦像蘇格拉底的辯論法一樣,革新了現代西方哲學。

        上面這些聽起來也許有點奇怪,但是對程序員來說,很容易意識到它們之間深層次的聯系,但我不確定哲學家們是否持有相同的觀點。無論如何,至少是現在可以理解,為什么在維基百科中每一篇關于程序語言的文章中,都有“語言哲學”這特別的一節。

來自: 譯言
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!