197. 人生苦短,请用python

https://lmzdx.com/?p=1980

python语言是目前来说应用最广泛的语言之一,python的作者最近也用高尚的人格征服了我。所以,我觉得我有必要做一期python的历史,表达对python作者的敬意。虽然说最近我一直做Google的电台,但是,在我心中,Google和python比起来,又算什么东西呢?所以,这一期做python。

说python的时候,经常会引用“人生苦短,请用python”,从某个方面也说明了python的优点,我上大学的那会儿,我有个编程非常好的同学曾经经常给我们宣传python,他说python就是懒人的C++,虽然我并不认同他的任何话,但是这句话我记住了,也正是因为他的介绍,我才入了python的坑,买了一本封面是小老鼠的python的书。

现在想起来,“人生苦短,请用python”真的很贴切,人生苦短,现在回想起来,时光匆匆,当年我学python的时候,大概还在和一个理发店的姑娘谈恋爱,这个姑娘老家在安徽全椒县,那时候理发的价格还比较便宜,不管什么样的发型,5块钱就可以了,晚饭以后,学生么,也没有的加班,更没有感觉加班是一种福气,就和她在热河路上走来走去的谈恋爱。可能是因为年轻的时候我去过热河路谈恋爱,所以我现在的生活一点也不幸福。从钢管舞一直到出租车司机,落魄的生活在这个世界上。

人生苦短,请用python。

python的作者名叫 Guido van Rossum (吉多•范•罗苏),他是荷兰人。他于1956年出生在荷兰首都,现在已经63岁了。他有一个弟弟,也是个程序员,没有他出名,他弟弟还是个字体设计师,咱们看到的python powered这个logo,就是他弟弟设计的。我觉得字体设计的还行吧。Gudio他上大学之前的情况不是很了解,他毕业以后的情况相对比较清晰一些。他在1982年毕业于Amsterdam大学数学系硕士,然后去了一家叫CWI的科研机构,这个类似于荷兰科学院这样的一个机构的分支,这个科研机构在世界上比较有影响力,是欧洲最早研究计算机的机构之一,参与了不少编程语言的研制,只是目前来看python可能是最出名的之一,其它很重要但是没python出名的有Algol语言,学计算机都应该知道的迪杰斯特拉也出生在荷兰,他也曾经是这个科研机构的人之一。

吉多•范•罗苏同学在这个科研机构里最初并不是开发编程语言的,他最初是搞UNIX操作系统的,他早期给BSD UNIX写了globbing patterns通配符,就是?代表一个任意字符,*代表任意多字符,现在这个程序已经没人用了,因为所以的shell都支持这个功能,而且支持更多的功能。现在虽然他写的这个软件已经不用了,但是名字还是叫globbing(通配符匹配),比如我喜欢用的zsh这方面就非常的强大。

其实吉多•范•罗苏说过他是闲着无聊,就设计了个python语言。这么说也不是没道理,但是大家有没有想过,为什么咱们无聊的时候,就只能刷个短视频,聊个骚,人家就能设计个世界排名前五的编程语言呢?我曾经深入的思考过这个问题,起初我觉得是这样,主要原因可能是当时没有短视频,这些人可不就只能整点编程语言,操作系统么?后来我才觉得,不对,主要的原因吉多•范•罗苏并没有说,他在CWI的时候,除了给操作系统写软件,他还参与了 ABC programming language 这个语言的项目。这个项目是为了做一个可以取代BASIC,PASCAL和AWK这样的编程语言,当然了,我们知道没有成功,如果成功了,现在我们就在用ABC Programming Language了,吉多•范•罗苏当时就参与了这个项目。

如果大家了解UNIX的历史,我在电台里讲过了,是不是觉得这是个很熟悉的桥段?一个年轻人参与了一个雄心勃勃的项目,结果这个项目成了无底洞,最后这个年轻人退出了,自己在家里折腾了一下,一个是出了UNIX操作系统,一个是出了Python编程语言。像UNIX操作系统借鉴了大量的Multics系统一样,Python语言也借鉴了大量的ABC语言。

