軟體工程》教員課上推薦夢斷程式碼作為課後讀物,在大致瀏覽了一遍讀物之後,結合整個學期以來軟體課程的親身實踐,感觸頗深。
《夢斷程式碼》中對軟體工程所面臨的種種困難與艱難的描述,很符合當下程式設計工作,自己對於軟體程式設計也有切身感受。正如一隊人馬並肩扛起程式碼大石,雖歷經磨難仍欲將其推上山頂的故事。正是這種磨礪與艱難的爬山過坎,成就了各種各樣的執行的軟體,構成了一個五彩繽紛的虛擬世界。
自身對於何為軟體,何為程式碼僅有一些膚淺的認識,半學期下來,程式設計能力也有了較大的提高。但是其中的痛苦和艱辛,也很值得自己去慢慢的回味。
書中描述一群人們懷抱著改變世界的理想上路了,卻在追尋時發現,那些近在眼前的理想之峰,變得那麼的遙不可及;每當翻過一座橫亙在面前的山峰時,總以為已經來到理想之峰的腳下,卻發現這又是另一座需要攀越克服的阻隔之峰。
在我編寫計算函式以及嵌入遊戲主程式時,總感覺思路簡單,邏輯可行,操作方便。但是一到具體程式設計,除錯程式時便抓耳撓腮,無從下手。特別是遇到bug的時候,總感覺自己是對的,跳不出錯誤的怪圈。軟體開發過程有時就是這樣的一種體驗,目標看是唾手可得,卻又總是在你伸手摘取時,發現還有一段距離要走,問題隨著開發的深入而不斷湧現;這就像是坐在大象背上的訓象師,用吊在大象鼻子前的香蕉,給大象耍的把戲。
是什麼原因,導致軟體開發有時會進入這樣一個令人惋嘆的黑洞?
書的作者沒有,也不可能給我們一個答案,但透過作者忠實記錄於書的、就發生在當下不久的、這一真實案例,以及對軟體開發歷史和方法的部分介紹,本書應當能帶給我們很多有益的啟示和思考。
為什麼軟體如此難做?這是我本人,我想也是很多人都在苦苦思索的一個問題,雖然無人能有完全確定的答案,但透過書中的記述,和個人思考,還是可以獲得一些啟示,其本質還是主要在於溝通:
一是計算機嚴格的邏輯性和精確性。同人類不嚴密的邏輯,模糊多變的思維模式之間的矛盾,造成的人與機器之間溝通的障礙。
二是專案目標不明確,標靶變來變去,因此有時決定說什麼,比怎麼說更困難。
三是專案目標不切實際,從一開始就想做一個適合所有人的,能做所有事的系統,造成就如要做永動機一樣的結局。
我想人們大多都知道古老聖經中巴別塔的寓言,軟體工程難於成功的原因,也許就蘊藏在這寓言啟示之中,本質上在於溝通的問題。軟體使用者與軟體的溝通,軟體需求者與開發者的溝通,程式設計師與程式設計師的溝通,程式設計師與機器的溝通。
所有這些層層累疊起來,構築了一道道通往成功彼岸的屏障。
也許有一天所有這些溝通的障礙都能被消除,人們能輕易的相互理解,軟體工程的巴別塔真的就能輕易的建造起來了。