從晚上八九點開始,一直持續到淩晨1點半,看完了Python的官方入門教程(中譯版),其中的小例子大部分也都逐一運行過了。還好,比較順利。
其實早在一年之前,就開始嘗試接觸Python,還買了一本小書(後來知道此書“抄”的不好)。大概是因為當時類C語言(C/C++/Java)的文法對我影響太深,導致我對部分Python文法極為排斥,從而在一年多的時間內再也沒有接觸Python。我當時認為Python“不爽”的理由有:
- if / for / while 之後必須有冒號(既然有了縮排排列,冒號是必須的嗎?)
- elif,很醜陋的關鍵字,為什麼不是 elseif 或 else if?省掉兩個字母是簡化了編程還是增加了複雜性?(當然我也知道還有其它幾個程式設計語言也使用類似elif的關鍵字,我只是不明白。由此聯想到Linux中的usr,很顯然是user簡化而來的,哪怕一個字母也要省,“現在看來”不是很好笑嗎?當然考慮的“當時”的情況是可以理解的。)
- try 語句中 except 和 finally 不能同時存在。我知道C++沒有finally,Object Pascal與Python類似,但Java和C#等後進語言都允許except和finally同時存在。Python作為“動態”指令碼語言,為什麼不能給使用者提供更友好的文法?
- 引入的 __init__ 等固定名稱,讓人覺得不爽。
- 對中文支援不好(這一點只是道聽途說,沒有切身體會)
- 定義類方法時,第一個參數必須是self,為什麼一定要有這個參數?象C++/Java/C#那樣更簡捷一些吧?
- 不存在“私人的”類成員,要靠使用者的“自覺”來操持資料獨立/相關性,這不是很搞笑嗎?
- Tkinter中widget.bind(event, callback),第一個參數竟然是文本,我的天,用(類似C++中的)枚舉或宏數值不是更有意義並且不易出錯嗎?(此項不屬Python核心,可以忽略之)
- 又是Tkinter模組中,竟然用文本來表示顏色(如"gray75"),徹底無言!(此項也不屬Python核心)
我對python的理解是“動態指令碼語言”,動態,指令碼,那麼自然應該對編程者更友好。Python應該把複雜的一面留給自己,把方便的一面交給使用者。象 try-catch-finalyy,self,私人類成員等,並非不能實現。如果以“保持語言簡捷性”為理由拒絕之,似乎不妥,畢竟這是以犧牲對使用者的友好性為前提的。也不要告訴我Python已經很友好了,並舉出眾所周知的“縮排排列”例子,很友好了就不能再更進一步?——暫不要說並非所有的人都認可“縮排排列”。此外,Python核心並不象Lua那樣小巧,多增大一點尺寸對自身影響應該不大。
一年前,我對Python的結論是:“Python是一種很有名氣的動態語言,但看了之後,很多地方都有不爽的感覺,所以它也‘不過如此’!”
一年之前感覺“極為不爽”之處,一年之後回頭去看,卻又不是那麼介意了——文法嘛,僅僅是文法而已。呵呵,是我進步了?還是要求降低了?還是時間化解了一切?