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