漫談哲學與編程

談到哲學,多數人都會直覺性的認爲它是很高深的一門學問。實際上大多數狀況並不是如此,哲學研究的每每是很是簡單的一些命題,而這些命題在常人看來可能並無現實意義。前端

好比說:究竟是先有雞仍是先有蛋的問題;好比說:一個號稱只給不能給本身理髮的人理髮的理髮師到底能不能給本身理髮的問題。固然本文的目的並不在於討論這兩個問題,咱們來聊聊幾個稍微簡單一些的概念:vue

哲學中的理性與感性

理性是超越的,本質在於追求無限react

++超越++的意思是說理性自己不依賴任何現實或者經驗社會中的任何對象,++無限++實際上就是說理性自己須要達到的某種理想狀態。程序員

比方說:「100%的金」 就是一種無限狀態。咱們不使用任何經驗就能夠判斷出 100% 的金是必然有的,概念上沒人可否定這一點。web

可是運用在經驗社會中的知識來判斷,這個命題就是不正確的,或者說不具備廣泛的正確性。由於咱們知道不管人類的技術如何高超也沒法制造出來 100% 的金。即便到 99.99% 邏輯上也沒到達 100%。編程

這個時候人們對於相似的事情就會產生了不一樣的反應。有的人會由於理想狀態達不到而反向地認爲原來的命題是錯誤的;有的人心裏則有一種說不清道不明的東西指引着他,不會由於到達不到無限狀態而確定整個命題。前端框架

這個問題也一直困擾了我好久,由於在現實生活中在你看來不少明顯正確的事情忽出現了一個反例,結果就會有一堆人來告訴你你錯了。前端工程師

德國哲學家康德在《純粹理性批判》這本書中給出了一種解釋:框架

理性的調節性是引導經驗去追求無限,追求絕對,可是永遠也達不到。達不到也有做用 — 它使得經驗科學不斷的前進,而且有了明確的目的和方向…electron

相似的哲學觀點好就好在一但明白了其中的本質和它闡述的真理之後,它就能夠在某種層次上解釋經驗世界的各類現象。這或許就是你們說的哲學是任何其它學科的奠定,是第一學科的緣由。

對應的在編程領域也有一些無限的概念,對於多數前端工程師來說「實現一個無限級的下拉菜單」彷佛也在表達着一種無限狀態。固然用戶在使用的時候根本不可能用到無限級的菜單,無限級的菜單在交互方面也也是極其反人類的,一步能夠作到的事情沒人願意多增長一步。可是爲何程序員們熱衷於實現這種相似的無限狀態。實際上這就是理性的力量,總有一種說不清楚的力量在引導着你,你也無法解釋。

理解了這一點你就會有一個很簡單的評判程序好壞的論點,即:程序或者代碼是否表現了某種無限狀態?若是你的程序函數裏面只是幾個簡單的 if else,那你有沒有考慮過若是當輸入不斷的增長或者變化時,原來的代碼是否還能夠正常返回。或者說在不考慮硬件等客觀條件的前提下,你的程序是否存在極限狀態。

咱們常常在知乎或者其它論壇上爭論一些問題,本質上講你們都沒有區分清楚本身對於一個論點的邏輯認知情感認知。太多人喜歡用本身的感情認知去否認邏輯事實,以致於爭來爭去誰也沒能說服誰,試圖用惟心觀點去解釋惟物的現象或者相反,這是極其不正確的。

一個典型的問題是我不久以前在知乎上回答的一個問題:誰能大體說下vue和react的最大區別之處?個人回答簡單總結就兩句話:Vue 有一種設計層面追求的簡潔感性之美,React 則是一種數學層面的邏輯一致之美。本質上講沒有什麼好壞之分。可是諸如些類的一些前端框架問題正在變成一種幫派化的「站隊」風氣。

編程中的低階(low-level)與高階(hight-level)

注意這裏講的 low/hight level 並非計算機術語中特定的某種形式。

有個笑話是這麼講的:

一個程序員去相親,程序員本身介紹說「我是作嵌入式C語言底層開發的」,妹子反問「那啥時候作到高層開發呢」?

程序員們心裏都有一個作底層開發的夢,由於這纔是一個真正的程序員的追求與理想。

可是現實每每相反,大多數程序員天天都在寫業務代碼(重複的 CRUD)。因此不少程序員得出來一個結論就是:越底層的東西越重要,越高層的東西越膚淺。一般這也會行成一條鄙視鏈,他們會情不自禁地忽略高層的東西。