Python的名字并不是取自蟒蛇,而是取自BBC的一个剧,名字叫Monty Python’s Flying Circus,翻译成中文可以叫《蒙提·派森的飞行马戏团》,除了Python这个编程语言以外,垃圾邮件spam这个单词也是这部剧里的。我稍微的介绍一下这个剧吧,这个剧总共有4季,总共40多集。如果你是一个正经人,看这个剧可能看不下去,这个剧叫荒诞剧,6个家伙是主演,这部剧都是这六个人自编、自导、自演的,主题是胡言乱语外加恬不知耻,当然了,这是站在正人君子这边看的。这部剧恶意取笑的对象可以说是包含世间万物,不管你是多么有名的历史人物,还是每个人都认同的道德伦理,还有什么政治立场,宗教的教义….从女王到走卒,一视同仁的都是取笑的对象。当然了,里面大量的内容都是一些白痴一样胡闹,可以说是没有任何的正能量。看了以后,你绝对不会充满热情的热爱生活,也不会对一些口号感到振奋,我看了以后,对那些大人物的口号感到非常的道貌岸然。

这部剧虽然过去了几十年了,看起来已经有点落后了,但是,如果仔细想想的话,这部剧中演的故事,永远都不会到来。即使在欧美这样的国家,政治也越来越正确,更不要说其它的一些国家了,敢说出剧中的话,能当场被打死吧。就算我做这个电台,我在节目中说一些我认为不太过分的评价中国公司的话,都能被那些粉丝喷到很无奈,更不要说其它的了。所以对这部剧有一句评价非常好的评价:巨蟒的时代已经过去了?不,巨蟒的时代永远也不会到来!

在1991年的时候,python 0.9发布了,当然了,没什么人用,当时跑在一个叫Amoeba的操作系统上,这个操作系统是个分布式的操作系统,再多说一句这个操作系统,这个操作系统的作者叫Andrew S. Tanenbaum,这个Andrew也不一般人,他一生都在做操作系统,是个教授,除了这个系统,他还做了一个叫Minix的操作系统,Linus最初开发Linux的时候,就是在这个操作系统上开发的,Linus当时看操作系统书也是这个人写的,当然了,他和这个教授吵架也是用的这个操作系统。可以说Linus当年是读着人家的书,用着人家的系统,在人家的论坛是和人家教授吵架来证明Linux比Minix要好得多。再来说Python,最初python的主要开发者就是他自己。但是当时,python已经有了目前最主要的几个特征,比如说已经有了classes, lists, strings,还有到现在为止好多人用了好几年python都不太会使用的lambda, map这些东西,当然了,后者已经是functional programming了。

Python发布以后的前十年,并没有引起太多的关注,一直到2000年的时候,python 2.0发布,这时候才有越来越多的公司和个人使用这个编程语言。这时候,美国一些国家级的研究机构已经开始使用python了,如果大家是python爱好者的话就知道,python几乎是用来做科研的不二选择,如果你读博士什么的,python在这方面有其它语言无法望其项背的函数库,这些函数库都非常的好,主要的原因就是这些与科学数学相关的函数库都是美国这些顶级的研究中心做的,后来人只需要用就行了。

有一个网站叫SciPy,上面都是和数学,工程,计算机相关的函数库,能与matlab和mathmatics这样的软件集成在一起。我当年上学的时候,经常使用python来做作业,进行线性代数和傅利叶变换相关计算,结果到考试的时候直接傻了眼,差点挂了,现在也不会用笔算,只会用python来算。python 2.0有了更多的更新,加入了内存垃圾回收的功能,还支持了Unicode。诺贝尔经济学奖得主Paul Romer他写了一篇文章,如何用python和jupyter这些开源工具做科研。而且他还批判了一下Mathematica不如python这些开源的工具好,然后,他是63岁开始学的python编程。所以,我们也要有信心,还是有机会拿个诺贝尔奖,如果我得了我会用奖金付个首付,在北上广深买个房子,不够的钱再从银行贷一点,往后余生,上班是我,还贷还是我!

