自由与繁荣 – IDisposable的闲话Python

 

[Draft Version: 早就想写点关于Python的东西,但是我实在是懒得动手。因为我实在不知道该写点什么 - 教程? 技巧? 还是感受心得? 我觉得都不合适:教程很多了,e文的翻译的到处都是;技巧呢,我都没有什么技巧,常常把Python当作C++来用,而且我对于语言中的一些特性(通常会让人觉得你的代码很cool)越来越抵触。“重剑无锋,大巧不工”也许最能道出我的想法,呵呵。但是我有述说的冲动,于是有了这自说自话的东西,姑且算作随笔吧]

引子

再说一次:我很懒。我不知道最终能不能写成什么,但是只要开始了就有希望。

这里借用《沉默的证人》中的一句台词鼓励一下自己 - “一旦让我开始我就不会停止”。

第一次亲密接触

最早知道Python是在《程序员》杂志上看到“恶魔吹着笛子来”写的“自由与繁荣的国度”系列文章,以及IBM developworks上“可爱的Python”系列文章。那时候全天候的英语强化课上得很是无聊,于是响应某大师的号召 - 每年学习一种新语言,于是乎每天中午抽出一个小时来找python的资料看。记得那个时候自己没有电脑,可怜兮兮地跑到学院机房去用电脑。庆幸的是python的安装包不是很大,所以我每次上机都去python.org上下载然后安装。(呵呵,后来那个机房里边很多机器上都被我装上了python 2.3)。Python真的很容易学,花了几个小时把tutorial读完就能够写点小程序了(当然不是hello world啦)。

有时候学习一种新语言的最大敌人就是已掌握的语言。(正因为如此我的英语总是不太好不太坏的样子,:))接触Python的时候我已经“精通”C++了,对JAVA也知道点皮毛。这些知识对学习Python也有帮助,并不总是“敌人”。Python给我的第一个震撼就是

什么都是对象”-

內建类型,代码段,解释器都是对象,而且类型本身也是对象(对于刚学习python的人来说这个也许有点难理解)

面向对象特性的支持也跟C++/JAVA/C#不同。比如多态不需要virtual, override之类的繁琐语法。继承的语法我还是觉得有些怪异,更喜欢C++或Ruby的形式。封装嘛,嗯,我想起赵丽蓉的小品《包装》里边的一句台词:“这不没包上吗?”。尽管Python通过丑陋的下划线来实现访问控制,我觉得它还是没有真正包上,哈哈。对于支持reflection的语言来说我都这么认为,当然reflection和封装本身并不是相互抵触的feature。

原来以为C++就是面向对象语言的全部, 当看到Python的面向对象及动态类型特性,我很是惊讶:

面向对象也可以这样的?!

 

为什么选择Python

有很多人会有疑问,为什么Python一直徘徊在主流和非主流之间呢?比它年轻的Ruby借着RoR的仙气和Web 2.0的妖风这两年大红大紫,尽管Python的开发框架如Zope, Django也有巨大的发展,Python却还是那个样子,人气好像不是特别旺。其实我也不知道答案。但是如果你问我,又没有必要学习Python呢?那么我告诉你一定有,如果你是一个编程新手,你可以不用学习C++但是你最好学会Python。而且学习Python的性价比非常高。你可以用Python做几乎所有的事情,但是学习C++是一个漫长艰苦的过程,光会C++的语法语义你还是做不了什么。这是语言和平台的话题了,扯得远了。:)

我选择Python,最开始是偶然的,纯粹是好奇,为了学习知识而学习知识。后来也用Python写点小工具自娱自乐,工作中也用Python来做API测试。尽管没有用Python做规模化的开发,但是只要可能我都会争取用Python去做事情。

回归理性思考,总结一下为什么喜欢用Python

理由1: Python是解释型语言,不需要编译环节。这个特点跟C++这样的编译型语言相比简直是太美了。相信用过C++的同胞们都被编译/链接过程折磨过。“修改代码-运行”这样的过程比“修改代码 - 编译 - 链接 - 运行”简化了太多。省时省力,而且多数时候你都不需要IDE,健康又环保,不要太好哟。

理由2: 跨平台。Python的跨平台能力不用我做广告了吧,从Windows, Linux/Unix到Mac, 这些大众化的操作系统都支持Python。移动计算领域作为发展产业发展的热点对Python的支持也很好,包括iPhone, Symbian, moblin(Google Android中不知道是否支持Python, 但是作为一个linux + java的系统,支持Python只是a piece of cake)。我在工作中第一次用到Python就是因为需要需要支持Windows, Linux两种系统 - 使用SWIG为C++ API生成了Python的wrapper,然后用wrapper来测试C++ API。

理由3: 良好的库支持和社区支持。C++让我最不爽的地方是它是一门语言。 - 这不废话吗?! 呵呵,它是一门语言,不是一个平台。 这一点你对比一下JAVA,.NET就知道了。C++难学易用,但是就算你学会了也不顶用。光有标准库你还是寸步难行,这个标准库缺少了太多东西 - 图形化界面,网络通信,数据库编程,序列化等等。boost库越来越强大也可能成为标准但是太复杂,越来越复杂。正如C++他爹和Heb Sutter说的C++现在是“expert friendly”。就算是退一步讲boost成为标准,但是按照C++标准委员会的节奏5年一小变10年一大变,等boost标准化的时候也许我已远离前线在教我的孩子写程序呢。而Python的一项优势,就是其标准库,尽管不像.net/JAVA那样巨大,但是够用。除开标准库,在社区里你能够找到所有你需要的第三方库。

理由4: 多范式编程 - 感受心灵的自由。C++社区扯着喉咙吆喝了好多年的多范式编程,大力鼓吹generics, metaprogramming,也形成了很多idioms, tricks,也误导无数编程浪子写出了鬼斧神工,人神共愤的“优雅”代码。怎么样呢?唯有叹息。哪个用户会关心你他妈的用boost::bind传递某个成员函数给boost::thread?只要你的程序正常运行没有人理会这些。在Python的世界里,多范式编程是在自然不过的事情了,感受心灵的自由吧。

=======================================================================================

    [TO BE CONTINUED]

=======================================================================================

Roadmap:

我所喜欢的Python

我不喜欢的Python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bruce Jia(上海)

熬夜码字换酒钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值