我眼中的Python
python這種編程語言我很早就聽說它了,早在1998年,我在玩Linux的時(shí)候,就接觸過它,但是我對(duì)python的印象僅僅停留在它是一種流行的面向?qū)ο蟮哪_本語言的認(rèn)識(shí)上。
zope,基于python的app server,早在2000年我就已經(jīng)對(duì)它如雷貫耳了,但是我對(duì)zope的印象僅僅停留在它是一種類似Apache HTTPD Server,AOL Server之類的web server上。
今年ozzzzzz多次向我提到python和zope,聽得我耳朵都起了老繭了,dlee又建議我開設(shè)python版面,雖然我沒有答應(yīng),但是架不住朋友們的左勸右勸,終究對(duì)python這門語言有了好奇心。
幾天前,當(dāng)我漫不經(jīng)心的瀏覽了python和zope的網(wǎng)站之后,我突然有了一種“眾里尋它千百度,那人卻在燈火闌珊處”的感覺,悔不迭錯(cuò)過了那么多次相逢的機(jī)會(huì)。
對(duì)于軟件開發(fā),我和ozzzzzz有一個(gè)共識(shí),就是腳本解釋弱類型語言在開發(fā)效率上遠(yuǎn)遠(yuǎn)超過編譯強(qiáng)類型語言,從軟件開發(fā)角度來說,腳本語言具備天然的開發(fā)效率上的優(yōu)勢(shì),這是由語言的內(nèi)在屬性決定的。
例如我們可以比較一下Web編程使用PHP和Servlet/JSP,比較一下Windows桌面應(yīng)用使用VB和VC/Delphi,比較一下Unix環(huán)境下面Shell和C/Java,比較一下數(shù)據(jù)庫環(huán)境下面的PL/SQL和JDBC/SQLJ。
我雖然使用Java開發(fā)軟件已經(jīng)有5年的歷史了,但是能不用Java的時(shí)候,我一定不會(huì)用Java的。如果搭建一個(gè)小型的網(wǎng)站,我一定選擇PHP而不是Java;如果針對(duì)數(shù)據(jù)庫的小型編程,我一定使用PL/SQL而不是Java;如果是桌面應(yīng)用,我一定選擇VB而不是Java;如果是Unix環(huán)境我寧愿選擇shell,perl甚至PHP,而不是Java。
做為一種嚴(yán)謹(jǐn)?shù)?,編譯式的,面向?qū)ο笳Z言,Java總是給我一種須正襟危坐,須一板一眼的按照OOAD的原則編程,才敢在鍵盤上敲下字符的感覺。即使編寫一個(gè)最小規(guī)模的程序,我也不能夠接受把所有的code塞到main里面的做法。Java似乎以不怒自威的威嚴(yán)使我不敢隨意編碼,不敢玷污Java的嚴(yán)謹(jǐn)。于是我即使寫一個(gè)很簡單的JDBC程序,也要一板一眼的try catch finally,一層層的處理Connection,PreparedStatement和ResultSet。
誠然,如果開發(fā)規(guī)模比較大的項(xiàng)目,或者開發(fā)自有的軟件產(chǎn)品,必須應(yīng)該按照嚴(yán)謹(jǐn)?shù)姆绞剑藭r(shí)Java也是最適合的語言。但是我不想活的那么累,很多人也不想活的那么累,于是大家都懷念起來腳本語言的好來。對(duì)于小規(guī)模的應(yīng)用,使用腳本語言快速簡單完成的事情,當(dāng)你使用Java的時(shí)候,你陷入了過多的層層代碼包圍中去。于是groovy出現(xiàn)了,bean shell出現(xiàn)了。大家終于明白,編譯語言不是軟件開發(fā)的全部,腳本語言才是最適合程序員的語言。
我喜歡腳本語言,喜歡的沒邊,Java是我的職業(yè),但是我從來都沒有在內(nèi)心深處喜歡過它的語法,我更加討厭C++變本加厲的復(fù)雜。我鐘愛的語言包括小學(xué)就接觸的BASIC和Logo,畢業(yè)以后才掌握的Unix Shell和PHP,Perl,PL/SQL。幾乎我接觸過的每種腳本語言,我都有濃厚的興趣和感情,除了VBA是一個(gè)例外。
看看Java里面長長的對(duì)象,方法和屬性命名,看看Java編程冗長的調(diào)用語句和愚蠢的對(duì)象賦值和經(jīng)常長達(dá)幾十行的getter/setter,我會(huì)時(shí)不時(shí)從心底泛起惡心的感覺,雖然我經(jīng)常也是這種惡心感覺的制造者。但是惡心歸惡心,我知道Java有它不可取代的作用,PHP有它無法彌補(bǔ)的缺陷。大部分腳本語言,包括perl,PHP,PL/SQL,VBA都不是真正意義上的面向?qū)ο缶幊陶Z言,即使包括了部分面向?qū)ο笳Z言的特性,這注定了腳本語言不能夠承擔(dān)大型項(xiàng)目的開發(fā),甚至也不能夠充當(dāng)良好的可復(fù)用的組件存在。
所以我很遺憾,我欣賞PHP腳本語言的開發(fā)效率,我也欣賞Java的面向?qū)ο蟮哪芰Γ倚蕾pPHP的低部署成本高可靠運(yùn)行,我也欣賞Java App Server帶來的開發(fā)復(fù)雜運(yùn)算的強(qiáng)大能力,但是魚與熊掌不可得兼。
直到我看到了python和zope,我終于找到了夢(mèng)寐以求的東西,兼有腳本語言開發(fā)的高效率,兼有低部署成本的易用性,同時(shí)又有完備的面向?qū)ο蟮膹?qiáng)大支撐能力,同時(shí)又具備完善的強(qiáng)大的app server支持。最令我生氣的還是plone,這個(gè)運(yùn)行在zope之上的軟件,你可以稱之為portal,或者稱之為cms,或者其他的什么名詞,但是我知道它幾乎可以實(shí)現(xiàn)任何網(wǎng)站想要實(shí)現(xiàn)的功能。默認(rèn)安裝下,這個(gè)東西很像confluence,一個(gè)Java的商業(yè)的cms,但是比confluence功能強(qiáng)大的太多,可定制性,可開發(fā)性又強(qiáng)的太多了。plone在默認(rèn)安裝情況下你就可以把它當(dāng)做cms來用,比較類似***nuke類軟件(PHPNuke, PostNuke, JBossNuke,...),通過插件的擴(kuò)展,你可以讓plone里面集成了forum,blog,wiki的功能,再加上plone本來就支持的WebDAV,功能強(qiáng)大的基于文檔的權(quán)限控制,多用戶多組的管理,你可以在很短的時(shí)間內(nèi)實(shí)現(xiàn)一個(gè)全功能的門戶網(wǎng)站??尚Φ氖?,我從去年到今年一直在考慮把JavaEye建設(shè)成為一個(gè)集成forum,blog,wiki,cms功能的網(wǎng)站,甚至雄心壯志的想要做一個(gè)這么的軟件產(chǎn)品來,但是現(xiàn)在我發(fā)現(xiàn)plone已經(jīng)漂亮的實(shí)現(xiàn)了這一切,最令我沮喪的是,ozzzzzz在聽過我的軟件產(chǎn)品計(jì)劃之后提出一個(gè)用關(guān)鍵詞來組織網(wǎng)站內(nèi)容的設(shè)想,結(jié)果我發(fā)現(xiàn)plone已經(jīng)這樣做了,我能說的只有慚愧!
我只能感嘆自己沒有在一年之前就發(fā)現(xiàn)plone,否則的話現(xiàn)在的JavaEye將完整的使用plone來架設(shè)。更令我慚愧的是,當(dāng)我剛剛意識(shí)到zope/plone的價(jià)值的時(shí)候,上海已經(jīng)有人成立了專業(yè)的zope/plone解決方案的軟件廠商,并且拿下了好幾個(gè)大型的客戶,(http://www.zopechina.com)。有時(shí)候我們真的不能把眼睛盲目的盯著大廠商強(qiáng)行推廣的標(biāo)準(zhǔn)了,應(yīng)該好好的審視自己真正需要的是什么,并且圍繞它構(gòu)建自己的核心競(jìng)爭力,否則我們只有永遠(yuǎn)做IT行業(yè)食物鏈最底層的命運(yùn)。
ozzzzzz曾經(jīng)對(duì)我說,zope是B/S應(yīng)用中的VB,快速原型開發(fā)中小型企業(yè)應(yīng)用的最佳武器,我現(xiàn)在真切的理解了他的話。我覺得我們確實(shí)不能夠眼睛光盯著Java/C#不放,也應(yīng)該了解一下zope/plone,它應(yīng)該成為中小型企業(yè)應(yīng)用,特別是基于文檔管理的企業(yè)應(yīng)用的最重要的解決方案。
zope/plone雖然很好,但是我知道它不會(huì)如Java/J2EE,C#/dotnet那樣在國內(nèi)成為一種主流的軟件開發(fā)解決方案。原因就在于國內(nèi)的軟件開發(fā)行業(yè)長期處于國際分工產(chǎn)業(yè)鏈的底層,缺乏創(chuàng)新意識(shí)和開拓的精神,而往往滿足于跟隨跨國公司的標(biāo)準(zhǔn),啃啃人家剩下的肉骨頭。位于食物鏈頂層的廠商,例如MS,IBM,Sun,BEA,CA,Oracle等等,爭奪的是標(biāo)準(zhǔn)。他們是規(guī)則的制訂者,制訂好了規(guī)則,放大家進(jìn)場(chǎng),他們負(fù)責(zé)收費(fèi),錢收的差不多了的時(shí)候,他們又重新競(jìng)爭,制訂新一輪的規(guī)則,繼續(xù)坐地收費(fèi)。很多時(shí)候,市場(chǎng)的真實(shí)需求并沒有被真實(shí)的體現(xiàn),真實(shí)的需求被頂級(jí)廠商掩蓋了。他們創(chuàng)造了一個(gè)市場(chǎng)需求,有了市場(chǎng)需求,就有錢賺,賺的差不多了,就摧毀這個(gè)市場(chǎng),然后創(chuàng)造下一個(gè)市場(chǎng)需求。因此本質(zhì)上來說,IT行業(yè)就是幾個(gè)寡頭在博弈,不管誰贏誰輸,我們都是輸家,我們只是人家的籌碼。大家可以回顧一下這些年軟件技術(shù)發(fā)展的歷程,寡頭廠商制造了EJB市場(chǎng)賺大發(fā)了,寡頭廠商了制造了ERP市場(chǎng)賺大發(fā)了,寡頭廠商繼續(xù)在制造著SOA,等著繼續(xù)收錢。我們不能夠被滿天飛的技術(shù)迷惑了,我們不能被人賣了還替人家數(shù)錢。
所以多多關(guān)注一下我們真正需要的技術(shù)吧。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。