對Python、shell的一些思考

Pythonshell的一些思考

最近學習python代碼的編寫,閱讀了相關的書籍《A Byte of Python》、《Python核心編程》,自己動手做了一些shellpython的練習,並有一些淺顯的看法:

就兩次腳本處理的編碼練習而言,我感覺如果使用python去寫腳本來處理日常事務的話,相對於shell是一件比較麻煩的事情,因爲我可以使用shell在花費更少的時間內,比較熟練地使用awksedgrep這些常用的命令在非常簡短的腳本語句內,完成python一大段代碼所能夠完成的功能。

前兩天,讀到了一篇文章“又拍網架構-又一個用到Python的網站”,網址:http://www.fovweb.com/web/youpai-python.html。上面寫到:又拍網的服務器端開發語言主要是PHPPython,其中PHP用於編寫Web邏輯,而Python則主要用於開發內部服務和後臺任務。一般情況下,網站架構的開發語言可以用下圖所描述:

 

百度百科上對於Python的介紹是:一種面向對象、直譯式程序設計語言,也是一種功能強大而且完善的通用型語言,已經具有十多年的發展歷史,成熟且穩定。這種語言具有非常清晰的語法特點,適合完成各種高層任務,幾乎可以在所有的操作系統中運行。目前,基於這種語言的相關技術正在飛速發展,用戶數量急劇擴大,相關的資源非常多。

       綜合網絡及書籍對於Python的各種評價來看,Python應用是非常的廣泛,而且在未來也是非常被看好的語言。但這並不代表Python是適用於任何場合的,如對於一個SA(系統分析員)而言,平時管理系統用shell腳本肯定是最簡單的,如果純粹的系統管理,應該很少有問題是shell解決不了的,使用shell來處理也會顯得更加地方便和快捷,舉個例子:把所有開頭是#的行都找出來,用shell只需要一個grep命令,而對於Python則需要open(文件).readlines(),然後還需要讀入正則表達式模塊,一行一行地讀入文本,再分析該行是否滿足條件,需要一大堆的邏輯代碼才能完成shell一個命令的功能。

當然,任何一種語言必定有它的適用範圍,雖然在開發效率方面Python要低於shell要高於shell,但Python相對於shell的優點,依照我最近的學習,感覺可以概括爲如下方面:

1Python不需要記憶太多的命令,語法簡單,有C基礎的人學起來非常容易上手,易於使用。而shell要學的命令太多了,但常用的命令不是太多。

2Python可移植性好,它的標準是統一的,不會出現因爲平臺的不同運行結果不同,但shell的命令在各個平臺上還有些不一樣。

3Python要更加強大,shell是一種命令語言,同時也可以看成是一個命令解釋器,用於接收諸如awksed的命令調用等完成相關的功能。而Python則是一種編程語言,Python提供給程序員更大的自由度和靈活性,以完成shell所不能完成或者難於完成的編碼任務,如實現面向對象的模塊化設計、操作服務器數據庫等等。

4Python支持面向對象、支持可擴展性和可嵌入性,同時提供了功能豐富的庫

5)性能方面:很明顯地,Python的執行效率要高於shell,有一個很充分的理由就是shell本身的各種進程間IPC通信要造成相當大的開銷。而Python底層是用C實現的,其性能可以接近於C,但具體相同功能的Python代碼量卻要比C短上很多倍!因此,按照性能排序:C > Python > shell,按照開發效率排序:shell > Python > C

其實對於各種編程語言的發展,如果純以語言的執行效率而言,最快的肯定是彙編了,爲什麼有了彙編之後還會有C?而有了C之後還會有PerlPython呢?這應該是許許多多天才般的程序語言設計者們,從開始都現在一直在不斷地追求的,試圖在語言的執行性能與易用性上尋找一個平衡點。而語言本身只是工具而已,而這項工具好不好用,除了很大程度上取決於語言本身的設計之外,另一方面則是與語言使用者本身的熟練度、能力和水平密切相關。

程序設計語言其誕生的意義在於解決問題,驗證想法,屬於對問題求解的實踐過程,如研究數據挖掘的,主要關注的是數據的分佈、概率模型等數學算法問題,用哪種語言來驗證方案的可行性並不非常重要,對於語言本身的唯一的要求可能就是要好用,最好不需要有太多複雜的語法,通過簡單地學習就可以上手並能輕鬆地寫出程序,二是要執行效率可以接受,不需要最快,但也不能太慢。

而在執行效率與易用性上,腳本語言給了用戶一個很好的平衡點,而這一點,恰恰是腳本語言的最重要的意義。我們可以通過腳本方便快捷地編寫代碼,甚至在某些情況下,這此腳本代碼執行的效率跟C是相差無幾的。

春節過年,走親訪友是常事,就沒有用實驗去驗證比較一下shellPythonC性能的差異。不過我找到一個非常有意思的網站:http://shootout.alioth.debian.org/

這個站點對比了所有主流語言的執行的性能包括[時間、內存、代碼量],如下圖所示的是:在運行多個有代表性的測試用例情況下,Python的性能除以C語言的性能得到的數據圖,可以看出C[時間、內存]上的開銷要低於Python,但在[代碼量]Python要少於C

 

發佈了97 篇原創文章 · 獲贊 132 · 訪問量 120萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章