昨晚看Python的入门教程,花了五六个小时
从晚上八九点开始,一直持续到凌晨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是一种很有名气的动态语言,但看了之后,很多地方都有不爽的感觉,所以它也‘不过如此’!”
一年之前感觉“极为不爽”之处,一年之后回头去看,却又不是那么介意了——语法嘛,仅仅是语法而已。呵呵,是我进步了?还是要求降低了?还是时间化解了一切?