注意這裏有兩個問題:

1. ++業務代碼有沒有價值++?

固然有了,業務部分的代碼是系統的最終結果。從結果導向上講底層代碼如何優雅、實現如何科學咱們根本不關心,咱們更關心整個系統層面的穩定與健壯。這是一種領導的高層次視角。

2. ++底層的東西就必定重要++?

並不必定,這裏說的不必定不是要徹底否認底層的重要性。偏偏相反,軟件領域一些特別優秀或者說偉大的軟件底層並非那麼的如人意。比方說微軟開發的 VSCode 代碼編輯器。要是從底層去討論它的構架合理性那確實挺像一個笑話的。由於本質上講 VSCode 基於 electron,它把編輯器放在了一個 webview 中去運行,可是 webview 是用來瀏覽網頁的,並且 electron 竟然把 NodeJS 運行時也整合進去,以致於最小的一個應用解壓完也有上百兆。

這感受就像是上學的時候你很期待一個數學教授教你數學課,可是實際上你的數學課倒是一個體育老師帶的,這不是可不能夠的問題對吧。

然而 VSCode 這樣作的結果是:它還真的成功了,並且編輯器的性能比不少原生軟件作的都要好,以致於周圍全部人都在使用它,VSCode 在 Github 上名列前茅,也改變了不少程序員對於微軟的刻板印象。

若是咱們再回過頭從哲學的角度去思考這個問題,實際上計算機中的底層高層正好對應着哲學中的理性感性

  • 底層更注重邏輯嚴謹,由於這是構建高層建築的基礎,它面向的是理論

  • 高層更注重表現形式,由於高層的部分呈現出來的是一個完整的系統,它面向的對象是人。是人,那需求就是多樣化的,由於人的想法老是特別的感性

理性的認知是有對錯能夠批判的,可是感性的直觀是沒有對錯的,由於即便是同一種聲音、顏色對不一樣人觀感都是不同的。

好比說你在火車上看書,對面的人說話聲音太大吵到了你。你說:大家說話小聲點能夠嗎?對方會說:車上這麼多人說話爲啥就咱們吵到你了?你說:由於就大家聲音最大。對方說:我咋沒以爲?

現實中的主觀與客觀

現實生活中咱們常常會遇到一些對於論點的評價:主觀仍是客觀。可是不少人沒搞清楚這兩個詞的關係。多數人都以爲客觀的觀點就是好的,主觀的就是臆斷的。

主觀和客觀的關係就像是主人與客人的關係同樣,有的人會認爲應該主隨客便,有的人則認爲應該是客隨主便。

  • 若是一我的表達的觀點全是主觀的,那咱們會認爲這些觀點是不能夠討論與評判的,不通過討論批判的觀點是站不住腳的。

  • 若是一我的表達的觀點全是客觀的,那彷佛也不對,由於這些觀點全是別人的,你可能忽略了本身的意識,最終只能遊走在別人的規則中。

任何語言中都有那麼一些詞語是成對兒出現的,像因果、主客、高低,這些詞在被造出來的時候就是成對出現的,缺一不可。沒有前者,後者將不會單獨存在。它們之間沒有絕對性的對於錯。若是有,那對方就沒有了存在的意義,反過來本身也將不存在。

當有人拋出一個觀點的時候個人經驗是必定要聽清楚對方說的是「我以爲」仍是「我認爲」。「我以爲」那必然就是人家的主觀感覺,這種觀點咱們就不必討論了。你應該回復:「嗯,沒錯,確實是這樣的。」。若是對方說「我認爲」那你要是有不一樣的觀點就徹底能夠和他討論,由於說「我認爲」的觀點必然是有一些客觀事實作爲依據的,有事實有邏輯,那就能夠有對錯。

結語

哲學中的知識並不能徹底解釋現實中的事物,由於哲學研究的終點是一些沒有結論的東西:上帝、自由、靈魂不朽。這些東西並不是常人能理解的,可是人們對於無限真理的追求驅使着你們去研究它,不少人會以爲既然研究不出來結果那是否是就沒意義了,固然不是。事實偏偏相反,若是咱們把全部的事物本質都研究清楚了,那咱們的存在也將失去意義。

原文:keelii.com/2019/08/25/…

相關文章
相關標籤/搜索