我們很早就(jiù)認識到,高級語言是機器語言的抽象,結構圖是對(duì)高級語言的抽象,而自然語言是對(duì)結構圖的抽象。這(zhè)是很好(hǎo)理解的,也符合我們的思維習慣。可是倒過(guò)來看,逆向(xiàng)思維一下,會(huì)有更驚人的發(fā)現。濟南軟件開(kāi)發(fā)提示您注意,它們不正是我們"做"一個軟件标準的流程嗎? 機器代碼 --〉高級語言實現 --〉結構圖 -〉自然語言
有了從高到低的抽象層次,就(jiù)需要逐步地象下樓梯一樣(yàng)一層層往下。然而下的過(guò)程是危險的,也是值得研究的。什麼(me)是這(zhè)個過(guò)程中最重要的,我覺得是保持一緻性,起(qǐ)碼是概念的一緻性。系統中沒(méi)有保障的因素已經(jīng)很多,如果中間存在任何稍大的不一緻,就(jiù)必須重複進(jìn)行大量的工作,就(jiù)好(hǎo)像已從20樓走到2樓,突然發(fā)現忘了穿鞋,還(hái)得回到20樓一樣(yàng)令人同情。假設我們已經(jīng)順利地到了2樓,剩下的工作將(jiāng)容易許多,高級語言到機器代碼的一緻性目前已經(jīng)得到很好(hǎo)的保障,這(zhè)個成(chéng)就(jiù)讓軟件業的生産率提高了很多。可是這(zhè)對(duì)我們現今的軟件開(kāi)發(fā)并沒(méi)有實質性的幫助,濟南軟件開(kāi)發(fā)認爲,這(zhè)是因爲,在當前整個軟件開(kāi)發(fā)周期中,這(zhè)個過(guò)程隻占了少量的精力和時間,沒(méi)有一個高級語言程序員會(huì)關注自己代碼的反彙編結果。類似的還(hái)有開(kāi)發(fā)工具等相當次要的因素。所以,問題仍然很嚴重。
可以說,它們表達的都(dōu)是同一個東西,隻是抽象的層次不同而已。抽象層次越高,所需要處理的基本抽象思考要素也就(jiù)越多。但是,涉及到的具體實現細節反而越少。一句話,我們的軟件活動大都(dōu)是從高度抽象到底層抽象,這(zhè)個演化過(guò)程是客觀規律,随著(zhe)軟件工程水平的提高,從此岸到彼岸的直接跨越就(jiù)變得非常不合理。
危機不可避免地存在著(zhe),關注它們不代表我是悲觀主義者和所有不能(néng)由人類完全控制卻可以供人類充分研究并利用的自然科學(xué)一樣(yàng),軟件工程學(xué)必然有客觀的規律。矛盾總是存在的,因爲那些一緻性不可能(néng)100%的滿足,但我們可以不斷校正,運用合理的方法學(xué)使之接近理想狀态,即不斷地進(jìn)步。在這(zhè)方面(miàn),中國(guó)人又一次落後(hòu)了,大學(xué)裡(lǐ)教條似的軟件工程學(xué),企業界對(duì)于新技術的偏執和對(duì)設計、管理的忽視,怎麼(me)可能(néng)從根本上提高我們極低的軟件水平。