"
"
如果哲學家是程序員,他們會使用哪種語言?

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

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

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

01

"
如果哲學家是程序員,他們會使用哪種語言?

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

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

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

01

如果哲學家是程序員,他們會使用哪種語言?

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

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

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

02

"
如果哲學家是程序員,他們會使用哪種語言?

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

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

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

01

如果哲學家是程序員,他們會使用哪種語言?

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

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

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

02

如果哲學家是程序員,他們會使用哪種語言?

亞里士多德:大牛C程序員

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

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

03

"
如果哲學家是程序員,他們會使用哪種語言?

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

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

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

01

如果哲學家是程序員,他們會使用哪種語言?

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

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

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

02

如果哲學家是程序員,他們會使用哪種語言?

亞里士多德:大牛C程序員

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

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

03

如果哲學家是程序員,他們會使用哪種語言?

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

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

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

04

"
如果哲學家是程序員,他們會使用哪種語言?

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

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

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

01

如果哲學家是程序員,他們會使用哪種語言?

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

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

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

02

如果哲學家是程序員,他們會使用哪種語言?

亞里士多德:大牛C程序員

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

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

03

如果哲學家是程序員,他們會使用哪種語言?

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

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

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

04

如果哲學家是程序員,他們會使用哪種語言?

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

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

最有意思的是,Perl是在80年代發明的,在這個年代裡面邏輯/函數式編程最終找到了它們在程序語言世界中的位置。然而,Perl社區(和語言)和斯多葛學派有著驚人的相似。Perl作為一門語言,易擴展又靈活。

事實上,Perl世界中最流行的話是“不止一種方式”,簡稱為TIMTOADY(there is more than on way to do it)。Perl背後的哲學拒絕語法上的約束,給程序員們編碼時足夠自由的風格,但同時鼓勵他們共享和參與社區。Perl的強大源於CPAN社區的存在,裡面的模塊和軟件被全球的Perl程序員快樂地分享著。這門語言一直在默默影響編程世界,其深遠非立見。可以一提的是Perl對腳本編程、動態類型編程和函數式編程的強烈影響,但總之可以簡單地歸結為一句在Perl粉中廣為流傳的笑話:下一輪市場崩盤將由某個Perl腳本中的bug所引發。

05

"
如果哲學家是程序員,他們會使用哪種語言?

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

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

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

01

如果哲學家是程序員,他們會使用哪種語言?

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

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

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

02

如果哲學家是程序員,他們會使用哪種語言?

亞里士多德:大牛C程序員

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

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

03

如果哲學家是程序員,他們會使用哪種語言?

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

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

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

04

如果哲學家是程序員,他們會使用哪種語言?

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

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

最有意思的是,Perl是在80年代發明的,在這個年代裡面邏輯/函數式編程最終找到了它們在程序語言世界中的位置。然而,Perl社區(和語言)和斯多葛學派有著驚人的相似。Perl作為一門語言,易擴展又靈活。

事實上,Perl世界中最流行的話是“不止一種方式”,簡稱為TIMTOADY(there is more than on way to do it)。Perl背後的哲學拒絕語法上的約束,給程序員們編碼時足夠自由的風格,但同時鼓勵他們共享和參與社區。Perl的強大源於CPAN社區的存在,裡面的模塊和軟件被全球的Perl程序員快樂地分享著。這門語言一直在默默影響編程世界,其深遠非立見。可以一提的是Perl對腳本編程、動態類型編程和函數式編程的強烈影響,但總之可以簡單地歸結為一句在Perl粉中廣為流傳的笑話:下一輪市場崩盤將由某個Perl腳本中的bug所引發。

05

如果哲學家是程序員,他們會使用哪種語言?

笛卡爾:真正的Java大師

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

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

06

"
如果哲學家是程序員,他們會使用哪種語言?

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

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

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

01

如果哲學家是程序員,他們會使用哪種語言?

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

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

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

02

如果哲學家是程序員,他們會使用哪種語言?

亞里士多德:大牛C程序員

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

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

03

如果哲學家是程序員,他們會使用哪種語言?

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

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

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

04

如果哲學家是程序員,他們會使用哪種語言?

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

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

最有意思的是,Perl是在80年代發明的,在這個年代裡面邏輯/函數式編程最終找到了它們在程序語言世界中的位置。然而,Perl社區(和語言)和斯多葛學派有著驚人的相似。Perl作為一門語言,易擴展又靈活。

事實上,Perl世界中最流行的話是“不止一種方式”,簡稱為TIMTOADY(there is more than on way to do it)。Perl背後的哲學拒絕語法上的約束,給程序員們編碼時足夠自由的風格,但同時鼓勵他們共享和參與社區。Perl的強大源於CPAN社區的存在,裡面的模塊和軟件被全球的Perl程序員快樂地分享著。這門語言一直在默默影響編程世界,其深遠非立見。可以一提的是Perl對腳本編程、動態類型編程和函數式編程的強烈影響,但總之可以簡單地歸結為一句在Perl粉中廣為流傳的笑話:下一輪市場崩盤將由某個Perl腳本中的bug所引發。

05

如果哲學家是程序員,他們會使用哪種語言?

笛卡爾:真正的Java大師

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

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

06

如果哲學家是程序員,他們會使用哪種語言?

康德:首位Python程序員

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

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

