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