PureORM(暫未開源)是7月份開始的一個突發奇想,期間斷斷續續,都是利用晚上下班后和周末的一點時間開發出來的一個對象關系映射框架,后來根據自己的想法融入了IOC,在某個特性上同時也涉及到AOP的實現。所以已經不是純粹的ORM,對於PureORM這個名字來說自然是不合適的,期間也換了不少名字,現在也不打算換了。整個框架的代碼量不多,甚至可能比不上我在游戲里的一個比較大的功能模塊。站在技術的角度上,軟件產品追求的無非是兩個方向,一是簡單得明顯沒有缺陷,二是復雜到沒有明顯的缺陷。顯然,前者境界更高一些,也應該是我們追求的方向。遺憾的是,PureORM是一個兩頭不到岸的個人作品。PreORM的功能是比較簡單的,在ORM(對象關系映射)方面,沒有Hibernate的博大精深和面面俱到。在IOC(依賴注入)方面,也沒有Spring的優雅和強大。如果對PureORM稍微有點了解之后會發現,在用法上特別是配置文件的結構上,會和Hibernate和Spring有點相像。因為它們是我開發過程中的參照物,其實所謂的參照主要集中在配置文件的結構設計上。
PureORM框架是基於反射的,說得通俗點就是說ORM和IOC的本質是反射。有個看法,反射是一個由外而內的手段,就好像算命看相一樣,觀其外表而知其內里。如果說實現ORM是平平無奇地度過的,那么實現IOC就是一個費煞思量和伴隨驚喜的過程,當時花了好幾天的時間去思考人生。網上有一種觀點認為,一個優秀的程序員80%的時間應該用於思考,而剩下的20%的時間才是用於寫代碼的,這似乎有點道理。確實,實現的思路清晰了之后,代碼實現是很快的。這也是在寫框架過程中的一點感想和體會。編寫框架的過程也是一個不斷有新想法和重構的過程,很想做到面面俱到,但是限於個人能力問題而不得不放棄。站在市場的角度看,這是一個很危險的想法,舉個例子,李開復曾經談到創新工場的失敗項目,他說有一個項目有一位很聰明的創業者,總是想加新的功能,新的產品線,不夠專一,產品推出迭代太慢,錯失市場良機。推出一個新產品,不需要面面俱到,允許有不足和缺陷,然后通過快速迭代去完善。在這方面很贊同雷軍的單點切入快速迭代的看法。
寫這個框架的一個根本目的其實是練手,還有就是妄想接近優秀框架的那種先進的理念和思想,所以PureORM並不是順應某種需求所誕生的,也不是一個合格的作品,它是為了設計而設計的作品,並且存在重復發明輪子的嫌疑。對於增刪查改的代碼寫多了,也就想換換口味,僅此而已!
在此順便推薦一下最近才買的吳軍(曾任Google研究院資深研究員和騰訊搜搜副總裁)的《數學之美》一書,對於程序員開闊眼界確有療效。你是否想過中文字里的常用字和生僻字的筆畫多少遵循了什么原則,同理,古代的白話文和文言文之間的差異又遵循了什么原則,答曰:信源編碼。常用字簡單而且筆畫少,生僻字晦澀而且筆畫多。同理,古代的白話文據說與現在的某種方言是差不多的,而文言文卻是簡潔無比,是因為古代的紙太貴而書寫文字又極其不方便,大多數刻在竹簡上,既麻煩效率又低,或許你現在已經明白為什么文言文會如此簡潔了吧。語音識別和機器翻譯從語義分析和語法分析到統計模型的一個轉變歷程,因為正確的句子出現的概率總比不正確的句子出現的概率要大得多,所以統計學就派上用場了。還提到Google的PageRank算法,感興趣的同學應該會很感興趣(一句廢話),這才是真正的稱得上是算法,至今我都不認為自己寫過算法。在代碼里融入數學的元素也是一個很想嘗試的方向,無奈數學是硬傷,況且久不使用,已然遺忘。
時間倉促,廢話就說到這里,不能說太多,因為明天要上班!