當我們談編程,我們在談什麼_風聞
code2Real-有人就有江湖,有code就有bug2022-01-04 10:56
當我們談編程,我們在談什麼。
很多人在談自己對編程語言的掌握程度,比如精通某編程語言。
如果只是刷個題,訓練一下大腦的思維能力,那麼也可以那麼説。
但是學編程還是要解決實際問題的,批判的武器代替不了武器的批判。
高校老師會教數據結構、算法、操作系統、編譯原理。
但是學生出來後,並沒有覺得自己在職場上可以無往而不利。
進入職場後,每個人的境遇不一樣。
有的人進入大廠,就是做一個螺絲釘,沒有進行軟件設計的機會,就是在維護遺留系統,在代碼的屎山中做那頭奮力開道的二師兄。
有的人進入初創小企業,不管三七二十一,能抄的絕不自己寫,不管質量如何快速上市變現是最重要的。
前兩者都是以互聯網企業為主。互聯網本質是服務業,互聯網軟件也是服務型軟件,不追求性能最高,只追求能快速變現。大部分互聯網軟件都是基於成熟的框架快速變現。
對於工業軟件而言,編程的核心是建模,那是在未知的領域開拓。
沒有模型指導,幾百萬行代碼難以捏成系統,就象一堆磚頭不是摩天大樓一樣。
C/C++,JAVA、GO、RUST、Python等流行的開發語言其實並不能教你如何建模。
你即使讀完成C++ primer,STL,OOP等書,你還是在遇到問題時束手無策。
就算是把OOP書看上十本都不一定培養你的建模能力,因為很多寫OOP的人都不知道如何建模。
真正培養建模能力的是Haskell、LISP之類的語言。
Haskell通過類型系統為現實建模型。
LISP通過抽象語言樹(AST)對現實建模型。
以前談到,人工智能不具備“心智模型”,因而沒有模擬和預測能力。
軟件工程這個概念雖然提出有近五十年了,但是在實際應用中,除非經過幾次迭代,熟悉了業務流程,能建立相應的業務模型,否則軟工的成功率遠不如傳統工程。
説到底,傳統工程之所以成功率高,主要是有成熟的模型,建築可以建一個沙盤模型。
而且人類有幾千年應用建築材料的歷史,知道什麼材料能支撐,決不會用豆腐渣材料當大梁。
但是軟件的發展歷史太短,很多東西沒有標準化,你不知道哪個庫是不是豆腐渣,是不是流沙。
在流沙上建城堡的可靠性,用腳趾頭想想都能明白。