我的程式觀 (轉)

amyz發表於2007-10-17
我的程式觀 (轉)[@more@]請先看下面的圖示:

機器程式碼 --〉高階語言實現 --〉結構圖 -〉自然語言

我們很早就認識到,高階語言是機器語言的抽象,結構圖是對高階語言的抽象,
而自然語言是對結構圖的抽象.這是很好理解的,也符合我們的思維習慣.可是
倒過來看,逆向思維一下,會有更驚人的發現.它們不正是我們"做"一個標
準的流程嗎?

可以說,它們表達的都是同一個東西,只是抽象的層次不同而已.抽象層次越高,
所需要處理的基本抽象思考要素也就越多(它們通常被包含在豐富的語義中).
但是,涉及到的具體實現細節反而越少.一句話,我們的軟體活動大都是從高度
抽象到底層抽象,這個演化過程是客觀規律,隨著軟體工程水平的提高,從此岸
到彼岸的直接跨越就變得非常不合理(以前確實存在過,不過想想當時的軟工
水平吧).

有了從高到低的抽象層次,就需要逐步地象下樓梯一樣一層層往下.然而下的
過程是危險的,也是值得研究的.什麼是這個過程中最重要的,我覺得是保持一
致性,起碼是概念的一致性.為什麼呢?舉個簡單的例子:

客戶說我要一個資訊,這是一個聽起來很簡單的自然語言表達,可是因為
過於抽象而讓開發者無從下手.於是開發者要和客戶進行不斷地溝通,是客戶
的概念能毫無遺漏地傳達給開發者(如果客戶很幸運有明確的概念的話).遺
憾的是,這個過程是沒有保障的.當客戶的概念大部分(或全部)都已傳達給開
發者時,他開始設計,目的只有一個,實現那個概念.設計的輸出將作為編碼的
輸入,我們仍然無法保障這個過程的一致性.可以看到,到此為止,系統中沒有
保障的因素已經很多,如果中間存在任何稍大的不一致,就必須重複進行大量
的工作,就好像已從20樓走到2樓,突然發現忘了穿鞋,還得回到20樓一樣令人
同情.假設我們已經順利地到了2樓(值得慶祝),剩下的工作將容易許多,高階
語言到機器程式碼的一致性目前已經得到很好的保障,這個成就讓軟體業的生產
率提高了很多.可是這對我們現今的並沒有實質性的幫助,因為:

在當前整個軟體開發週期中,這個過程只佔了少量的精力和時間(我認為接近
於零),沒有一個高階語言員會關注自己程式碼的反結果.類似的還有
開發工具等相當次要的因素.所以,問題仍然很嚴重.

危機不可避免地存在著,關注它們不代表我是悲觀主義者.和所有不能由人類
完全控制卻可以供人類充分研究並利用的自然科學一樣,軟體工程學必然有
客觀的規律.矛盾總是存在的,因為那些一致性不可能100%的滿足(人與人的
交流不可能是無縫的,除非被Clone),但我們可以不斷校正,運用合理的方法
學使之接近理想狀態,即不斷地進步.在這方面,中國人又一次落後了,大學裡
教條似的軟體工程學,企業界對於新技術的偏執和對設計,管理的忽視,怎麼
可能從根本上提高我們極低的軟體水平.而從事理論研究,以科學的態度對待
軟體業的研究人員,又在哪裡呢?

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-977192/,如需轉載,請註明出處,否則將追究法律責任。

相關文章