看Python应乎潮流的72变

软件业的特色,就是层出不穷的新东东涌现。Windows早就革了DOS的命,浏览器差很少革了桌面软件的命,云计算准备再革全部软件的命,最后还追上个乔布斯说一切听他的。 动荡的软件界,让人眼花缭乱。这一切的后面,是失落的编程族:好容易才精通的东西,随之变得一钱不值。曾经的人才,如同数码产品般的迅速贬值。乃至好多人怀疑,编程是吃青春饭的行当。  php

在我前10年的编程经历里,重复着一样的杯具。Turbo C学完了,用Borland CVisual C++太麻烦,开始用PowerBuilder快速开发,接上去DelphiC++BuilderJBuilder,十八般武艺都学完了,结果又蹦出个新时髦。哪天有个终结?在软件的浪潮里,程序员太眇小了。咱们惧怕本身,会同过气的语言同样昙花一现,成为过眼烟云。 不是我见异思迁,而是潮流不可阻挡。但直至Python出现,故事开始转折。  java

起源于上世纪80年代末的Python语言(http://python.org),是一种开放源代码的解释型高级动态类型语言,语法简练、类库丰富,以开发效率高著称。 20多年的发展时间,Python是愈久弥香,经历住了时间的考验。PythonGoolge的三大语言之一;全球最大的视频网站YouTube,以及国内的豆瓣网也是采用Python开发;最新最热的行当中,python是每每web game的首选开发语言之一,谷歌和国内的易度云计算开发平台也都选择了Python语言。  python

这就是神奇的Python,在交错的语言大战中,Python却成为一颗长青树,不断焕发新的光彩。 Python也成为我最近8年的编程生涯的主体,或许这将是我做为程序员的归属,一直走下去。让咱们一块儿分享下这不同的Python  程序员

简单是硬道理  web

php被不少严肃的开发人员诟病,太简单、太脏了。然而php却被企业所喜欢,连yahoofacebook都选择了php php不断在发展,生命力异常旺盛。  算法

为何?由于简单。  数据库

程序语言,从机器语言到汇编,到高级语言,不就是简单在驱动吗?程序员也是人,须要更容易使用的语言。时髦点的话,就是语言也要多为咱程序员服务了,人机接口、用户体验要好。 由于简单,因此开发效率高;由于简单,因此容易阅读和维护;由于简单,因此不怕没人接手;由于简单,重构下也无妨;由于简单,项目经理就没必要写伪代码了,直接Coding出框架代码吧编程

简单带来的优点,是成指数级别增加。简单省了钱,加快的进度,减小的项目风险,首先老板会喜欢。简单是硬道理。.net一样是靠简单占领了不小的市场份额。  json

python语言最先设计指导思想之一,就是想提升代码的可读性。Python语言采用缩进来标识代码块,而Java采用的是配对的大括号来标识。不只仅是排版更漂亮,Python的数据结构很是简单和统一,Python自带很是庞大的类库,不少东西拿来便可。这样,相同的逻辑,使用python可能只须要java五分之一的代码量。  ubuntu

不少软件爱拿本身"数百万行代码"出来讲事,代表本身很强大。而在Python的世界里,人们在炫耀相同的功能后,喜欢说我只有几千行代码(好比Python上的对象数据库系统ZODB就只有不到5千行代码)。背后的意思是,放心用吧,有问题你也很容易维护这个系统;或者若是有时间,你本身也能够接管这个代码。 

Pythonic之美 

php靠一个"简单"占领了市场,php的哲学是quick and dirtyPython一样简单,但Python的哲学是PythonicPythonic是什么?Pythonicquick and not dirty,也就是quick and beautiful. 

这个Pythonic之美,表明了程序员的素养和品味。什么是好的代码?什么是漂亮的代码?有一本书,叫作《unix编程艺术》,实际上一本对编程审美进行洗脑的经典书籍。而Python语言的设计理念,正符合了这种编程审美。所以,Python深受高端开发人员的喜欢,Python和他们有相同的文化。这如同,不少人将拥有Mac机做为本身审美品味的象征同样。 

让咱们再一次领略下Pythonic的禅意,它做为一个彩蛋隐藏在pythonthis模块:: 

>>> import this 

下面是我基于赖勇浩先生的首译,稍做更改后的翻译:: 

(让咱们来讲说该如何写代码:) 

优美胜于丑陋, 

清晰明了胜于晦涩, 

简洁胜于复杂, 

而复杂又胜于杂乱。 

扁平胜于多层嵌套, 

适当空行、错落有致胜于拥挤不堪, 

可读性很重要。 

虽然实用主义每每和上述规则矛盾, 

但全部特例都不足以打破他们。 

毫不要忽略异常(不写 except:pass)

除非你进行精准地捕获。 

当你遇到含糊不清,不要尝试猜想可能, 

必定有一种,并且绝对是惟一的一种明显的处理方法。 

虽然你可能一开始很难找到这条路,除非你是 Python 之父。 

如今就动手好过永远不作, 

虽然不作一般好于蛮干。 

实现方法若是难以表述,那这思路就确定不对;

反之若是容易表述,那多是个好想法。 

命名空间是一个值得叫好的想法,咱们应当多加利用。 

Python宝库 

Python号称自带电池(Battery Included),也就是有强大的类库。 

Python内建的类库就已经很是全面了。从web抓取,到xml解析,到嵌入式数据库,到压缩包的处理,到邮件协议,到json解析,并且不断在增加。 

若是你还以为不够,可到http://pypi.python.org上去找,这里有1万多种第三方的类库。从图片处理、到加密算法,到excel文件解析生成,到pdf文件转换,可谓应有尽有,无所不能。探访这里的乐趣,就如同海边拾贝,如同山间采菌,那种惊喜,那种"大国大民"的优越感,让你在心底涌现出投身Python的幸福,进而归属感倍增。 

更重要的是,全部的这些宝贝,所有开源,并且大都是类 BSD协议的开源,您直接用于商业。有了这些,我会常常为本身选择了Python而庆幸,这使得咱们像易度这样庞大的应用快速构建起来。 

Python自带强大的包管理机制,简简单单一个easy_install命令,您就能够在线安装升级、卸载这些包。这相似debian/ubuntuapt包管理机制通常方便。 

全能选手

多是由于Python语言练就了动态语言的以柔克刚、借力打力的太极推手功夫,加上Python简单致使的生产力指数级增加效应,Python应该是应用最全面的一种语言了。 从脚本、到web开发、到嵌入使用、到客户端、到云计算,python都干得不错。你只须要学会Python这一门语言,老板给你什么任务你几乎都能完成。让咱们随着时间的年轮滚进,看看Python应乎潮流的72变。 

操做系统脚本 

几乎全部的Linux发行版本和Mac都自带了Python解释环境,还有NokiaS60手机平台,可直接运行python脚本。简洁的Python语法,即使是不大懂开发的系统管理员或者企业IT人员,也能够快速掌握。事实上UbuntuRed Hat的安装程序,以及 Gentoo的包管理系统也是用python开发的。 

就我所知,Google的那些爬虫,就大都采用python编写完成。料想他们调整一次调整一次排名算法不会太麻烦吧。 

最佳伴侣 

不少软件每每选择会选择将整个Python接上去内嵌到软件中,做为一个操控软件的脚本语言。 

最典型的是各类3D动画软件,大都使用Python来作特效。好比MayaBlender等;一些2D的图像处理软件,好比GIMP等也可Python来更灵活的处理图片。 

其余的,OpenOffice能够内嵌Python编写宏;知名的地理信息系统ArcGIS采用Python做为脚本语言;一些游戏引擎,也一般选择Python做为游戏逻辑的编写工具;还有一些有限元分析软件和数据统计分析和挖掘的软件,也采用Python做为使用接口。 

客户端程序

如今的桌面,已经不是Windows一统天下了,LinuxMac的用户在逐渐增多。谁都想本身写的程序,可以在多个平台上运行。Python就是这为数很少的选择之一。 

国内limodou编写的UliPad文本编辑器就是用Python编写的;而最先的BT下载客户端,也是采用Python 

Web 应用 

Web应用是Python大放光彩的领域。豆瓣网站很pythonic,网站风格彻底符合python简洁、漂亮、优美的审美。而豆瓣也是采用了python上的一个叫作quixoteweb框架开发完成。更大的YouTue.com案例我就很少说了。 

Python上的web轻量级框架,其实可能有数十种之多(这可能须要归功于Python的生产效率)。最流行的是Django,其余的包括TurboGearsPylonsBFG等。随着Python上的web服务网关接口(WSGI)的逐渐普及,各个web框架直接的公共部分(WSGI中间件)也愈来愈多,有不少框架也产生相互合并的意图。分久必合,我相信统一是web框架之间竞争的最后结果。 

在今天webgame"肆虐"的风潮里,Python一样高调登场。5分钟版的开心农场就是采用Python开发的。Python是众多webgame工做室的首选游戏逻辑语言。 

企业应用 

Python上的企业应用表明,著名的包括开源的ERP软件OpenERPOpenERP从后台到客户端,到web端,所有是采用Python开发完成。 

另一个就是PlonePlone是一个世界级的开源内容管理软件,被包括美国中情局在内的全世界众多政府大机构、军方和大企业使用。Plone基于Python上的一个重量级web应用框架Zope开发。 
云时代的新生

在现在云计算风生水起的时代,Python被谷歌云开发平台Goolge App Engine奉为首选的云计算语言。而国内的易度云办公平台,从内部实现到第三方的PaaS开发,都采用了Python语言。当前在云存储方面的新星DropBox,更是从后台到客户端,全面采用了Python语言。 

若是云表明了软件业将来之一,那Python这一次真正开始走在最前面。 

说说缺点 

没有哪一个人是完美的,Python也同样。 

Python的一个大问题是,对多处理器支持很差。也就是一个Python进程,目前只能在一个处理器上运行。这对于日益普及的多处理器架构,不能说是一个缺憾。固然对于web应用,采用多进程负载均衡便能解决这一问题。目前Python也正在提供一个支持多处理器的版本,可是尚未达到稳定的版本,相应不久的将来这个问题能够获得解决。 

另一个问题是解释型语言的通病,就是性能问题。这个问题,Python社区有个pypy项目,将Python的解释型执行,转换为编译执行,大大提高效率。只是这个pypy尚未到正式版本。谷歌内部也启动了一个项目,号称目标是将Python的执行效率提高5倍,让咱们拭目以待。 

尾声 

咱们是职业程序手,咱们须要经久耐用、多快好省、功力强大的语言。我选择了Python,你呢? 

 

原文连接:http://www.douban.com/group/topic/13347288/