★脚本语言好在哪?
要聊 Python 作为脚本语言的好处,首先得说说脚本语言自身有哪些优点。一般来说,当我们提及“脚本语言”,都是强调其解释执行的特性(虽然有些脚本语言也支持编译)。所以,后面陈述的这些优点,大都是拿编译型语言来进行对比。
◇更高层次的抽象和封装
大部分脚本语言都提供了(内置了)比较高层次的抽象和封装。像很多脚本语言都内置了字符串处理能力以及正则表达式(典型代表就是 Perl)。还有很多脚本语言都内置了高级的数据结构。比如 Python 在语言层面支持了链表(Python 的术语叫 List)、映射(Python 的术语叫 Dict)、元组(Python 的术语叫 Tuple)。
有了这些高层次的封装,你写起代码来,就特别滴简单、特别滴爽。比如,在 Python 中要把一个 List 翻倍,只需这么写:
[1,2,3] * 2就得到
[1,2,3,1,2,3]
◇更少的代码量
得益于高层次的封装,在完成相同功能的前提下,脚本语言的代码量会比编译型语言少很多。
比如说,要打印出某个文本文件的内容,如果用 Java 实现,正常的写法大概要七、八行代码(把所有代码硬挤到一行的,不予讨论);用 Python 也就三、五行。
再比如说,抓取某个网址对应的 web 网页,用 Python 自带的标准库实现,大概3到5行代码;但如果用 C++ 实现,代码量会增加许多(具体要写多少代码,取决于你用了哪个 http 的库)。
代码量少了之后,至少你看代码的时候(无论是看自个儿滴还是看别人滴),能少敲很多次翻页键,大大延长了键盘的寿命,顺便降低了手指头的劳损。
◇更好的可读性
当然啦,延长键盘寿命还不是关键,关键在于——代码量少了之后,(通常情况下)会有助于提高可读性。而可读性恰恰是 Python 的强项之一。
比方说:Python 在【语法层面】强制约定了作用域缩进(这是俺很喜欢 Python 的地方之一)。如此一来,即便是新手程序猿写出的 Python 代码,缩进风格也很统一。反观 C/C++/Java 的新手,写出的代码就没有这么整齐了。
◇更平缓的学习曲线
通常,脚本语言的语法都比较简单、傻瓜化。因此,入门也就容易很多。稍微有一些编程基础的人,就能够在短时间内上手。
比如俺手下的 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名之外(截至写本文的2009年8月),感觉用的人太少了,俺暂时不予考虑。而 Python 最近几年的排名则一路上升(请看“这里”),截止到2009年8月,已经高踞排行榜第6位。Perl 虽然也身居高位,但是最近几年的排名一路下滑(请看“这里”)。俺个人认为,其人气不容乐观。
◇功能够强、库够丰富
另一个俺很看重的地方是功能是否够强大。在这点上,Python 和 Perl 都算是比较强悍的。关于 Python 如何强悍,俺会在本系列的第5篇帖子《作为瑞士军刀的 Python》中加以介绍。
反观 JS、Ruby、Tcl 等语言,则稍显不足(当然,也有可能俺孤陋寡闻)。
◇跨平台
由于俺平时会使用不同的操作系统,再加上俺负责的产品也是跨平台的。所以,俺对脚本语言有跨平台的要求。说到跨平台,诸如VBS、Bash之流就不予考虑了。
其实,很多脚本语言都支持跨平台。而 Python 在这方面,更为出众。不光支持主流的操作系统,还支持一些冷门的(比如古老的 DOS),还支持手持设备(比如智能手机和平板)。
◇和其它语言的整合、交互
最后这一点,估计大多数同学不会太关心。俺因为要在公司的产品中引入脚本技术,所以俺还得考虑该脚本语言和其它语言的整合能力。整合能力强的脚本语言,可以作为复杂系统中的胶水,用来把不同模块粘合在一起(关于 Glue Language,可以参见“这里”)。
在这方面,Python 和 Ruby 的表现都不错:
它们和 Java 的整合有Jython、JRuby;
和 dotNet 平台的整合有IronPython、IronRuby。
至于俺常用的 C++,Python 整合得比 Ruby 好。比如 C++ 社区大名鼎鼎的 Boost 库里面,就内置了一个 Boost.Python 的子库(参见“这里”)。
关于 Python 如何用作胶水,俺会在后续的帖子“作为胶合语言的 Python”中会详细介绍。
★总结
基于上述几个方面的考虑,俺最终选择了 Python 作为日常使用的脚本工具,并把它引入到公司的产品中,作为模块之间的胶合剂。
啰嗦完Python作为脚本语言的方方面面,下一个帖子,咱来聊一下它作为动态语言的那些事儿。
回到本系列的目录
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
https://program-think.blogspot.com/2009/08/why-choose-python-1-script.html
有人打算整理一下关于编程随想下落的线索吗?(从正反两个方面来举证)
好多怪事都是人为的,第一在搞邪术如祭鬼封神献祭打call,其次是搞种姓的事,
这帮东西用老外的名义来操控挑拨玩弄这个那个,这也是奇葩的,和叫东土人找阿三还是鬼子去表达册封封禅这皇帝是东土的皇帝一样奇葩, ......
ym蜀人都不愿放手的东西如屁眼套路,幼女,献祭,老单和最高神位是有原因的,很值得去研究的 ......
即使博主能活着出狱,若要看到他更新六四系列,那也是在天朝发生了民主化之后,共产党不再有能力镇压批评者之时。
就算哪天中国情报部门不经司法程序,直接把人暗杀了,我也不会觉得奇怪。
https://www.zaobao.com.sg/realtime/china/story20241226-5649612
https://www.youtube.com/watch?v=ozVq_04XMro
如果出现了自杀场景,多半是政府秘密下令处决,并伪装成了自杀。
来自Firsthack的评论
而且,二审的发改率(发回重审+改判)是一个考核政绩的指标,高层认为这个数字越低说明冤假错案越少,然后下面就越容易升官。 ......
原神UID:310221197410210025
互动热线: 13524626271 上海移动
学历: 硕士
生日: 19741021
身高: 165 ......
周欣身份证310105197106042383
户籍地址 :上海市闵行区吴中路429弄15号501室
同户人 :薛军,男,310106196903180414,1969年03月18日; ......
希望各大媒体都报道这几个名字:审判长周欣,审判员:凌莉、须梅华。
家属贝震颖推特号:Birds_b_r_32309
多谢分享“中药注射剂”等国产医疗行业的相关丑闻。
另外,关于疫情期间的乱象,俺整理了一篇:
《每周转载:白纸抗议年的“动态清零”灾难(网文14篇,多图)》
多年前不记得在哪篇博文的评论区和博主讨论叙利亚的命运,当时叙利亚的局势还未尘埃落定。可惜博主现在大牢内,看不到。
这次叙利亚的民主转型发生在俄国陷入战争的泥沼的背景下。 ......
这个是个邪术,第一个是给上面看(不知什么鬼),其次的就真的会指导目标去实际地去做这么些的犯罪邪恶,侵犯幼女的情节是经常频繁重复地出现地,和侵犯女性,还有就是生命 ......
估计到最高法院也没戏,可能会以9:0判决禁抖音。
欢迎提出不同观点。
你提到的是这二者之间的差异,俺也同意这些差异确实存在。
但是,俺要开始说但是了。从本文,咱们也可以讨论这二者之间的共性,至少包含以下方面: ......
玩邪术玩出个什么结果好歹给公开一下,拼命玩邪术还一声不吭,很危险的,要分享分享,劳资帮你们来研究研究
劳资相信这帮东西是能穿越时空的,现在是2019年的ZS,时空被改变穿越了。穿越时空的套路。这帮东西几千年都一个屌样,来几个十级地震都不会任何改变。 ......
现在的两党是争先比谁对华更强硬,已经通过的制裁法案不会松绑,已经加的关税也不会再降,否则就会被在野党骂成“通敌叛国”。
明年1月19日之前,抖音会被禁。
每天上网的好多人都在聊政治呢,难道你要把每一个聊政治的人都抓起来判刑?那也没用。因为年轻人越来越倾向于认为政治制度才是造成他们被困在他那个阶层的重要原因。 ......
这个博客对于政府的批评,大部分都是有理有据。你要是觉得哪里不对,可以反驳博主嘛。判7年是究竟有多心虚? ......
以色列做任何事,都是美国包容范围,和美国民意无关(甚至抗议都无效)。台湾今后也会差不多。
国会一旦提出新的关于台湾的法案,无论是军售,亦或是改善台湾的国际地位等等,都很容易造成近乎【全票通过】。 ......
然而,公报本身只是行政政府的声明,其效力不如法律。 ......
然而,现在的人们,对于不能证明是否为间谍的走线客,也不太宽容。估计人们会支持一律用“有间谍嫌疑”之类的理由,实行一律驱逐的政策。 ......
但是,有些两党已经形成共识的事,其实是不受太大影响的。例如:把台湾武装成以色列。
所以我估计,中共在川普第2任期的前2年之内,就会对台湾动手。
因为这次GOP在众院优势实在太小了,稍微发生一点差错,钟摆效应会让民主党夺回之。
参议院不好说。如果连参议院也丢了,那川普后两年就可能成为跛脚总统,啥事都干不了。
不服者会选择:明着顺从,其实背地里跟共产党对着干。
众议院估计是个险胜。
上次共和党在众议院也是微弱优势,导致议长难产。
这次应该不会难产,因为有川普在,他只要在台上喊几句,就可以让任何一个人当议长,其它共和党议员不会阻挠。 ......
根据NBC新闻:
https://www.nbcnews.com/politics/immigration/trump-may-deport-hundreds-thousands-migrants-biden-allowed-legally-ent-rcna179357 ......
就是先用民调测量其它选举,比如某个地方议员的选举,然后和民调进行对比,看女性候选人是否严重吃亏,是否和民调严重不符。
如果发生该现象,那得出的差额数字,就是该地隐藏的“害羞的性别歧视者”的百分比。 ......
因为“害羞的川粉”等受访者不诚实回答问题的现象,仍然使得民调失真。
贺锦丽连普选票都输了。
你民主党输得这么惨,总不能反思为啥没去迎合那些“黑命贵零元购”之类的种族主义口号吧?反思搞种族平权搞得过头了?
......
美国出了个川贼东。抗战前没做到【攘外必先安内】,这下麻烦大了。
恭喜美国又创造了世界纪录。
估计是川普险胜。
因为大法官的任命是由总统和参议院共同决定,如果总统是川普,那他就会提名非常有争议的保守派大法官。
......
......
川普险胜29%
其它情况基本可以排除。
我的意见是把第13问算成川普+1,他不是国家英雄,但很多人粉川。
然后把第12问算成贺锦丽+1,因为川黑人数太多了,这些人的票会投给贺锦丽。