關(guān)于造輪子的問(wèn)題,褒貶不一,我是贊成造輪子的,很多時(shí)候我們沒(méi)有必要再去造一個(gè)已經(jīng)存在的輪子,這是貶造輪子的重要的看法,我覺(jué)得沒(méi)什么不對(duì)的,如果是要立刻用到實(shí)際中去,而且時(shí)間上很趕的時(shí)候造一個(gè)輪子出來(lái)不是什么好事情。但是造輪子也有很多好處,比如能學(xué)到很多東西,可以參見(jiàn)vczh的關(guān)于造車輪,雖然沒(méi)有將所有造車輪的好處統(tǒng)計(jì)起來(lái),但是很有參考價(jià)值。當(dāng)然你可以去看看國(guó)外的大學(xué)教程,他們本科生的任務(wù)大多就是造個(gè)車輪出來(lái)。比如MIT:操作系統(tǒng)課程就是寫個(gè)操作系統(tǒng)出來(lái),數(shù)據(jù)庫(kù)課程就是寫個(gè)數(shù)據(jù)庫(kù)出來(lái),圖形學(xué)就是寫個(gè)raytracer(光線跟蹤器)出來(lái)。當(dāng)然還有很多,比如Stanford:計(jì)算機(jī)網(wǎng)絡(luò)就是用UDP實(shí)現(xiàn)TCP的功能,寫個(gè)路由協(xié)議,圖形學(xué)就是做一個(gè)軟件openGL,等等,所以造輪子(再造輪子)是很有實(shí)踐價(jià)值的,而且很多一流學(xué)校就是這么干的。很多時(shí)候如果想創(chuàng)造輪子的話再造輪子所獲得的經(jīng)驗(yàn)和能力的提高是很有價(jià)值的。
那如果你肯定了再造輪子的好處那就多幫造輪子的人說(shuō)點(diǎn)好話,當(dāng)然也說(shuō)明再造輪子的的限制,不然誤人子弟。但是如果你肯定了再造輪子的好處,你想加入再造輪子的大軍那你該怎么辦呢?
這點(diǎn)其實(shí)我也在想,如果看到這篇文章而又很有欲望表達(dá)自己的看法的前輩留下你的建議。在這里我也表達(dá)一下我的看法。
建議一:書(shū)
如果我們都想造輪子,但是苦于沒(méi)有經(jīng)驗(yàn)而且對(duì)輪子的構(gòu)造很不熟悉,很多時(shí)候我們只好放棄這種想法。如果有一本書(shū)教你怎么去造這個(gè)輪子的話說(shuō)不定你的輪子就造出來(lái)了,而且還不差。所以如果想造一個(gè)輪子,很常用的方法就是找一些相關(guān)的書(shū)籍。優(yōu)點(diǎn)是結(jié)構(gòu)完整而且描述清晰,而且還很系統(tǒng)(國(guó)內(nèi)人寫的書(shū)大多不好,所以還是先去找找有沒(méi)有國(guó)外人寫的書(shū),老外寫的書(shū)看得還比較爽)。缺點(diǎn)是大多時(shí)候書(shū)都比較理論實(shí)踐的東西少,而且對(duì)我們?cè)燧喿觼?lái)說(shuō)書(shū)上的那種結(jié)構(gòu)不是很適合造輪子,如果是大部頭書(shū)的話還很快就把你的意志給削弱了。所以書(shū)不是萬(wàn)能的,我看過(guò)一定數(shù)量的書(shū),但是到頭來(lái)還是沒(méi)有太大的提高。
建議二:課程
對(duì)于大多書(shū)學(xué)生來(lái)說(shuō)這條是最好的。其實(shí)大多數(shù)學(xué)生都是很想學(xué)習(xí)的,苦于沒(méi)有人指導(dǎo)加上老師無(wú)聊,很多時(shí)候?qū)W生搞到最后都不想學(xué)了。如果你是一個(gè)學(xué)生,如果讓你去造一個(gè)輪子出來(lái),想想那是世界上最牛的輪子(轉(zhuǎn)得最快),那是讓人激動(dòng)的,學(xué)生學(xué)起來(lái)也很有勁頭。所以造輪子最好的方式是去找一些課程,而那門課程是教你怎么造輪子的,按造那個(gè)課程的方式先去造一個(gè)出來(lái),然后再想想自己的輪子怎么造,然后你的輪子又是另一個(gè)最牛的輪子(轉(zhuǎn)得快不說(shuō),還省材料)。優(yōu)點(diǎn):系統(tǒng)化,理論實(shí)際相結(jié)合,而且很多時(shí)候那些老師已經(jīng)幫你完成了一些工作,適合菜鳥(niǎo)級(jí)別的人物---不如說(shuō)我。缺點(diǎn):還沒(méi)有找到,如果非得說(shuō)有缺點(diǎn)就是:讓你見(jiàn)識(shí)了一個(gè)最牛的輪子,讓你覺(jué)得你自己獨(dú)立造的輪子沒(méi)有技術(shù)含量,讓你放棄了想法。
建議三:現(xiàn)成系統(tǒng)
我們討論的是再造輪子,所以這個(gè)輪子必然已經(jīng)存在了,我們仿這個(gè)輪子去造一個(gè)不就行了。通過(guò)分析和比較,使用別人的輪子的時(shí)候想想別人底層是怎么做的,怎么設(shè)計(jì)的,意淫一番之后總結(jié)出經(jīng)驗(yàn),然后造自己的輪子。而且造一個(gè)比原來(lái)更加小強(qiáng)(小而強(qiáng)大)的輪子,功能完整,耗費(fèi)資源少,使用簡(jiǎn)單-----那不就是我們想要的嗎?缺點(diǎn)就是可能要有些經(jīng)驗(yàn)。
建議四:論文
如果你是一個(gè)骨灰級(jí)的輪子玩家這點(diǎn)你應(yīng)該是清楚的。看論文是一件很痛苦的事情,很多時(shí)候我們的理論基礎(chǔ)沒(méi)有論文的作者好,或則論文作者的基礎(chǔ)跟你的不一樣(比如他是學(xué)物理的,而我們是學(xué)計(jì)算機(jī)的),所以看不懂論文,直接結(jié)果就是你的輪子造不出來(lái)。所以還是要很有經(jīng)驗(yàn)和理論基礎(chǔ)。
建議五:開(kāi)源軟件
開(kāi)源是一個(gè)好東西,首先它是免費(fèi)的,再者可以看到代碼。這點(diǎn)我不用說(shuō)了,找到了相似的開(kāi)源代碼,讀一讀,肯定有收獲。
總結(jié)或者想法:
造輪子肯定不是一件簡(jiǎn)單的事情,沒(méi)有恒心就不要造輪子了,而且會(huì)花費(fèi)一些時(shí)間。當(dāng)然如果你很想造輪子而且你確定你有一定的時(shí)間(不用太多)你就去造吧。國(guó)內(nèi)的開(kāi)源軟件和基礎(chǔ)軟件不好,說(shuō)不定我們這代造了一些輪子之后,國(guó)內(nèi)的基礎(chǔ)軟件就好了。
很多時(shí)候如果你沒(méi)有頭緒,你就寫點(diǎn)代碼吧,古人寫字靜心,我們?yōu)槭裁床荒軐懘a靜心呢?說(shuō)不定你寫著寫著輪子的框架就出來(lái)了,再寫著寫著輪子就造好了。
雖然上面我都說(shuō)了點(diǎn),但是很多情況下你找不到你想要的資源,可以嘗試問(wèn)一下別人,說(shuō)不定他能給你很好的建議---這個(gè)建議可能就一句話。