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