为什么俺推荐Python「1」:作为脚本语⾔的Python
脚本语⾔是它的⾸要特征。因此,在本系列帖⼦中,俺⾸先来忽悠⼀下Python作为脚本语⾔,有些啥好俺窃以为,Python的所有特征中,作为脚本语⾔
处?
★脚本语⾔好在哪?
要聊Python作为脚本语⾔的好处,⾸先得说说脚本语⾔⾃⾝有哪些优点。⼀般来说,当我们提及“脚本语⾔”,都是强调其解释执⾏的特性(虽然有些脚本语⾔也⽀持编译)。所以,后⾯陈述的这些优点,⼤都是拿编译型语⾔来进⾏对⽐。
◇更⾼层次的抽象和封装
⼤部分脚本语⾔都提供了⽐较⾼层次的抽象和封装。像很多脚本语⾔都内置了字符串处理能⼒以及正则表达式(典型代表就是Perl)。还有很多脚本语⾔都内置了⾼级的数据结构。⽐如Python在语⾔层⾯⽀持了链表(Python的术语叫List)、映射(Python的术语叫Dict)、元组(Python的术语叫Tuple)。
Python学习裙:肆捌叁伍肆陆肆壹陆
有了这些⾼层次的封装,你写起代码来,就特别滴简单、特别滴爽。⽐如,在Python中要把⼀个List翻倍,只需这么写:[1,2,3] * 2 就得到[1,2,3,1,2,3]
◇更少的代码量js脚本编程入门
得益于⾼层次的封装,在完成相同功能的前提下,脚本语⾔的代码量会⽐编译型语⾔少很多。
⽐如说,要打印出某个⽂本⽂件的内容,如果⽤Java实现,正常的写法⼤概要七、⼋⾏代码(把所有代码硬挤到⼀⾏的,不予讨论);⽤Python 也就三、五⾏。
再⽐如说,抓取给定URL的web⽹页,⽤Python⾃带的标准库实现,⼤概3-5⾏代码;但如果⽤C++实现,代码量会增加许多(具体要写多少代码,取决于你⽤的http库)。
代码量少了之后,⾄少你看代码的时候(⽆论是看⾃个⼉滴还是看别⼈滴),能少敲很多次翻页键,⼤⼤延长了键盘的寿命,顺便降低了⼿指头的劳损。
◇更好的可读性
当然啦,延长键盘寿命还不是关键,关键在于——代码量少了之后,(通常情况下)会有助于提⾼可读性。⽽可读性恰恰是Python的强项之⼀。
语法层⾯强制约定了作⽤域缩进(这是俺很喜欢Python的地⽅之⼀)。如此⼀来,即便是新⼿程序猿写出的Python代码,缩⽐⽅说:Python在语法层⾯
进风格也很统⼀。反观C或C++的新⼿,写出的代码就没有这么整齐了。
◇更平缓的学习曲线
通常,脚本语⾔的语法都⽐较简单、傻⽠化。因此,⼊门也就容易很多。稍微有⼀些编程基础的⼈,就能够在短时间内上⼿。
⽐如俺⼿下的C++、Java程序员,以及某些测试⼈员,都可以在⼀周内(程序员⽤不着⼀周,⼀般就1、2天)掌握Python的语法并⽤来写⼀些辅助的⼩⼯具。⼤⼤减少了俺培训的⼝⽔。
◇⽀持交互式
很多脚本语⾔的IDE⽀持交互式写代码。也就是说,你每写完⼀⾏代码,解释器就执⾏⼀把。这样能很快发现输⼊错误,⽽且还可以⽴即看到执⾏结果。
★脚本语⾔有啥缺点?
前⾯说了那么多优点,那脚本语⾔有啥缺点捏?主要的缺点就是性能差。这是他们为上述优点所付出的沉重代价。所幸当今的计算机硬件突飞猛进,性能差的缺点已经越来越不明显了。
★Python和其它脚本语⾔的⽐较
有同学可能要问了,脚本语⾔有很多,为啥俺独独青睐Python捏?为了回答这个问题,俺拿Python和
⼀些常见的脚本语⾔作⼀些肤浅的⽐较。
鉴于后⾯的内容极易引发语⾔的⼝⽔战,俺特此声明:虽然接下来会提及某些语⾔相对于python的缺点,但俺绝⽆贬低这些语⾔的企图,也⽆意证明python⽐这些语⾔优秀!只是陈述⼀下俺当初是如何在⼏种脚本语⾔中进⾏取舍的?
除了Python之外,常见的脚本语⾔还有很多,⽐如:PHP、JavaScript(以下简称JS)、Perl、VBScript(以下简称VBS)、Ruby、Bash、Lua、Tcl(可别误以为是某家电⼚商:-)......Python是如何从这些脚本语⾔中脱颖⽽出的捏?俺挑选的时候,主要考虑了如下⼏点:
◇通⽤性(跨领域)
因为俺懒得学太多编程语⾔。所以,俺希望熟悉⼀门脚本语⾔之后,能够尽量多帮俺搞定不同领域的事⼉。从这点来看,俺就不会选择PHP(太偏重于Web服务端)、JS(太偏重于Web客户端)、诸如Bash之类的Shell脚本(太偏重于系统管理)。
⽽Python则属于通⽤的脚本语⾔,覆盖范围很⼴。⽐如Web开发、桌⾯GUI应⽤、系统管理、⽹络应⽤等许多领域,Python都可以轻易搞定。
◇⼈⽓够旺
关于“⼈⽓”的重要性,俺在“如何选择开源项⽬”中,有介绍过。⼈⽓越⾼、越流⾏,就意味着更多的资源(包括⽂档、相关软件),当你碰到问题需要解决,也有更多的⼈可以咨询。
关于编程语⾔的流⾏程度,可以⼤致参考TIOBE的排名(虽然TIOBE不能全⾯反映流⾏程度,但⾄少可作为某种参考)。
像Tcl、PowerShell、Groovy、JavaFX等都排在30名之外(截⾄到09年8⽉),感觉⽤的⼈少,俺暂时不予考虑。⽽Python最近⼏年的排名则⼀路上升(请看“这⾥”),截⽌到09年8⽉,已经⾼踞排⾏榜第6位。Perl虽然也⾝居⾼位,但是最近⼏年的排名⼀路下滑(请看“这⾥”)。俺个⼈认为,其⼈⽓不容乐观。
◇功能够强、库够丰富
另⼀个俺很看重的地⽅是功能是否够强⼤。在这点上,Python和Perl都算是⽐较强悍的。关于Python如何强悍,俺会在后续的帖⼦“作为瑞⼠军⼑的Python”中加以介绍。
反观JS、Ruby、Tcl等语⾔,则稍显不⾜(当然,也有可能俺孤陋寡闻)。
◇跨平台
由于俺平时会使⽤不同的操作系统,再加上俺负责的产品也是跨平台的。所以,俺对脚本语⾔有跨平台的要求。说到跨平台,诸如VBS、Bash之流就不予考虑了。
其实,很多脚本语⾔都⽀持跨平台。⽽Python在这⽅⾯,更为出众。不光⽀持主流的操作系统,还⽀持⼀些冷门的(⽐如古⽼的DOS),还⽀持⼿持设备(俺的智能⼿机就可以装Python运⾏环境)。
◇和其它语⾔的整合、交互
最后这⼀点,估计⼤多数同学不会太关⼼。俺因为要在公司的产品中引⼊脚本技术,所以俺还得考虑该脚本语⾔和其它语⾔的整合能⼒。整合能⼒强的脚本语⾔,可以作为复杂系统中的胶⽔,⽤来把不同模块粘合在⼀起(关于Glue Language,可以参见“这⾥”)。
在这⽅⾯,Python和Ruby的表现都不错。它们和Java的整合有Jython、JRuby;和dotNet平台的整合有IronPython、IronRuby。⾄于俺常⽤的C++,Python整合得⽐Ruby好。⽐如C++社区⼤名⿍⿍的Boost库⾥⾯,就有⼀个Boost.Python的⼦库(见“这⾥”)。关于Python如何⽤作胶⽔,俺会在后续的帖⼦“作为胶合语⾔的Python”中会详细介绍。
★总结
基于上述⼏个⽅⾯的考虑,俺最终选择了Python作为⽇常使⽤的脚本⼯具,并把它引⼊到公司的产品中,作为模块之间的胶合剂。
啰嗦完Python作为脚本语⾔的⽅⽅⾯⾯,下⼀个帖⼦,咱来聊⼀下它作为动态语⾔的那些事⼉。欢迎关注号:程序员⼤⽜,每天分享⼲货!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。