2006年12月10日 星期日

大蟒真是不錯

最近斷斷續續用 Python 寫程式存取自己在 blogger 的文章,對 Python 有一些感想。

最早之前用 Python 是在某個營隊裡接觸到的。那時按時間來算,Python 也才剛出生沒幾年。這樣想起來電腦的東西進展實在是很快,身處其中有時光飛逝的感覺。但那時只是用它的 string/list 的 posh/pop 在體會 stack 和 queue 的概念。至於為什麼要用這種語言來實驗,我也不曉得。最大可能是當初有個愛摸新奇玩意的怪胎,覺得這東西很好用很適合拿來教程式概念,就用了。

這次認真邊翻參考文件邊寫程式,才發覺 Python 不是之前想像的那麼簡單。首先它的精髓就不是在那 list 或 interpreter 式的語言特性,而是更好用的 OO 。在直譯式語言裡使用 OO, 會比在 C++ 這種混種編譯式語言裡要來得方便,光是要debug 程式就簡單多了。再加上語法嚴格得多,用縮排表示程式層級的方式,比起 C 的超自由語法要來得好懂得多。不容易有那種程式可以執行,人卻看不懂的情況發生;或者因為自由語法使得bug藏污納垢(比方不小心在 if() 或是 for() 後面多了一個分號)。

常和 Python 拿來對比的就是 Perl 了。Perl 相對之下哲學完全不同。Python 可說是為了好讀而設計,寫出來的程式會很嚴謹很清楚。Perl 卻是為了好寫而設計,同樣的功能可以寫出很多種完全不同的語法,再加上一堆很難看懂的operators keyword, 要寫得亂七八糟看不懂也很容易。Perl 因此在快速開發,尤其是文字處理方面頗有口碑。但我就是不喜歡這樣。如果程式寫後即丟,Perl 是很好的選擇,但大多數情況不是這樣,程式會需要維護、修改,還會交接給別人。這種情形下寫出看不懂的程式,無疑是找自己和別人麻煩。

但在簡單的作業上,語言特性並不是最重要,重點在於是不是有夠豐富的標準函式庫,讓初學者很快上手,不用花時間作些苦工。在這一點上Python 發展得夠久了,所以算是很充足。如果是當初摸到 Python 時就一頭栽下去,應該會很累很有收穫吧。所以這一次寫 Blogger 程式,也是幾天就可以弄出一個能動的雛形。相信 Perl 在這一點也是毫不遜色,才能擁有廣大的使用者基礎。

沒有留言:

張貼留言