07

"
如果哲學家是程序員,他們會使用哪種語言?

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

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

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

01

如果哲學家是程序員,他們會使用哪種語言?

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

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

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

02

如果哲學家是程序員,他們會使用哪種語言?

亞里士多德:大牛C程序員

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

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

03

如果哲學家是程序員,他們會使用哪種語言?

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

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

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

04

如果哲學家是程序員,他們會使用哪種語言?

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

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

最有意思的是,Perl是在80年代發明的,在這個年代裡面邏輯/函數式編程最終找到了它們在程序語言世界中的位置。然而,Perl社區(和語言)和斯多葛學派有著驚人的相似。Perl作為一門語言,易擴展又靈活。

事實上,Perl世界中最流行的話是“不止一種方式”,簡稱為TIMTOADY(there is more than on way to do it)。Perl背後的哲學拒絕語法上的約束,給程序員們編碼時足夠自由的風格,但同時鼓勵他們共享和參與社區。Perl的強大源於CPAN社區的存在,裡面的模塊和軟件被全球的Perl程序員快樂地分享著。這門語言一直在默默影響編程世界,其深遠非立見。可以一提的是Perl對腳本編程、動態類型編程和函數式編程的強烈影響,但總之可以簡單地歸結為一句在Perl粉中廣為流傳的笑話:下一輪市場崩盤將由某個Perl腳本中的bug所引發。

05

如果哲學家是程序員,他們會使用哪種語言?

笛卡爾:真正的Java大師

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

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

06

如果哲學家是程序員,他們會使用哪種語言?

康德:首位Python程序員

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

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

07

如果哲學家是程序員,他們會使用哪種語言?

維特根斯坦:天才Haskell程序員

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

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

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

【譯註】

毫無疑問,這種比較令程序員興奮,卻無可避免地牽強。但文章開頭提出的想法卻很有意思,也的確如此。語言,不管什麼語言,到底是一種看法(opinion),有些很有看法(比如 Python 或者 Java),有些沒啥看法(比如 C 或者 Lisp)。

哲學家們莫不如此,企圖用概念和觀點重建整個世界,此等野心程序員有之,大獨裁者更有之,區別在於前者對機器,後者對人。觀念很好,不可濫用。如果讓我只保留一種觀念,我寧願是“允許存在不同的觀念” 這個 meta 觀念。換句話說,就是我喜歡蘇格拉底之針刺,亞里斯多德之博學,柏拉圖之純粹,斯多葛之真誠,笛卡爾之完美,康德之理性,和維特根斯坦之變革。

譯者:紫牛

原文作者:developeronline.blogspot.com

"
如果哲學家是程序員,他們會使用哪種語言?

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

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

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

01

如果哲學家是程序員,他們會使用哪種語言?

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

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

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

02

如果哲學家是程序員,他們會使用哪種語言?

亞里士多德:大牛C程序員

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

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

03

如果哲學家是程序員,他們會使用哪種語言?

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

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

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

04

如果哲學家是程序員,他們會使用哪種語言?

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

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

最有意思的是,Perl是在80年代發明的,在這個年代裡面邏輯/函數式編程最終找到了它們在程序語言世界中的位置。然而,Perl社區(和語言)和斯多葛學派有著驚人的相似。Perl作為一門語言,易擴展又靈活。

事實上,Perl世界中最流行的話是“不止一種方式”,簡稱為TIMTOADY(there is more than on way to do it)。Perl背後的哲學拒絕語法上的約束,給程序員們編碼時足夠自由的風格,但同時鼓勵他們共享和參與社區。Perl的強大源於CPAN社區的存在,裡面的模塊和軟件被全球的Perl程序員快樂地分享著。這門語言一直在默默影響編程世界,其深遠非立見。可以一提的是Perl對腳本編程、動態類型編程和函數式編程的強烈影響,但總之可以簡單地歸結為一句在Perl粉中廣為流傳的笑話:下一輪市場崩盤將由某個Perl腳本中的bug所引發。

05

如果哲學家是程序員,他們會使用哪種語言?

笛卡爾:真正的Java大師

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

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

06

如果哲學家是程序員,他們會使用哪種語言?

康德:首位Python程序員

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

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

07

如果哲學家是程序員,他們會使用哪種語言?

維特根斯坦:天才Haskell程序員

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

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

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

【譯註】

毫無疑問,這種比較令程序員興奮,卻無可避免地牽強。但文章開頭提出的想法卻很有意思,也的確如此。語言,不管什麼語言,到底是一種看法(opinion),有些很有看法(比如 Python 或者 Java),有些沒啥看法(比如 C 或者 Lisp)。

哲學家們莫不如此,企圖用概念和觀點重建整個世界,此等野心程序員有之,大獨裁者更有之,區別在於前者對機器,後者對人。觀念很好,不可濫用。如果讓我只保留一種觀念,我寧願是“允許存在不同的觀念” 這個 meta 觀念。換句話說,就是我喜歡蘇格拉底之針刺,亞里斯多德之博學,柏拉圖之純粹,斯多葛之真誠,笛卡爾之完美,康德之理性,和維特根斯坦之變革。

譯者:紫牛

原文作者:developeronline.blogspot.com

如果哲學家是程序員,他們會使用哪種語言?

"

相關推薦

推薦中...