程序員應(yīng)知 善于借鑒
最近幾天對D語言有了一些了解,據(jù)說能夠具備和C、C++一樣的高性能,語法類似于C#和Java,并且支持當(dāng)前比較流行的語言——像Ruby和Python——的一些新特性,而且微軟還提供了Visual D的插件,可以安裝在Visual studio中,從而使用它來開發(fā)D語言的程序。
我們會發(fā)現(xiàn),其實這門語言,在很大程度上是以往各種語言長處的結(jié)合(不知道是否實現(xiàn)了這一點,但目的應(yīng)該是這樣),與其說是一種新的語言,不如說是在借鑒了很多語言之后,組合出的一種語言。
由此我們可以發(fā)現(xiàn),借鑒具有很強(qiáng)的力量。通過借鑒,我們能夠創(chuàng)造出一些新的有自身特色的東西來。
說到借鑒,就不能不說創(chuàng)新,曾經(jīng)有位朋友拿微軟和蘋果做過比較:微軟最近幾年來,在技術(shù)上一直沒有非常明顯的創(chuàng)新,似乎總是跟在別人的后面走,比方說云計算,比方說手機(jī)開發(fā),再比方說服務(wù)式的web應(yīng)用等等。而蘋果的東西似乎每一種都具有很強(qiáng)的創(chuàng)新性,iPad、iPhone、手表式的ipod,還有傳言中的裸眼3D功能的iPad等等,都讓人能夠眼前一亮。
的確,創(chuàng)新很棒!能夠產(chǎn)生不錯的效果。相比之下,借鑒似乎就要差一些,而且“山寨”和借鑒之間也有些搞不清楚。然而,我們也應(yīng)該看到,創(chuàng)新其實也是建立在借鑒的基礎(chǔ)之上,而且借鑒也能夠產(chǎn)生很不錯的效果。畢竟,創(chuàng)新力不是說說就能具備的,也需要長時間的積累和思考,而且還有一些天賦的成分在里面,試問世界上又能有幾個喬幫主級別的人物。而借鑒往往更適合我們這些普通人,能夠讓我們從中受益。
作為程序員來說,也有很多地方都可以采用借鑒的方式來提升自己的能力。
比方說前幾天我在百度Web app開發(fā)大會上的演講中,談到Web應(yīng)用前端設(shè)計如何能夠美觀的時候,我就借鑒了版面設(shè)計的理論(來自于《寫個大家看的設(shè)計書》),web應(yīng)用的設(shè)計也應(yīng)該遵循重復(fù)、對齊、對比、親密性四種原則,那樣就會達(dá)到美觀的效果。而談到設(shè)計需要規(guī)范的時候,我也借鑒了項目中經(jīng)常會使用的代碼規(guī)范,對于前端設(shè)計也一樣要有相應(yīng)的規(guī)范,那樣才能夠更利于開發(fā)和后期的維護(hù)工作。
再比方說之前的一篇blog中,我談到了如果《以投資的觀點學(xué)習(xí)編程》,這正是在聽了公司投資部經(jīng)理關(guān)于投資的一場講座之后想到的,學(xué)習(xí)編程和投資一樣,也有不少可以觸類旁通的地方。
不僅僅如此,軟件這個年輕的產(chǎn)業(yè),本身很多方法都是從其他傳統(tǒng)行業(yè)借鑒過來的,軟件架構(gòu)在很大程度上借鑒了建筑學(xué)的知識,而精益的理論更是來自于生產(chǎn)行業(yè),我們能夠看到,軟件行業(yè)的發(fā)展與對其他行業(yè)的借鑒是分不開的。
而作為程序員,我們應(yīng)該借鑒什么呢?
首先我想要借鑒已有的程序和項目,當(dāng)我們想要完成一項任務(wù)的時候,不一定要從零開始,畢竟不是考試,我們完全可以先查看一下是否已經(jīng)有類似的程序或者類似的項目,看看他們是如何完成的,而且在完成的過程中是否有相關(guān)的經(jīng)驗和教訓(xùn),那些都是非常寶貴的財富。當(dāng)然我們不是要完全地復(fù)制,而是要“批判地學(xué)習(xí)”,在理解了已有內(nèi)容的基礎(chǔ)上,加上自己的思考,從而創(chuàng)建出最適合我們自己的程序。在這個過程中,借鑒本身就是學(xué)習(xí)和提高的過程。
其次我想可以借鑒在非計算機(jī)領(lǐng)域解決問題的方式。我們知道,計算機(jī)真正廣泛應(yīng)用在解決問題上,也就是幾十年間的事兒,之前遇到問題,傳統(tǒng)的行業(yè)中一樣可以解決,也都形成了不少方法論。那正是我們需要借鑒的地方,不一定在解決問題的時候完全要依賴于計算機(jī),先從非計算機(jī)的方式入手,放寬一下自己的視野,可能會有更好的效果。
想要真正實現(xiàn)良好的借鑒,我想我們要時刻有借鑒的準(zhǔn)備,機(jī)會總是留給又準(zhǔn)備的人的,當(dāng)我們在平時的生活中,或者是在各種書籍中,發(fā)現(xiàn)好的解決問題的方法時,就可以試著思考一下,是否可以借鑒到計算機(jī)領(lǐng)域中,這樣,在以后編程解決問題的時候,可能就會不自覺地使用了。切不可把自己處于一種封閉的狀態(tài),對外界的事情不聞不問,更可怕的就是完全排斥了,根本就不接受外界的思想,那樣“閉關(guān)鎖國”的話,如何才能發(fā)展呢?(這里貌似也是借鑒,:))
關(guān)于借鑒,你的想法如何,歡迎在此評論。
作者:侯伯薇@大連
出處:http://www.cnblogs.com/houbowei/
原文地址:http://www.cnblogs.com/houbowei/archive/2011/05/26/2057771.html
【編輯推薦】