楊爽
摘 要:計算機已經(jīng)成為一種日常生活不可缺少的工具,在人們的生產(chǎn)生活的各個領(lǐng)域發(fā)揮越來越重要的作用。計算機通過其應(yīng)用軟件為人們提供服務(wù),計算機軟件的發(fā)展很大程度上擴大了計算機的應(yīng)用。現(xiàn)在社會需要的軟件功能也越來越大,怎么樣開發(fā)功能強大的軟件,怎么樣降低軟件的開發(fā)成本是一個比較重要的問題,作者對軟件的現(xiàn)狀和趨勢做了一些研究,繼而對計算機軟件的發(fā)展趨勢提出了自己的一些看法。
關(guān)鍵詞:軟件;模塊;發(fā)展趨勢;看法
現(xiàn)在計算機軟件高度集成,開發(fā)出來的軟件規(guī)模越來越大。當然可以幫助人們解決更為困難的問題和工作。按理說,復(fù)雜的工作需要復(fù)雜的工作量,那么對于一個程序員來說要求是越來越高的,可是現(xiàn)實是怎么樣的呢,其實現(xiàn)實是程序員的工作越來越簡單化!為什么出現(xiàn)這么一種復(fù)雜的問題能夠更容易的去解決的現(xiàn)象呢?
其根本在于計算機軟件的高度發(fā)展,它的發(fā)展使得現(xiàn)在開發(fā)程序可以模塊化,說白了就是現(xiàn)在你開發(fā)一個軟件不再需要從底層做起,你要做的就像拼積木。拼積木是小孩的游戲,那么現(xiàn)在社會的程序就是成人化的游戲而已。比如一個要解決的現(xiàn)實問題我們可以想象為一個要搭建的巨大建筑,那么在這個建筑的建造工程中,有人給你提供了建筑這個建筑物所需要的模塊,你只需要根據(jù)自己的要求拼接便可以。你并不需要開發(fā)很細節(jié)性的應(yīng)用實現(xiàn),這樣你便可以減輕自己的開發(fā)難度。在減輕你自己工作量的同時,現(xiàn)實中很多人也給你提供了一些很實用的框架結(jié)構(gòu),這樣你甚至可以不用思考如何搭建你的系統(tǒng)架構(gòu),你要做的僅僅是根據(jù)需要選擇一種好的架構(gòu)方式然后把自己需要的模塊填充進去就可以了。如此簡單的說出現(xiàn)在程序的本質(zhì),很多程序員覺得自己是不是太沒有價值了,其實也不然,因為現(xiàn)在社會的問題過于龐大你也不可能一個人完成一個系統(tǒng)需要的所有工作。所以程序員的價值就是我在利用別人的工作成果的同時也在給別人提供一個可用的模塊。這應(yīng)該是現(xiàn)在軟件發(fā)展的方向,每個人也應(yīng)該為此而努力。
那么計算機的軟件是從什么時候開始發(fā)展成這樣一種模式的呢,說到計算機的軟件不能不說起計算機的操作系統(tǒng)OS,在計算機發(fā)展之初,計算機所做的各種指令只能是機器語言,那么機器語言都是01代碼。這樣一個現(xiàn)代程序的機器代碼如果讓人看明白,其可能性幾乎為零。也就是說一個電腦裸機,提供給人們的是機器接口,人們使用它們必須編寫出機器能識別的代碼。雖然現(xiàn)在計算機業(yè)是要實現(xiàn)這個目的,但是現(xiàn)在計算機程序面向的卻是計算機的操作系統(tǒng)。操作系統(tǒng)對計算機機器做了抽象封裝,讓人們覺得安裝了操作系統(tǒng)的計算機是一臺比較人性化的,方便和人進行交流的機器。那么這個封裝的功能促進了計算機軟件的飛速發(fā)展,并使人們發(fā)展越來越強大的軟件成為可能。比如你開發(fā)一個計算機應(yīng)用系統(tǒng),這個系統(tǒng)的登錄模塊你可以不用自己去做,別人做好了這個模塊并提供相應(yīng)的接口,你便可以使用這個模塊對輸入的數(shù)據(jù)進行驗證了,輸入模塊根據(jù)你輸入的情況給出對應(yīng)的結(jié)果。但是這個驗證模塊是不是就自己實現(xiàn)了對數(shù)據(jù)庫的訪問了嗎?不一定,它同樣也可以使調(diào)用別人的模塊去實現(xiàn),其實我們在實際中開發(fā)用的數(shù)據(jù)庫也給我們提供了一個定義良好的接口只要傳入相應(yīng)的SQL語句它便給你對應(yīng)的結(jié)果。從這個角度講,整個數(shù)據(jù)庫系統(tǒng)也應(yīng)該是你自己的軟件的構(gòu)成模塊,是不是應(yīng)該很有成就感呢,因為如果你調(diào)用了SQLServer數(shù)據(jù)庫不是相當于MicroSoft在為你打工嗎?
上面簡單討論了計算機底層上的封裝,即os對硬件的封裝,如此便開始了一個后續(xù)無窮的封裝鏈。從上面的內(nèi)容可以看出計算機軟件封裝的一個好處就是實現(xiàn)了計算機軟件的快速開發(fā),提高了軟件的開發(fā)速度。另一方面就是計算機的模塊化運行可以在很大程度上減輕程序員的工作量,當然此處不是指代碼量的多少,而是指相關(guān)知識的提取,因為一旦了解了一門課程的相關(guān)知識以后代碼的工作便不會是過于復(fù)雜的過程。比如獨立寫一個計算機間通訊的程序,那么最大的工作量首先是你要弄明白計算機之間通信的各種協(xié)議,然后開始寫代碼。那么這個工作的很大一部分便是你先去查看計算機網(wǎng)絡(luò)相關(guān)知識,但是現(xiàn)實中你開發(fā)的時候卻有很多部件(或許不很準確,在面向?qū)ο笳Z言中它叫類)已經(jīng)是別人寫好的可以供您使用,以此你便不需要去查看大量的枯燥的理論知識了,直接根據(jù)別人的接口便很快寫出一個很有成就感的應(yīng)用系統(tǒng)了。不是嗎,當別人在用QQ聊的不亦樂乎的同時,你卻可以讓你的一些朋友使用你自己開發(fā)的一個聊天工具,這可能比聊天更不亦樂乎。但是切記是現(xiàn)代軟件的發(fā)展模式幫了你很大的忙。如果沒有他們我們用的聊天工具可能沒有那么強大,如果沒有他們我們可能很難再計算機軟件方面有所成就。
然而我們在使用別的大公司生產(chǎn)的各種模塊的同時,卻沒有想著自己也應(yīng)該為軟件的發(fā)展做出點什么,回歸我們上面的論題,我們做出來的軟件模塊如果也能為別人所使用的話那么這將能極大的縮短別人的開發(fā)時間,前提是都作出健康的軟件來,所以應(yīng)該有一種專門的第三方機構(gòu)能站出來,每個程序員或者公司在自己的模塊構(gòu)造完成之后提交給這個第三方,第三方綜合評鑒了該模塊后提供給別人下載使用,這樣的機構(gòu)或許應(yīng)該以現(xiàn)在的各種開源機構(gòu)為基礎(chǔ)而發(fā)展起來,如此在不遠的將來程序員將不再去搭建應(yīng)用軟件,只負責功能模塊的開發(fā),而把功能模塊的搭建交給公司的內(nèi)部業(yè)務(wù)精英去完成,企業(yè)的業(yè)務(wù)精英根據(jù)自己的要求去這個第三方平臺或者付費或者免費的去下載所需要的模塊,如此應(yīng)該能極大的促進軟件的發(fā)展和降低系統(tǒng)的開發(fā)成本及提高開發(fā)速度。
如果這個第三方平臺搭建成功以后可以給別人提供模塊的方式也是多種多樣的, 除了傳統(tǒng)的程序模塊下載之外還可以使用WebService。前者可能搭建的系統(tǒng)還會占用一定的本地資源,而如果完全采用WebService之后就有可能是的一個軟件所占用的本地資源為最小。若干年后人們發(fā)布的軟件將不再是傳統(tǒng)意義上的軟件,或者僅僅是一個布局或者部署文件,也或者個這個部署功能也有了專門的提供機構(gòu)了完成,你只需要提供自己的部署編號便可以得到你需要的軟件系統(tǒng)。