網名:Naven,愛好廣泛,汽車、計算機、藝術、足球等等,汽車設計技術乃之最愛,恐終身無法如愿。偶從事軟件開發工作6年有余,入行2年才悟道,對軟件技術執著,技術狂熱型,設計和開發追求嚴謹完美,程序設計是一門藝術,不是枯燥的技術。
深研C/C++和JAVA語言四載有余,初窺其道,對面向對象、范型、組件技術、WEB服務稍有領悟,感悟到其博大精深,深不可測。同時對各種基礎技術興趣異常,喜鉆研Framework(框架)、OS內核、虛擬機技術,前方之路遙遙。 本人前幾年主要學習OOD(面向對象編程),學習OO理論及其實現(C++和Java),發現光靠它還是很難設計出好的系統,系統容易臃腫而難以維護(雖然范型技術能夠解決一些代碼重復的問題),而解決這一問題讓自己的設計更完美的辦法就是設計模式。自從設計模式(GoF95)問世以來,各種設計方法理論層出不窮,比如敏捷設計、重構、面向方面設計、創建式設計等,但偶認為最重要最精髓的還是設計模式,它是我學習的重點并運用到我的設計開發中,關鍵是領悟而不是死搬硬套。而且設計模式已經是各種系統設計的指導理論,比如J2EE、.NET里均運用了大量的模式,Java Framework里舊的一些不合理的設計也在慢慢改用標準的模式重構,學好用好設計模式在未來意義重大。
技術學習上感覺已開始進入思想積累、理論研究階段,學習已不拘泥于某個具體的技術,主要以研究其技術原理和設計思想為主, 學習一門新的語言或新技術覺得大同小異。目前本人積累基礎技術經驗主要以語言特性發展、數據結構和算法、設計模式等為主。對于具體的技術,本人涉足過和準備涉足的有C/C++、STL、Boost、Java、J2EE/EJB、COM、.NET Framework、MFC/ATL、WIN32、Unix/Linux、TCP/IP、VC、ACE Framework、UML、設計模式。。。只要是軟件的基礎技術,均想涉足,目的是想窺視軟件共同的奧秘。 偶認為,軟件領域雖然龐大繁多,徜若一一詳究慢慢積累,傾一人之終生也未可得。但萬物皆有其宗,假如只剖其主干去其枝葉,就可得其精髓。況且軟件技術均有通融之道,觀一即可領悟其他,再者凡新技術均由舊技術發展而起,師夷而制夷,青出于藍而勝于藍,如能學習他人之長處創造新技術或者新產品甚至或者應用于實踐足矣,此乃偶之本意。觀所有成功產品及其締造者皆有此來。另本人從小對藝術書畫頗有天賦,因此非常希望學習GUI/GDI、DirectX、Media/DVD、游戲3D-Engine等圖形相關技術,并希望開發出一些相關的產品,苦精力有限,難有時間持續鉆研。
本人崇拜的軟件領域的偶像主要有Anders、Richter、Strustrup、Lippman,他們是偶努力學習的榜樣,尤其是Richter鉆研Win32奧秘的精神,還有兩位就是候捷和李維,真希望有朝一日修煉到他們的層次。一個人水平的高低不在于他寫過多少行代碼,完成多少個項目,而是他對軟件精髓的領悟,對技術發展趨勢的把握,并由此發展出開創性的技術理論或產品, 而世界整個軟件未來的方向就依靠這些少數有頭腦的人,微軟立于不敗之地就在于它始終是軟件發展的領頭羊。引用李維的話:“軟件設計是入門,軟件趨勢是無價”。
(寫于 2005年 北京)
本人經過兩年奮斗,完成兩個基礎框架:Java Web框架(一個MVC框架)和一個C++基礎框架(還在繼續完善中,陸續會有文檔介紹),約有20萬行代碼,代碼設計優美清晰。考慮到未來希望支持應用服務器軟件、普通軟件、PocketPC軟件、游戲等應用軟件的開發,以及跨平臺的特性(為開發這些相關的產品做準備),本人正在考慮重新設計此框架,以使其具備跨平臺和支持多個編譯器及開發工具,以及支持小內存應用等。未來準備重點設計統一的框架體系,有與Java的Interface、Abstract 和 Implement 類和Factory模式、Wrapper模式類似的體系結構,以使得接口與實現盡量分離,并使接口盡量與Java和.Net的統一或者類似。關于C++的庫,本人認為未有一個像Java/.NET這樣完善規范的框架,而且各個C++庫千差萬別,功能單一,整合起來非常困難,而且很多庫易用性簡潔性考慮不夠,接口的設計很不統一,很多設計出來有點展示或炫耀自己獨有的設計方法似的。
(寫于 2006年 北京)
我正式學習和使用C++/Java已經5,6年了,不包括大學里和剛畢業2年的陸續地上手式的學習,在國內的說法也可以說“精通使用”,但更想深入鉆研這些語言的機制和高級特性以及語言的發展等,可以說剛剛“入門”而已。本人開設這個“軟件工作室”,目的是為了立足于以開發實際應用框架或者軟件為主,以文章介紹設計和使用以及自己心得為輔,所以說第一步發布了這個javen框架,不久將來也想加入OpenSource的大家庭里來,另外也有一些自己的想法,也想通過這些庫或應用實現出來。
目前納入這個庫的都是一些跨平臺的部分,暫時無法跨平臺的暫通過獨立的庫包含進來,比如javen是一個基礎的跨平臺庫,jserver是一個進程調度的服務器框架,jstorage將做一個分布式存儲框架,jsearch將實現一個搜索引擎框架等等,根據想做的應用,以后還想封裝更多的框架。不過考慮到學習和使用的成本問題,我這些庫的接口基本都是仿照目前最流行的語言和庫做的,比如jsearch將仿照lucene的接口,jstorage可能仿照hadoop等,javen則與java語言盡量類似。
目前C++領域確實有很多的庫,不過我感覺它們的管理不像java那樣嚴格,有標準的接口,像ACE這樣的大型庫學習使用難度比較大,而且功能大部分單一,所以我想考慮自己設計這樣一些庫,簡化應用系統的開發。
(寫于 2007年 北京)
人的生命真是短暫,而能用來學習、工作以及實現自己理想的時間更是少之又少。反之軟件鄰域的發展真是神速,一
個人能在其中有所成就的機會更少,如果想讓自己的想法或理想得到實現,必須要加倍努力,并且要善于站在前人肩
膀上,完全靠一個人或者幾個人是難以成就的。這幾年軟件領域又有了一些變革,再發展幾年估計要產生真正的革命
,進而影響到每個人的生活。如最近比較火的一個概念“web2.0”,這其實是個很虛的東西,可以說沒有任何實際
內容的概念,但是卻不斷有不少新技術捆綁在上面,如可以實現應用整合的web service/SOAP, 實現網頁異步請求
的AJAX,實現頁面動態布局的CSS,實現內容聚合的RSS等技術或協議,當這些“小”技術越來越多時,量變將產生
質變,比如SOA面向服務架構的應用將深入到生活的各個方面。
其實我更看重另外一些更專業的軟件技術,現在的計算機硬件已經接近摩爾定律的極限,即CPU的運算頻率已近不能
再繼續提高下去了,必須要采用另外的途徑來革新,即“分布式計算”“集成計算”“網格計算”,現在的多個內核
的CPU即是“集成計算”,很低的頻率即可完成大規模高速運算,這就一種革命。同樣在軟件領域也在開始這種革命
,隨著硬件的分布式,軟件也在開始分布式變革,首先是開發語言,現在的語言基本都處在“命令式”執行階段,即
是按語句順序一步一步執行的,即使是OO語言也如此,但是未來的語言(如C#的LINQ技術)將支持lambda表達式,
可以讓多個語句(通常是表達式)同時執行,這將極大地提高程序運行速度,同時給程序員也帶來更大的挑戰,就像
多線程一樣需要考慮更多問題。另外一種軟件變革技術就是真正的分布式計算,google在這方面走在前面,它設計
的三大分布式技術GFS/MapReduce/BigTable已經成為google各個應用的基礎,而這些應用可以同時自動地運行在全
球數萬臺很廉價的機器上,這些龐大的計算機群組成了一個超級計算機。yahoo和微軟也在努力追趕,yahoo的技術
hadoop HDFS/MapReduce/HBase對應于google相應的技術,這是一個apache開源項目,現在還在實驗階段,本人主
要在研究hadoop相關技術。還有一項技術是模塊化軟件設計,代表技術是OSGI,比較成功的應用是Eclipse IDE,
說到這開發工具估計很多人都很熟悉了,這是一個真正開放的IDE,可以用來開發Java/C++/C#/PHP等各種程序,甚
至可以用來做任何桌面應用,只要你提供相應的組件掛上去就是了,這種組件就是基于OSGI技術,其實它并不限于桌
面應用,它是一個通用的軟件模塊快協議,不限語言,不限操作系統,甚至在嵌入式,機頂盒等家電,數碼領域都可
以應用。想想看如果家里買的家電,不管洗衣機,冰箱,電視,還是電腦,只要下載新的軟件組件就可以停供新的功
能該有多棒,比如給電視下載高清模塊,既可以收看高清電視了,實在不錯
通觀目前的軟件技術,說起來還是太雜太復雜,可以說開發出的軟件使用也很復雜,難以跟電視等相比,但是絕大部
分人的真正用途還是如何搜索自己想看的資料,閱讀文章,或者管理成千上萬的文檔,但是目前要達到這個目標還是
難度很大。想想看,如果你的電腦上積累了上萬個文檔,如何整理它們將是一個噩夢,而要找出它更是難上加難,如
果文檔在別人電腦上呢。所以我的想法是吸收電驢的思想,在加上搜索引擎的技術,同時應用分布式計算和模塊化設
計的技術和理論,設計一個應用平臺,用它來組織和管理自己的文檔,以及網上的資料豈不更妙,同時還可以與網絡
上任何人共享資料。電驢的想法很奇妙,它可以自主地將有共同需求的人組織在一起,相互共享資料,還可以讓用戶
自主地挑出最好的東西,拋棄網絡上90%的糟粕。而且不用依賴任何網站服務器,實際就是自動將全世界有用的信息
組織起來,用戶打開電腦不用費力去各個文件夾尋找,它會自動將你喜好的文檔提供給你,而這個文檔有可能在世界
任何一個角落,想想就很不錯。本來目前開發的 Hawk 搜索引擎平臺將是這個應用系統的前身,即實現一個具體的
網站內搜索工具,和用戶桌面文檔或者自己感興趣的網頁的搜索工具,下一個版本將實現一個垂直領域的可以自由配
置的垂直搜索引擎平臺。
(寫于 2008 年 北京)
MSN:navychen2003@hotmail.com
_________________
C++/OO Java .NET 圖形/GUI 游戲 - 探討軟件深層問題,結交天下豪杰俠女。
濃濃的咖啡,溫馨的小屋,歡迎來咖啡小屋坐坐啊!
http://www.shnenglu.com/javenstudio/