程序員與哲學家

 英文原文:If Philosophers Were Programmershtml

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

若是哲學家是程序員

        那麼依此來看,咱們能夠將程序語言背後的思惟與哲學家們多年的思想很好地關聯起來。咱們徹底有足夠的理由將程序語言視爲一個虛擬世界中的各類不一樣流派的哲學,在這個虛擬世界中存在交互的實體。即便是最基本的哲學命題都有有趣的轉換:好比,「什麼是自我意識?」轉換爲「什麼是反射?(reflection)編程

        接下來是更有趣的問題:「若是哲學家們是程序員?那麼他們會使用那種程序語言呢?」好吧,下面是個人答案!編程語言

        蘇格拉底:硬派彙編程序員函數式編程

若是哲學家是程序員

        蘇格拉底是哲學的奠定者之一,但這並非惟一相同之處(彙編是一切程序語言之祖)。蘇格拉底自創了一種明智的方法論,能夠贏得每次辯論。他依靠不斷地提問,直到(回答者)自相矛盾。好比,當有人聲稱「道德是重要的」,蘇格拉底則問道「那麼,你如何來定義道德呢?」函數

        一樣地,彙編程序中的任何(符號)都意味着問題。沒有什麼是預先設定好的(至少對純彙編 而言,而不是那些混雜了庫和其餘東西的彙編),而且全部的東西必定有很是清晰的含義。若是你和程序員蘇格拉底在一塊工做,而且給他看了相似這行的代碼 「var x = null;」,你的這位搭檔必定會開始問到「什麼是 var」!編碼

        亞里斯多德:大牛 程序員3d

若是哲學家是程序員

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

        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 是純函數式程序語言,它從新定義了程序員使用抽象數據類型的方式,正如維特根斯坦像蘇格拉底的辯論法同樣,革新了現代西方哲學。

        上面這些聽起來也許有點奇怪,可是對程序員來講,很容易意識到它們之間深層次的聯繫,但我不肯定哲學家們是否持有相同的觀點。不管如何,至少是如今能夠理解,爲何在維基百科中每一篇關於程序語言的文章中,都有「語言哲學」這特別的一節。

來自: 譯言
相關文章
相關標籤/搜索