Python是軟體開發領域一朵誘人的奇葩:人們經常把Python看作是一種起到縫合作用的嚴格指令碼語言,不過卻很少有人意識到Python已經足夠 強大到應用於工業級軟體開發領域。Python的年歲比Java老,到現在,這種語言已經發展出了規模雖然不大但仍然在成長中的自描述公司專屬應用程式 Pythonistas。 雖然人們經常把Python同Perl相比較,把它們看作一種專門應用於Internet的指令碼語言,然而,Python已確實在大規模的軟體開發領域佔據了自己的一席之地。這種指令碼程式設計語言具有以下顯著特點: * 物件導向 * 解釋語言 * 互動式 * 模組化 * 動態性 * 進階語言 * 可移植 * 可用C和C++擴充 Python整合了各種模組、異常、動態輸入、進階動態資料類型和類等概念。它同多種系統函數和系統庫乃至各類Windows系統建立了介面。 如果說Python並不一定能滲透到任何計算領域的話,至少在企業開發這一行它的處境就是這樣。在企業開發領域, Python還被當成一種可以替換Perl的指令碼語言。本文就對Python構造企業級應用這一問題做簡短闡述。 優點 Python語言的某些特點使其成為公司專屬應用程式的合理選擇: * 免費可用(像Perl一樣,Python也是開放原始碼軟體)。 * 穩定(Python目前發行到2.2版,我剛才已經提到,它的年頭比Java還老)。 * 良好地支援對象、模組和其他可重用機制。 * 採用C和Java語言的整合方便性和擴充性。 以上這些特性非常有利於Python在企業中的應用,不過,Python還具有一些適合公司專屬應用程式但卻不太令人注意的其他合理因素。 開發和維護的成本節約 IT部分通常要完成的任務相當繁重但支撐這些工作的資源卻很少,這已經成為公開的秘密。任何承諾提高編碼效率、降低軟體總成本的IT解決方案都應該進行 周到的考慮。Python所具有的一個顯著優勢就是可以在企業的軟體建立和維護階段節約大量資金,而這兩個階段的軟體成本佔到了軟體整個生命週期中總成本 的50%到95%。 Python清晰可讀的文法使得軟體代碼具有異乎尋常的易讀性,甚至對那些不是最初接觸和開發原始項目的程式員都 能具有這樣的強烈感覺。雖然某些程式員反對在Python代碼中大量使用空格,不過,幾乎人人都承認Python代碼的可讀性遠勝於C或者Java,後兩 者都採用了專門的字元標記代碼塊結構、迴圈、函數以及其他編程結構的開始和結束。提倡Python的人還宣稱,採用這些字元可能會產生顯著的編程風格差 異,使得那些負責維護代碼的人遭遇代碼可讀性方面的困難。 Python明晰的文法使其成為一種學習曲線平和的程式設計語言。有經驗的程式員甚至可能在一天之內就掌握Python的基礎知識,至多不過一周作用就可以上手,而程式設計語言的專家則肯定會比他掌握C、C++、Java甚至Perl要快很多。 Python因其文法的明晰而獲得的最大好處或許該算是開發時間的大大降低了。一名從事企業級應用程式開發工作的開發人員告訴我,他所在單位的開發時間 因為Python的採用而大大節約,同時卻並沒有給軟體效能帶來任何負面影響,他說:“就我們的業務而言,快速地開發出新產品比開發出效能驚人的軟體產品 要重要得多,開發時間相比軟體的最佳化要貴得多(以每小時計算)。 對開發速度採用何種評價標準一直是個很難確定的問題,不過通常情況下,普遍認為開發Python應用程式的速度大約是用Java開發同類應用程式速度的10倍。要是相比C/C++節約的時間就更多了。 內容管理架構 用Python建立的Zope是開放原始碼領域使用最廣泛和最容易理解的內容管理架構。這種工具可以讓瞭解Python的程式員以相比JSP/ASP更 少的時間來建立和部署具有高度互動性的網站,在這種架構下,網站屬主可以非常輕鬆地修改網站的內容而無須程式員的介入。 Zope投入 實用已經有若干年的時間了,目前,特別在歐洲地區已經獲得了普遍的應用。Zope在美國也贏得了廣泛的歡迎,目前對Zope的開發主要集中於簡化開發過程 和進一步將功能同內容的表示相分離,從而再度增加了Zope的普及率,同Python一樣Zope也是開放原始碼軟體。 Zope確實引入了相當的系統負荷,從而在開發期間降低了系統的效能,但是採用某些技術可以有效地把部署網站時產生的問題最小化。 Jython 在考慮企業中的Python應用時,有一點往往被人們所忽略了,這就是Python的變種Jython。Jython完全用Java語言編寫,實現快速 地開發和應用程式測試,以遠低於Java編輯-編譯-測試的開發時間提升Java類庫的運用。Jython還緊湊地整合了Python和Java的代碼, 令兩者都可以充分利用對方的優點。而這正是Microsoft .NET的CLR技術所要實現的目標之一,但今天對Python來說這一切已經成為現實。 缺點 顯然,Python的公司專屬應用程式也應該嚴肅對待反對方的意見。反對Python作為企業級編程可行語言的主要觀點如下: * 相比其他程式設計語言,比如Java,Python的開發人員少很多。 * 缺乏真正的多處理器支援。 * 缺乏商業支援。 * 軟體效能(不過各種評測都反覆表明Python在大多數應用中堪與Java媲美)。 當然,缺乏商業支援是大多數開放原始碼技術都面臨的問題。對Python而言,一時也找不出個應景的法子。然而,最近一些關注Python的歐洲公司新組成了一個商務團體,也許這一舉動標誌著Python發展的一個嶄新階段(請參考Python商務論壇的網站)。 缺乏預封裝的解決方案 PHP 在企業軟體領域贏得了輝煌的成功,主要原因就在於其廣泛實用的產品門類,比如討論板、聊天伺服器和分組日曆以及立即訊息系統等。相比之下,Python提 供的解決方案就少多了。Python語言的分發版中確實包含了一些擴充的類庫,越來越多的程式員也在致力於開發等價PHP的Python工具,但是考慮到 市場的時間緊迫性,而且你所面臨的問題已經有現成的PHP解決方案可以對付,那麼PHP自然會成為你的首選。 Python在軟體開發領域的劣勢 大多數開發經理幾乎很少瞭解Python。在現代IT領域的高壓力環境下,專案管理人員缺乏對Python及其工具的瞭解、缺乏其軟體開發方面的知識自 然成為Python獲得接受的死穴。畢竟,CIO或者開發主管受到最終勝利完成開發工作單位的沉重壓力。在可能的收益卻缺乏具體和誘人的證據這一現實條件下, 大多數開發經理寧肯選擇他們知道的東西。所以很少有人瞭解Python也就不奇怪了。 資料庫訪問層的局限性 相比 現有的成熟技術,比如ODBC和JDBC,Python的資料庫訪問層看起來就過於原始了。雖然這一方面也在發生變化,但是,開發部門需要平滑地接合現有 的複雜遺留資料,同時需要快速的SQL資料庫訪問,所有這一些使其在短時期內難以對Python表現出什麼太大的興趣。 不過,Python在這一領域發展的也很快,在半年左右的時間裡,Python完全可能在其中踏上一隻腳。 文檔差距 相比其對手語言,比如Perl、Java,在某種程度上再算上PHP,Python確實深受文檔缺乏之苦,Python沒有廣泛、易於獲得的文檔和圖書。市面上冠以PHP標題的圖書數量幾乎是Python的兩倍多;而Prel就更多了,它有400多種呢! Python的線上文檔 倒還組織得比較好,但是這些文檔幾乎全是些參考資料。幸而Python相當容易的學習曲線減輕了對圖書資料的過多需要。 缺乏GUI和團隊協作工具 給Python應用程式建立圖形化使用者介面未必複雜。Python分發版本隨帶的Tk就是Python開發人員最常用的工具。但是Tk就缺乏可訪問、易用 的GUI工具。剛啟動的PythonCard項目目前雖然還處於原型階段,但可能在將來填補這一鴻溝。boa-constructor這種產品已經吸引了 某些Python程式員,但是用它來建立全功能的IDE確實太複雜了。 相比GUI工具的缺乏更要命的是Python幾乎沒有支援小組 開發的協議工具。 Java在這些工具領域可謂相當豐富,至少和C++可比。在企業軟體開發市場上,這一缺陷簡直可視為致命的要害。沒有這類工具要讓很多程式員共同開發同一 項目幾乎是不可能的。Python利用其模組化和命名空間分析等特性減輕了這一方面的需求,這些特性可以讓多個程式員開發項目時不可能發生代碼衝突的情 況。但是,這同樣改變不了其協同效能缺乏的嚴重性。 小結 說也說了做也做了,是否在企業中嘗試或接受Python仍然是一個複雜的問題,具體問題具體分析。咱們把各種爭論先放一邊,至少可以得到下面的一些共識: * 如果你已經擁有大量的PHP代碼或者PHP應用程式,那麼遷移到Python不可行。 * 如果你的Java代碼基礎雄厚但你需要大量的小型應用程式、小程式和代碼介面,那麼Python/Jython可能會為你節約大量開發時間。 * 如果你正好手下有一到兩個程式員工作比較清閑,那麼我建議你不妨讓他們研究下Python看能不能在將來派上用場。 轉自: http://www.zdnet.com.cn/developer/tech/story/0,2000081602,39041213,00.htm |