面向?qū)ο骭面向過程的語言有哪些_淺談面向?qū)ο笈c面向過程感受
本文關(guān)鍵詞:面向過程,由筆耕文化傳播整理發(fā)布。
這段工作上多和同事討論面向?qū)ο蟮脑O(shè)計問題,在和同事聊天中第一次切身地、也真正算是認(rèn)識到了面向?qū)ο蠛?strong>面向過程一個非常明顯、但是卻以前沒有深入體會到的區(qū)別。
在和同事討論一個模塊設(shè)計中,我們首先過了所有需要支持和處理的場景,然后嘗試想從這些問題域進(jìn)行面向?qū)ο蟮慕,但是,這個過程進(jìn)展的卻不是很輕松的,一下子就是很長時間了。在討論間歇,同事就感嘆說“如果用面向過程去實現(xiàn)的話,我的模塊早就編寫完了”。初我還對這個話不以為然,后來覺得體會越來越深,是啊,確實如此!在問題域明確的情況下,用面向過程的實現(xiàn)方式,把這些問題轉(zhuǎn)化為程序是可以很快搞定,但為什么面向?qū)ο蟮倪^程就充滿了艱辛呢?
在這次的體會中,首先,面向過程是直觀的。面向過程直接貼近于計算機CPU的工作模式,甚至是人類大腦最初能否反映出來的解決問題方法。解決方法是比較容易理解和掌握的,但是,不一定易于維護(hù),特別是程序發(fā)展到極為復(fù)雜的情況向。而面向?qū)ο竽?這個面向?qū)ο蠡倪^程至少會將過程式的東西,分解為不同的對象進(jìn)行寫作和交互去完成,強制性地進(jìn)行對象級別的模塊化,需要一丁點的抽象,確實就不是很容易的了。
我覺得面向過程初看起來不需要設(shè)計,只需要按照直觀的反應(yīng)進(jìn)行編碼,而面向?qū)ο蟠_實從起步開始,就要求了最初等的設(shè)計,將代碼至少模塊入對象的級別,包含了比直觀更高的一點抽象,所以,面向?qū)ο缶碗y多了。如果在這個過程中再加上可擴展性、易維護(hù)性、高效等目標(biāo),那就更難上加難了。
直觀的東西有時很深刻,例如幾何公理中兩點確定一直線。深刻到要說清為什么如此,真的不是件很容易的事情,呵呵,因為其來源于直觀,不證自明。但,往往很多時候,來源于直觀的東西缺乏深刻性。在近期閱讀集異壁這本奇書中,我們會發(fā)現(xiàn)繪畫、音樂、數(shù)學(xué)、計算機等幾個不相關(guān)的事物,在一定的抽象級別竟然擁有共同的結(jié)構(gòu);而也就是以這樣的抽象東西是可以在一定層次概念上代表這些東西的。在我們計算機世界中,在圖靈機的概念下,所有的二進(jìn)制程序都可以執(zhí)行,而不管你是操作系統(tǒng)程序、還是數(shù)據(jù)庫程序,抑或是網(wǎng)絡(luò)程序或腳本程序;在圖靈機的概念下所有的程序具有共同的特質(zhì)。我們可以發(fā)現(xiàn)抽象到一定層次的特質(zhì),也就出現(xiàn)了圖靈機上所有的程序都可以運行,所有程序都擁有圖靈機類型的抽象,,這兩個雙手互搏是相輔相成的。
一個東西缺乏設(shè)計、缺乏抽象、缺乏模型化就少了深刻,而膚淺的東西往往是易變的。在非常講究積極擁抱變化的軟件世界中,抽象是必要的,經(jīng)過抽象后的東西往往擁有一個穩(wěn)定的“心”或引擎engine。
面向過程雖然初看起來不講究設(shè)計,體現(xiàn)了大腦的直觀反映,但是想建構(gòu)一個好的面向過程程序,我覺得是一樣要包括非常好的設(shè)計和抽象,只不過抽象的方式不是對象,而是面向過程中的基本技術(shù)。整體下來,初涉面向過程容易,初涉面向?qū)ο箅y,而最難的后面依然會回到面向過程。因為,面向?qū)ο筇峁┝艘环N抽象問題域的一種思考方式和代碼組織方式而已,底層?xùn)|西還是面向過程的,最開始的C++編譯器產(chǎn)生的中間代碼就是C,然后再利用C的編譯器再生成可執(zhí)行程序。。。。,我們站在了巨人的肩膀上!歡迎抽象!
本文關(guān)鍵詞:面向過程,由筆耕文化傳播整理發(fā)布。
本文編號:60693
本文鏈接:http://sikaile.net/wenshubaike/shijiedaxue/60693.html