Python之我見

對一個『慣C』人來說,[Python] 實在是讓人無法去接受的程式語言,無論是效能、速度還是所吃的系統資源,都讓人不滿意。但以一個類 Script 語言來看待它,又是個極度強大又好用的東西,開發時程也比其他傳統語言短相當多,開發完成之後,也有相當大的再擴展和加速的空間。所以,若是開發出來的東西,沒有絕對強烈的『即時』和『精巧』需求,用純 Python 來寫,會相當合理。


應用需求導向

若您是熟悉 Windows 的開發者,可將 Python 視為 [Visual Basic],是一個著重於『立即應用』的存在(當然在本質上不相同,後者相對簡陋且更著重於【可視化程式設計】)。他們最相似之處就是開發模式,因為長久下來,已經有太多人為 Python 寫出無數的模組、功能,以致開發者只需要懂得引入和使用這些模組,就能達成所有能想到的功能,這點與 Visual Basic 的『控制項』開發模式沒什麼不同。

在今天,由於太多人的貢獻成果,使 Python 開發者幾乎無所不能,再者,其已經跨足了許多平台。對開發者而言,同一支程式,只要注意引入模組是否能跨平台(大多數功能多半都有解決方案),就能輕易寫出能運行於不同平台上的應用軟體,稱之跨平台的 Visual Basic 可不為過。

但如同許多前端網頁開發者隨處濫用 JavaScript + HTML,濫用 Python 的人也有不少。由於 Python 過於易用,許多人在開發上只求達成功能,忘了效率的考量(這觸動了『慣C』人最大的忌諱),過去一些比較著名的例子就是: emesene(Linux 上常見的 MSN 軟體) 和 iBus(輸入法系統架構),速度慢或吃光系統資源還不打緊,甚至是造成系統鎖死當機的狀況。


獨特的語言特性

說到 Python 語言本身,它有極為結構化的設計,又支援各種先進的開發模式,物件導向等技術當然不會少,以致使用 Python 來開發大型專案是非常可行的。若要舉個實例,大概就是 Google 的各項網路服務。

Python 擁有獨特的語言規則,像是捨棄『{};』等包裝語法,並強迫對齊等設計。這使得開發者不得不簡化和編排自己的程式,不能再寫出長又難以維護的程式碼。當然,這會讓已經習慣傳統語言規則的開發者,會有困擾和不習慣,需要一些時間適應。不過,一旦接受了 Python 的設計習慣,便可輕易的使用。


適用範圍

很明顯,Python 相當適用於網站程式上,其高階的包裝,開發時程的優勢,甚至功能性,都讓他方便實作任何 Web 服務。由於 Web 並不需要『即時反應』和『長時間待命』的需求,更不怕缺少在壓力下效能考量的不良設計。

當然,一般功能性導向的應用軟體也是適合使用 Python 來開發,除了開發時程短之外,也能很容易做出想要的各種功能,日後的維護也非常簡單。唯一要注意的是,要時時考慮 Python 的效能問題,不然設計出來的程式,會經不起長時間考驗。

雖然 Python 語言看似高階,但 Redhat Linux 作業系統從早期開始的圖形化安裝程式,就是用 Python 所撰寫,不難看出它也能勝任系統應用程式的工作。


如同 Virtual Basic(疑?) 的缺點

當然,沒有一樣東西是百分之百完美,Python 大體上和 Visual Basic 有一樣的缺點,如記憶體的消耗、執行效能不如原生的程式快速,雖然可以透過各種手段得到改進,但那已經跳脫出純 Python 開發的範疇。

如同有人嘲諷 Visual Basic 一般,Python 的使用者若沒有真正低階的開發經驗,也會寫出令人哭笑不得的程式,若遭遇效能問題,其瓶頸將很難獲得解決。


整體評估是優良的

對於需要快速開發的專案和人力不夠充裕的團隊,Python 是很好的選擇,一種語言便可從系統層寫到 Web 和雲端,非常值得花點時間學習。但最好要搭配 C 語言的相關訓練,在必要時可當成許多效能和相關問題的解決手段。

如果是程式初學者,也推薦選用 Python 踏入程式開發之路。

留言

  1. 謝謝 你分析的很好很中肯 不過我一直學不起來python 只能找到對岸的電子書 閱讀上不是很舒服
    有沒有什麼好的學習方法可以介紹?
    我沒C的訓練 只有精通VB和按鍵精靈

    回覆刪除

張貼留言

這個網誌中的熱門文章

有趣的邏輯問題:是誰在說謊

Web 技術中的 Session 是什麼?

淺談 USB 通訊架構之定義(二)

淺談 USB 通訊架構之定義(一)

Reverse SSH Tunnel 反向打洞實錄