Python 2.0可以说是已经奠定了python在编程语言的一席之地,所以在python 2.0到python 2.7这几个版本中,python修改了自己的许可协议,python成立了自己的基金,python在搞python这个非营利性组织的时候,好像出过一些问题,但是我没搞懂啥叫非营利性基金,难道他们敢不受美国监管么?还有python的许可证,好像是(这个我不确信啊)这个python的许可证属于美国弗吉尼亚州管辖,GPL是另一个州,BSD又是一个州…因为美国不同的州都不一样,所以,python的许可可能和BSD非常类似,但是仍然不兼容。具体哪里不兼容,我不知道,别问我。

美国是一个和中国非常不同的国家,我们中国人的思维不能套用在那里。我讲个我上初中的故事,这是真事,在1995年,美国去纽约开联合国大会,反法西斯胜利50周年,各国的政要都去开会。联合国在纽约有个总部,所以大家都去了,当时克林顿是美国总统,可能开完了会,克林顿要尽一下地主之谊,请这些政要去纽约大剧院看戏,其中有个人是诺贝尔和平奖得主阿拉法特,这个人精通好几种语言。纽约的市长叫朱丽安尼,得知了这个消息,纽约的市长认为他是恐怖分子,就派警察去让他走,回联合国总部去,不要在我的地盘上看戏。这个阿拉法特装听不懂英语,不走。然后纽约市长第二次去赶他走,说再不走,第三次就进监狱了,没办法,强龙不压地头蛇,阿拉法特就去了。

这件事让美国总统觉得很没面子,就说我TMD一个美国总统,不要面子啊,白宫就和纽约市长怼起来了,但是这个市长根本不理白宫,直接和美国总统怼起来了,说在我的地盘上,老子爱哄谁就哄谁,再BB,连你也哄了!最后克林顿只能以自己的名义向阿拉法特道谦,因为他管不了纽约市长。当年我们老师给我们讲这个事情的时候,是为了说明美国这个烂国家,一个市长竟然能不听美国总统的,不但不听,还直接给骂了回去,这样的国家是没有前途的。我当时也觉得美国这不就是一个礼崩乐坏的国家么?伦理道德文化的日渐散失,从而导致美国人心不古,世风日下,一个市长竟然不听皇帝的。后来我才知道,别说是市长不听美国总统的,连村长也不听美国总统的,这些人都是选举成功的,又不是你美国总统任命的,听你个锤子?!

可能也是因为这种原因吧,虽然这些开源组织,比如GNU,Apache,Python,Ruby,BSD都有自己的一亩三分地,甚至他们之间的合作远远大于竞争,但是,他们的协议就是不一样,并不是GPL。美国这种政治制度也影响了python,python的创始人提了一些改进的建议给python,结果被python委员会没通过,直接不理他。

还有一个很重要的问题是,python 2和python 3不兼容的问题,这个不兼容其实并不能完全怪python 2,主要的原因是python开始开发的时候,Unicode标准还没开始,Unicode的标准是1991年10月份开始的,python1989年开发的,不可能基于一个未来的标准做开发,又不是穿越剧。python 红起来的时候,已经是21世纪了,大量的基于2的代码已经可以运行了,比如我前面所说的大量的科学运算库,所以,很难有人愿意移植到python 3上。

到2020年,python 2.7就不会再有官方支持了,但是,早就有人说了,如果官方不再支持python 2.7,我们来支持。这种无组织无纪律的样子,很美国!所以,python 2.7可能会在我们有生之年都一直有人在用。

刘延栋 wechat
欢迎扫一下关注我的公众号:软件那些事儿
欢迎收听我的电台,你的支持将鼓励我继续前进