从仁慈的独裁者到微软打工人,Python之父和Python将走向何方?
文章目录
1. 龟叔的传说
2. 龟叔为什么辞职?
3. 龟叔真的离开Python了吗?
4. 龟叔入职微软后的主要工作是什么?
5. Pyhton未来将走向何方?
6. Py3.9之后的下一个版本是什么?
7. 未来Py4会兼容Py3吗?
8. Py4会有哪些新功能?
但凡名人,一言一行一举一动都会引发热议和追捧,名气越大,影响就越大。比如Python之父,被业内人士尊称为龟叔的吉多·范罗苏姆(Guido van Rossum)老爷子,退休之后赋闲在家才刚满一年,闲得五脊六兽,前几天跑微软继续放光发热去了。这么一件简单的事情,却在业内引起了轩然大波。很多人都在猜测,龟叔这是要彻底放弃Python吗?
其实呢,这不过是一位工作了一辈子的老人一时难以适应退休生活而做出的正常调整,实在无需作过多解读。假如龟叔不是去微软而是选择去钓鱼的话,难不成就要臆测龟叔打算再写一款名为Fish的编程语言吗?不过,IT界对于龟叔行踪的过于敏感,细究之下,却也不无道理。
一方面,两年多来,龟叔和Python社区之间发生了很多故事。先是龟叔和Python社区在语言扩展上产生了龃龉,伤心之下龟叔愤然宣布放弃“仁慈的独裁者”权力;紧接着Python社区改革了决策和管理模式,从先前的BDFL(Benevolent Dictator For Life,终身仁慈独裁者)模式改成了社区管理委员会模式;现在又冒出了龟叔转投微软的新闻。这一系列事件,不能不让众多的使用者和支持者们对Python的未来发展产生忧虑。
另一方面,Python语言本身以及众多的使用者和支持者们似乎先天存在着一种深深的自卑和焦虑,对于Python未来发展的不确定性表现出异乎寻常的关注。即使在11月初,业界权威的TIOBE编程语言排行宣布20年来Python首次超越Java成第二最受欢迎的编程语言(第一位是C),也未能彻底打消他们的自卑和焦虑。尽管TIOBE官方使用了unstoppable(势不可挡)一词来形容Python的这次上位夺权,但是Python的拥趸却表现得极为冷静。
事实上,当成为业界普遍使用的编程工具之后,Python何去何从已经成了一个万众瞩目的焦点问题。就连我这样使用了十多年Python的铁杆粉丝,也对Python的未来发展抱有深深的忧虑。前些日子,我写了一篇名为《危险的转变:Python正在从简明转向臃肿,从实用转向媚俗》的博文,创下日访问量突破1万人次的记录,从一个侧面反映了Python用户对于这个问题的高度关注。
那么,龟叔和Python之间究竟发生了什么?龟叔真的会舍Python而去吗?龟叔去微软的真正目的是什么?Pyhton未来将走向何方?Py3会被Py4取代吗?Python发展的瓶颈是什么?GIL(全局解释器锁)会被取消吗?JIT会成为标准吗?莫着急,且待我冲上一杯清茶,慢慢为你一一道来。
1. 龟叔的传说
关于龟叔在一个圣诞节的假期里为了打发无聊的时间开始构思Python语言的故事,网上有详细的叙说,我就不重复了。这个故事里面,有一个细节,需要特别说明一下。龟叔于1982年在阿姆斯特丹大学获得数学和计算机科学硕士学位,然后供职于荷兰国家数学与计算机科学研究中心(CWI),并在那里完成了Python的第一个解释器。看龟叔憨憨的样子,最初我以为这个阿姆斯特丹大学顶多是一个三流大学,一查才发现,阿姆斯特丹大学成立于1632年,它是全球大学高研院联盟、Universitas 21、欧洲首都大学联盟、欧洲研究型大学联盟的重要学术成员,共诞生了六位诺贝尔奖获得者和五位荷兰首相!这下,不用怀疑龟叔的智商了,至少比我高一倍以上才合乎情理。
龟叔不仅智商高,情商也是没得说。业余时间Python玩得贼溜,还不耽误正式工作。不管是在CWI,还是后来的美国国家研究创新联合会(CNRI),以及更后来的Google和DropBox,龟叔都有着不错的口碑。能力强、脾气好,所以Python社区的核心开发者们一直心甘情愿地拥戴龟叔担任仁慈的独裁者,还是终身的。
关于龟叔的传说有很多,最有趣的莫过于下面两个。通常传说1被认为是杜撰的,而传说2据说是龟叔自爆的,应该有相当的可信度。
龟叔当年面试谷歌岗位时,提交的简历上只写了“I wrote Python”一句话,结果HR没能理解,直到第十轮面试时才反应过来:天哪,这个人不是写过Python程序,而是Python的作者!
龟叔经常收到猎头发给他的邮件,说从网上看到了他的简历,觉得他Python水平还行,想把他推荐给客户,邀请他有空去试试。龟叔每次总是很认真地回复邮件说:抱歉,我很忙,实在抽不出时间。
2. 龟叔为什么辞职?
俗话说,有人的地方就有江湖,有江湖就有是非恩怨。Python社区平静的日子持续到2018年7月,当时龟叔签署了一份编号为572的Python改进提案(即 PEP 572 ),却有持不通意见的核心开发者在社交平台上说了一些伤害龟叔的话,令龟叔心灰意冷萌生退意,随即宣布辞任社区所谓的BDFL,专心做一名Python社区的核心开发者。
这个PEP 572改进提案究竟是什么内容呢?查看资料才搞明白,这就是在Py3.8版本中正式发布的海象运算符(:=),实现表达式内的赋值操作。我在《危险的转变》一文中,吐槽了Python的十大改进,唯独对海象运算符给出了肯定。从这一点上讲,我可能比Python社区的某些核心开发者更理解龟叔所倡导的Python语言哲学。
3. 龟叔真的离开Python了吗?
怎么可能!龟叔无论在哪里,无论从事何种工作,继续优化和发展Python都将是他工作的一部分,甚至是其生命的一部分。
2018年12月17号,龟叔辞职5个月后,经过94位核心开发者投票,最终决定采用指导委员会模式作为Python社区的管理模式。简单说,指导委员会模式类似联合国安理会,同样设置了五个委员,同样具有一票否决权。2019年2月4日,Python社区投票选出了Python社区指导委员会的5名成员,龟叔在17位候选人中以得票数第一当选!
有趣的是,龟叔是在选举方案确定之后的第一时间自荐成为候选人的,这恰恰说明龟叔是不可能真地放下Python的。而龟叔的高票当选,也说明Python社区依然视龟叔为精神领袖,他将是终身的仁慈独裁者。
正所谓:渡尽劫波兄弟在,相逢一笑泯恩仇!
4. 龟叔入职微软后的主要工作是什么?
退休之后再找个工作赚点外快或打发无聊的时间,对于普通人来说是一件很正常的事情。不过,龟叔选择去微软,这事儿就稍微透着那么一点点怪异。
首先,Python就是他老人家当年为了打发无聊的假期创造出来的,现在他老人家又无聊了,会不会再整个大杀器出来呢?你看他那一头浓密的头发,不正是旺盛的精力和创造力的体现吗?
其次,微软当年视开源为毒瘤,后来却来了一个180度大转弯,积极支持开源。目前微软有超过6000位工程师投入开源项目,向Linux开源世界提供60000+免费专利授权,9700多个开源组件被采用,发布开源项目超过3000个。莫不是微软要借龟叔之力搞个新的开源项目?
从目前公开的信息看,微软对于龟叔入职没有详细的回应,只是说这是“履行微软为Python社区做贡献的承诺”,而龟叔说得更加含糊,只是给出了一个大致方向,那就是要继续开发优化Python,让它变得更加好用,并且不仅仅是在Windows上。
虽然双方都语焉不详,但有一点是可以肯定的,那就是老爷子在微软的工作,仍然和Python相关。我的同事对于此事有一个大胆的猜测:难道微软打算继TypeScript之后再推TypePython?对于这个观点,我持保留态度。毕竟Python比JavaScript的体系要健全得多、完美得多,没有给TypePython留下多少发挥的空间。
5. Pyhton未来将走向何方?
Python在各种领域——尤其是数据科学和机器学习领域,表现得都非常出色。尽管面临一些后起之秀的挑战,但它们在很长一段时期内都难以撼动Python的绝对主导地位。Python需要面对的,是自身存在的一些问题。我猜测Pyhton未来可能会在以下几个方面获取进展。
突破全局解释器锁(GIL)的限制。这是Python社区长久以来的目标,已经有人为此付出了几年的努力,也有很多项目尝试移 GIL,但都被龟叔否决了。全局解释器锁不是一个完美的解决方案,但可能是目前最好的方案。
使用即时编译器(JIT)取代目前的解释器。JIT会给Python带来比肩编译语言的速度,Pypy一直在从事这方面的尝试。龟叔也认为,考虑把GIL移除之前,不如考虑一下如何给Python加上JIT。
6. Py3.9之后的下一个版本是什么?
Py3.9之后,很多人都认为Py4已经呼之欲出了。但是,他们似乎忘记了程序员并不怎么尊重十进制,程序员们可不认为3.9之后是4.0,3.a才是理所当然(十六进制9之后是a)。
没错!今年9月份,龟叔已经在其推特明确表示,Py3.9之后的下一个版本是Py3.10而非此前传说的Py4.0,同时他还指出Python3.10实际上已经存在于GitHub中了。
7. 未来Py4会兼容Py3吗?
有句老话说,搬家穷三年。经历过从Py2升级Py3之后,深感其难度和破坏力堪比搬一次家。时至今日,我们仍然有很多项目,尤其是运行在AIX平台上的业务系统,因为升级难度大、风险高,不得不继续运行在Py2环境下。
那么,未来Py4会兼容Py3吗?幸好龟叔已经对此做出了明确的回答:如果存在Python4的话,那么应该是类似于Python1向Python2的转变,而不像是Python2和Python3的转变。
我们知道,从Py1到Py2的升级是支持后向兼容的,而从Py2到Py3则是革命性的,二者完全不兼容,导致升级成本大到无法接受的程度。既然龟叔说,从Py3到Py4是类似从Py1到Py2的升级,那就一定是后向兼容的。不过,龟叔的发言有一个前提,那就是“如果存在Python4的话”,这似乎暗示龟叔对于Py4的发布信心不足或者漫不经心。
8. Py4会有哪些新功能?
去年7月,Py3.8发布之前,Python核心开发者查尔斯·雷佛(Charles Leifer)在邮件列表中总结了Py4.0预计推出的新功能,以及确定不能加入到Py4.0的功能。梳理一下雷佛的说法,大致归纳如下:
全局解释锁(GIL)仍然被继续使用,可能的改进是“在一个线程里处理多个解释器数据结构更容易”。
每行字符数从79个提升到 89.5 个,以便IDE 用户可以充分利用超宽4K显示器的优势。
Type-hinting(类型提示)扩展将提供一些更实用的功能。新推出的简化版类型提示将被称为 Type Whispering(类型低语)。
支持在单一关键词前使用async关键词,并且鼓励使用async do so这种方式。
在Py3.7版的namedtuple与dataclasses基础上,Py4.0将增加几个千行Decorator-Hack,用以帮助用户简单构建类型。
增加一种新的字符串类型,z-strings, 这是一种 C 语言风格的空终止字节字符串。只要在字符串加上前缀 z,如 z’my string’,Python 就会自动将它转换成空终止字符串(NULL-terminated)。
会有两个int类型,其中int是32位带符号的整数,long是64位带符号的整数。
计划推出Py3升级Py4的工具,可以自动将代码转换为上述新特性。
说实话,读完雷佛的这些说法,除了失望,我还有一些担心。这些更新,没有一样配得上主版本号的升级,有些功能在我看来则是在继续推动“危险的转变”。比如在namedtuple与dataclasses的基础上继续扩展,其目的是“帮助用户简单构建类型”,但实际效果可能是南辕北辙。我用过dataclasses,感觉完全是Java的思路,和Python的理念格格不入。
好在雷佛之后,并没有其他重量级人物再次谈到这个问题。时隔一年之后,龟叔直言Py3.9之后将会是Py3.10,这似乎表明Python将重回稳健之路。我相信,在Py4真正到来的时刻,必定会伴随着重大的升级,并且极有可能和GIL或者JIT相关。让我们静静地等待吧。