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