我已經記不清第一次聽說「輪子理論」是什麼時候了,反正是很久以前了,在瀏覽乙個國外的技術**時偶然看見的。當時覺得挺有道理的,覺得它不僅適用於軟體開發領域,更是很通用的生活哲學。後來,隨著很多自稱遵循「輪子理論」的開源框架的出現,身邊的人開始越來越多的和我提起「輪子理論」這個字眼兒。一時間,它好像變成了軟體開發社群中的時髦詞彙,如果誰不知道的話,都不好意思跟別人打招呼。
然而我自認是乙個具有人文精神的程式設計師,而人文精神的特點就是反思和獨立思考。看著這麼多人對「輪子理論」讚不絕口、頂禮膜拜,我總覺得自己有義務對這個「理論」做進一步的思考,看看它究竟是個什麼東東。
所謂「輪子理論
don not reinvent the wheel!對嗎?但是,這是我們當今的生活中使用的輪子嗎?當然不是。我們可以想象這樣的過程,有人把木片輪子改進成了帶空心的輪子,然後有人用金屬代替了木頭,再然後有人覺得輪子的減震不好,又加上了輪胎這個東東,直到那時,現代的輪子才真正地出現了。
那麼我問你,這些各個時期的輪子,算是發明嗎?你可能會毫不猶豫的說:「不算!」但是為什麼呢?從最原始的木片,到現在我們使用的鋼圈+車條+裡胎+外胎,這不算是發明嗎?我覺得這應該是一種發明,如果說輪子是圓的才是唯一真正的發明的話,那愛迪生可能就不會因為1000多個發明而被後人傳頌了。更進一步說,為自行車設計的輪子,為汽車設計的輪子,為坦克設計的履帶式輪子,雪地車輪子,賽車輪子,甚至賽車雨天輪子,這些都可以算作發明。那麼為什麼說
don not reinvent the wheel,而是
don not reinvent the axis
(軸)」呢?當然也不是,don not reinvent的思想會阻礙人們對新發明的嘗試,我覺得是不可取的。然而,也不是說可以隨便的reinvent這個「軸」,這麼重要的東西,如果想reinvent,那一定要是革命性的,它所帶來的進步要有巨大的價值。也就是說,在設計「統一使用方式」這個漫長的過程中,允許有也一定會有改動,這些改動就應該是革命性的。
看過電影《i robot》吧?還記得裡面will smith開的那輛audi嗎?它的輪子是球型的,這樣車就可以很方便地向任意方向形式,酷吧!但是你想過沒有,這種輪子的「軸」是什麼呢?簡單的一根棍子肯定不行啦,那會是磁懸浮技術?我不知道,但是我知道這個「軸」肯定是reinvent,而且是革命性的。如果幾年後真的出現了這樣的東東,你會不支援這種「軸」的革命嗎?
也談武媚娘
前段時間電視熱播 武媚娘 老婆天天晚上看。我不大喜歡看各種誇張和粉飾的歷史劇,但是對歷史還是喜歡一些,所以就利用閒餘的時間搜尋一下,看看唐朝的那些事。正好把自己的搜尋和感慨整理記錄下。唐朝是乙個中國發展的乙個鼎盛時期,即便如此,也是乙個多事的朝代。李世民宣武門弒兄,自己逼迫父親成為了太上皇,兒子李志...
也談介面程式設計
剛剛和大峽討論乙個問題,介面程式設計,這個話題也許大家比我理解多了,我提出乙個自己的觀點 在個人程式中空介面很少,至少我見的很少!大峽 不對,空介面很多,介面只不過是乙個標識,然後我們做了乙個很有意思的程式 空介面 package springroad.demo.taginte ce public ...
也談大數階乘
最近公司裡面的專案一直用c 來進行,基礎太薄弱,於是自己完成了公司的任務後,加緊練習。本來那天是想寫乙個遞迴階乘演算法的,發現有不少問題啊 第一 遞迴有乙個弊端,就是棧空間不夠的問題 第二 遇到大數的時候,在cpp中沒有辦法找到合適的資料型別來進行計算,用long,double都是不可能夠的。因為我...