從“怎麼做”到“是什麼”_風聞
code2Real-有人就有江湖,有code就有bug2022-01-17 22:59
“函數式編程”(FP)是一種不同於“過程式編程”的編程範式。
在“過程式編程”中,軟件設計者需要明白“怎麼做”。
對於簡單的問題,只需要設計一個合適的算法,就能實現“怎麼做”。
因此,在“過程式編程”中需要列出一系列操作鏈條(因果鏈條)。
這些鏈條理論上不能有死循環(否則不能停機),不能有死鎖(資源爭奪)……
“過程式編程”是一個需要事無鉅細地列出種種可能性。
對於複雜的問題,算法有時很難知道該“怎麼做”,“由誰去做”。
比如,自動駕駛問題,就很難用算法表達該怎麼做,你不知道你會遇到什麼樣的情況:
2016年3月,天氣預報稱美國東北部將出現大規模暴風雪,推特上有報道稱發現特斯拉汽車在自動駕駛模式下把車道標記和高速公路上為預防暴風雪而鋪設的鹽線弄混了(見下圖)。

“函數式編程”的範式不同於“過程式編程”。
在“函數式編程”中,關心“是什麼”,而不是“怎麼做”。
換句話説,關心“如何定義問題”而不是“如何解決問題”。
現代中國人不擅長定義問題,而西方媒體很擅長定義問題。
中國人太擅長基於因果關係的推理,不擅長基於“定義”的分析。
所以,當你看到這裏,你應該明白,我前文《因果關係是世界上最大的迷信》不是憑空產生的,它是基於一系列編程實踐後深入思考的結果。
相傳,古希臘有三大懲罰,其中,西西齊弗因為泄露天機,被罰每天推巨石上山。
晚上,當西西齊弗睡覺時,巨石滾下山來。
神希望通過這樣的懲罰折磨西西齊弗,讓他陷入無止境的問題解決之中。、
就象佛教傳説中的“修羅地獄”,修羅陷在地獄中無休止地征戰,所以迷失心性。
兩種懲罰都試圖讓被懲罰者勞而無功,或者為他人作嫁。
在大鬧天宮時,孫悟空的境界是“修羅界”,只知道為殺而殺,不知道為何而殺。
如來的境界是“自在界”,自在界是四大皆空,擁有無邊智慧。
所以如來對孫悟空的打擊是降維打擊。
有人説,工業革命的機器生產將人從繁重的體力勞動中解放出來。
未來人工智能將把人從繁重的腦力勞動中解放出來(腦力勞動中有很多重複性勞動)。
當然解放人的腦力勞動不是一步到位的,其中包括髮明新的編程工具、發明新的編程範式減輕人類的編程工作。
學會算法的人都知道一個常識,一個算法的改進往往能使計算量減少幾個數量級,這比採用更高性能的計算機更能提高效率。
從”怎麼做“到”是什麼“,使我們能擺脱無用功,擺脱因果關係的束縛,擺脱內卷。
如果你還沒有明白“因果關係”是一種束縛,仍然堅持用“因果關係”分析問題,那就隨你意,只要你高興就好。
PS:對於編程人員而言,都知道軟件設計要追求低耦合、高內聚。
因果關係實質上是一種強耦合關係,在設計中應該儘量避免強耦合關係,也就是説要淡化因果關係鏈。