軟體開發還算不上是一門科學 但不妨礙它是一門技術

2022-05-08 07:39:09 字數 1223 閱讀 4828

很多大學裡是把軟體開發相關的專業劃入工科的,這給人一種錯覺,讓人認為軟體開發也是乙個工程學科,就像土木建築,動力機械那樣。但這從根本上錯了,土木建築,動力機械的背後有確實的科學定律作為支撐,而軟體開發的背後基本上什麼都沒有,遠不是一種「科學」。

也正因此,「軟體工程」的現實意義也就遠不如「土木工程」,「動力工程」。

每個人對「科學」的定義可能不同,但在這裡,我們可以做乙個簡化版的定義:當有一組在限定條件下顛撲不破的定律做支撐時,相應的知識,我們可以稱之為科學,科學自身可以體現為一種確定性。比如說:牛頓的力學定律在低速時是不容違反的,是一種鐵則,那基於此的各種知識就可以成為科學。

從這個視角出發,我們會發現,在軟體的世界裡,壓根找不到屬於軟體的「牛頓力學定律」,有的只是雜多、紛爭和不確定性。

物件導向應該是接受程度最高的分析和設計方法,但即使如此eric raymond和linus也仍然會站出來批判它。

參見:簡單來講:eric raymond認為oo會導致過度分層,linus認為物件導向解決的是一些小問題,他們不約而同的反對oo。你能找到如此批判牛頓定律的人麼?

但eric raymond他們的觀點又不由得你不重視,除非你認為eric raymond和linus信口雌黃或人品有問題,否則你可以批判,可以不同意,但你不能忽視他們的聲音。他們的聲音必然基於他們的經歷,代表著特定的現實,而現實本身代表合理性。

物件導向之外,各種觀點想法就更多,這導致了軟體的世界是雜多的,不確定的,行業中人大多都為名詞所苦。

隨便看一下吧,有多少人可以精確分辨這些詞間的差異:

程式語言就更不要說了,實在不知道有多少個,但反過來想,世界上真需要這麼多種語言麼?

這些不同的方法(概念或語言)只要存在,即使彼此有衝突,也必然有其合理之根基,這裡無意分析其優劣,只是想說:軟體開發的定論在那裡?我們究竟又該根據什麼來判定那個是適合的,那個是不適合的?這種眾說紛紜,真是工程學科應該有的狀況麼?

如果所有這一切都只能歸還給當事人,那就必然紛爭不斷,軟體開發也就一定不是一種科學。在這樣一種情景下,由於任何人都可能是錯的,務實的程式設計師也就必須選擇相信自己多過相信別人,那怕別人有天大的來頭。

相信自己基於事實和邏輯的分析,即使錯了,也可以成為一種進步的養分;相信別人,錯了不會進步,對了也是別人對了,有什麼意思。狂妄的程式設計師則可以挑戰「牛頓」這一角色。

楊昌濟先生,曾經說過兩句話,特別有意思,也契合軟體開發的情景,因此把它放在這裡,作為結尾:

橫盡虛空,山河大地無一可恃,而可恃唯我。

豎盡來劫,前古後今無一可據,可據者唯有當前。

軟體開發還遠不是一種「科學」

很多大學裡是把軟體開發相關的專業劃入工科的,這給人一種錯覺,讓人認為軟體開發也是乙個工程學科,就像土木建築,動力機械那樣。但這從根本上錯了,土木建築,動力機械的背後有確實的科學定律作為支撐,而軟體開發的背後基本上什麼都沒有,遠不是一種 科學 也正因此,軟體工程 的現實意義也就遠不如 土木工程 動力工...

什麼是軟體開發

有乙個銷售的同事在會議上說,你們軟體開發人員真好,坐在電腦前打打 就可以完成工作了。還有一些對軟體開發不懂的老闆說,你們軟體開發不就是寫幾行 就可以了嗎。可見,沒有深入軟體開發的了解,永遠都是這麼膚淺的認識。其實軟體開發總共有11個過程 定義問題 需求分析 規劃構造 軟體架構 詳細設計 編碼與除錯 ...

手機軟體開發還是要以人為本

手機軟體開發還是要以人為本 近日來,一款名為 來福找小工 的移動應用,以它獨特的角度和非常大的實用性,正在成都百姓和打工者中迅速走紅。使用者輕按手機就能找到相應的生活服務,從開鎖換鎖 電腦維修,到家電維修 門窗安裝一應俱全。這款手機軟體開發的成功和走俏,說明它的開發者是真正體會到了移動開發的本質 以...