自由與繁榮 – IDisposable的閑話Python

來源:互聯網
上載者:User

 

[Draft Version: 早就想寫點關於Python的東西,但是我實在是懶得動手。因為我實在不知道該寫點什麼 - 教程? 技巧? 還是感受心得? 我覺得都不合適:教程很多了,e文的翻譯的到處都是;技巧呢,我都沒有什麼技巧,常常把Python當作C++來用,而且我對於語言中的一些特性(通常會讓人覺得你的代碼很cool)越來越抵觸。“重劍無鋒,大巧不工”也許最能道出我的想法,呵呵。但是我有述說的衝動,於是有了這自說自話的東西,姑且算作隨筆吧]

引子

再說一次:我很懶。我不知道最終能不能寫成什麼,但是只要開始了就有希望。

這裡借用《沉默的證人》中的一句台詞鼓勵一下自己 - “一旦讓我開始我就不會停止”。

第一次親密接觸

最早知道Python是在《程式員》雜誌上看到“惡魔吹著笛子來”寫的“自由與繁榮的國度”系列文章,以及IBM developworks上“可愛的Python”系列文章。那時候全天候的英語強化課上得很是無聊,於是響應某大師的號召 - 每年學習一種新語言,於是乎每天中午抽出一個小時來找python的資料看。記得那個時候自己沒有電腦,可憐兮兮地跑到學院機房去用電腦。慶幸的是python的安裝包不是很大,所以我每次上機都去python.org上下載然後安裝。(呵呵,後來那個機房裡邊很多機器上都被我裝上了python 2.3)。Python真的很容易學,花了幾個小時把tutorial讀完就能夠寫點小程式了(當然不是hello world啦)。

有時候學習一種新語言的最大敵人就是已掌握的語言。(正因為如此我的英語總是不太好不太壞的樣子,:))接觸Python的時候我已經“精通”C++了,對JAVA也知道點皮毛。這些知識對學習Python也有協助,並不總是“敵人”。Python給我的第一個震撼就是

“什麼都是對象”-

內建類型,程式碼片段,解譯器都是對象,而且類型本身也是對象(對於剛學習python的人來說這個也許有點難理解)

物件導向特性的支援也跟C++/JAVA/C#不同。比如多態不需要virtual, override之類的繁瑣文法。繼承的文法我還是覺得有些怪異,更喜歡C++或Ruby的形式。封裝嘛,嗯,我想起趙麗蓉的小品《封裝》裡邊的一句台詞:“這不沒包上嗎?”。儘管Python通過醜陋的底線來實現存取控制,我覺得它還是沒有真正包上,哈哈。對於支援reflection的語言來說我都這麼認為,當然reflection和封裝本身並不是相互抵觸的feature。

原來以為C++就是物件導向語言的全部, 當看到Python的物件導向及動態類型特性,我很是驚訝:

物件導向也可以這樣的?!

 

為什麼選擇Python

有很多人會有疑問,為什麼Python一直徘徊在主流和非主流之間呢?比它年輕的Ruby藉著RoR的仙氣和Web 2.0的妖風這兩年大紅大紫,儘管Python的開發架構如Zope, Django也有巨大的發展,Python卻還是那個樣子,人氣好像不是特別旺。其實我也不知道答案。但是如果你問我,又沒有必要學習Python呢?那麼我告訴你一定有,如果你是一個編程新手,你可以不用學習C++但是你最好學會Python。而且學習Python的性價比非常高。你可以用Python做幾乎所有的事情,但是學習C++是一個漫長艱苦的過程,光會C++的文法語義你還是做不了什麼。這是語言和平台的話題了,扯得遠了。:)

我選擇Python,最開始是偶然的,純粹是好奇,為了學習知識而學習知識。後來也用Python寫點小工具自娛自樂,工作中也用Python來做API測試。儘管沒有用Python做規模化的開發,但是只要可能我都會爭取用Python去做事情。

迴歸理性思考,總結一下為什麼喜歡用Python

理由1: Python是解釋型語言,不需要編譯環節。這個特點跟C++這樣的編譯型語言相比簡直是太美了。相信用過C++的同胞們都被編譯/連結過程折磨過。“修改代碼-運行”這樣的過程比“修改代碼 - 編譯 - 連結 - 運行”簡化了太多。省時省力,而且多數時候你都不需要IDE,健康又環保,不要太好喲。

理由2: 跨平台。Python的跨平台能力不用我做廣告了吧,從Windows, Linux/Unix到Mac, 這些福士化的作業系統都支援Python。移動計算領域作為發展產業發展的熱點對Python的支援也很好,包括iPhone, Symbian, moblin(Google Android中不知道是否支援Python, 但是作為一個linux + java的系統,支援Python只是a piece of cake)。我在工作中第一次用到Python就是因為需要需要支援Windows, Linux兩種系統 - 使用SWIG為C++ API產生了Python的wrapper,然後用wrapper來測試C++ API。

理由3: 良好的庫支援和社區支援。C++讓我最不爽的地方是它是一門語言。 - 這不廢話嗎?! 呵呵,它是一門語言,不是一個平台。 這一點你對比一下JAVA,.NET就知道了。C++難學易用,但是就算你學會了也不頂用。光有標準庫你還是寸步難行,這個標準庫缺少了太多東西 - 圖形化介面,網路通訊,資料庫編程,序列化等等。boost庫越來越強大也可能成為標準但是太複雜,越來越複雜。正如C++他爹和Heb Sutter說的C++現在是“expert friendly”。就算是退一步講boost成為標準,但是按照C++標準委員會的節奏5年一小變10年一大變,等boost標準化的時候也許我已遠離前線在教我的孩子寫程式呢。而Python的一項優勢,就是其標準庫,儘管不像.net/JAVA那樣巨大,但是夠用。除開標準庫,在社區裡你能夠找到所有你需要的第三方庫。

理由4: 多範式編程 - 感受心靈的自由。C++社區扯著喉嚨吆喝了好多年的多範式編程,大力鼓吹generics, metaprogramming,也形成了很多idioms, tricks,也誤導無數編程浪子寫出了鬼斧神工,人神共憤的“優雅”代碼。怎麼樣呢?唯有歎息。哪個使用者會關心你他媽的用boost::bind傳遞某個成員函數給boost::thread?只要你的程式正常運行沒有人理會這些。在Python的世界裡,多範式編程是在自然不過的事情了,感受心靈的自由吧。

=======================================================================================

    [TO BE CONTINUED]

=======================================================================================

Roadmap:

我所喜歡的Python

我不喜歡的Python

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.