1. 程式人生 > >為什麼要研究事物的本質?

為什麼要研究事物的本質?

問題匯出

在程式設計的過程中總會遇到各種各樣的原理性知識,比如:函式調用匯編實現是先push ebp, esp… 這不禁會使一部分人產生這樣的思考:我瞭解這些有什麼用嗎?(這個問題可能更形象:知道月亮的光是反射太陽的有什麼用嗎?)我不從人的精神追求等層面討論這個,我只從現實用處的角度分析這個問題。

科學與宗教的定義

我以科學和宗教教條的區別進行類比分析。在我看來,科學與宗教性質的教條的相似之處是兩者都是人們觀察了當前的現實,對現實已有或已能觀察的各種情況進行歸納總結,進而形成規律性質的東西,兩者都不是絕對正確的。而兩者本質的區別在於,每當發現新的無法由已知規律解釋的情況時,科學採取的辦法是尋找更加本質的規律,更新理論從而達到新情況下的100%正確。而宗教性質的教條則用已有理論牽強附和,自圓其說

。所以結果是,科學總是能夠用不斷更新的理論創造發明新的現實,而宗教卻不能。

兩者優劣的對比

所以,學習程式設計知識的本質,是因為我們在程式設計時培養出來的一些類似感覺性質的東西,這些東西實際上是知識本質的資訊壓縮版本,是有二義性的。而知識的本質是沒有二義性的。我們的感覺就像教條一樣,絕大多數情況下是可行的,但在一些情況下,會出現我們意想不到的情況,這種時候只有明白一個東西的本質是什麼,才能夠解決問題,並創造新的解法。

不過,教條也有好處,在於其能降低接受這套知識所需智商門檻,所以能極大的降低人們的接受時間成本、腦容量成本。教條也是值得提倡的,因為程式設計中的教條是用自然語言描述的,而本質是用二義性無關文法描述的,學過編譯原理都知道自然語言描述能力比二義性無關文法強。所以,只要這種程式設計教條不導致原始資訊的流失,那麼這種教條是很好的。而這種100%不流失原始資訊的教條叫作——抽象。

結論

我們可以先接受一個不精確的教條粗略瞭解所學知識的大部分,在深入瞭解本質,獲得100%正確版本,最後在腦子裡進行合理的抽象。