Python大咖谈 - Brett Cannon(二)
Python大咖谈 - Kenneth Reitz 与 Mike Driscoll
Python大咖谈 - Brett Cannon(一)
Driscoll:您主要负责 Python 哪些部分,哪个模块是您发起的,或者说您对哪个模块施加了主要影响,是 datetime
模块吗?
Cannon:其实我对 time
模块的影响更大,比 datetime
模块更靠前!
另外,我写的第一个模块是 Python 2 里的 dummy-thread
与 dummy-threading
。那时,有人提到这个功能很酷,提议实现这个功能,还说他们想自己开发,但过了好久也没见到任何动静,我给他们发邮件问,“嗨,你们还打算开发吗?” 他们说不弄了,但我觉得这个功能确实挺有用,就把它给开发出来了,这是我第一个从 0 到 1 开发的模块。
我敢说当时 Python 的所有内容我都接触过。我处理过解析器,这个功能一般没什么人会去碰;我曾协助其他核心开发者写过一些标记警告提示;我还参与过编译器的大部分工作。
Brett Cannon:‘我敢说当时 Python 的所有内容我都接触过。’
要把具象语法树切换为字节码,首先要找到合适的具象语法树,然后才能为 Python 建立抽象语法树。这个项目是 Jeremy Hilton 发起的,但是过了好几年都没完成,龟叔最后只好下了最后通牒,他跟大家说,“下一个发行版之前,你们必须干完。” 于是,从这个项目的后半段起,我开始帮助 Jeremy 搞这个项目。
Brett Cannon:‘龟叔跟大家说,“下一个发行版之前,你们必须干完。”’
warnings
模块的情况与此类似,warnings
模块是 Neil Norbits 发起的,但他后来不干了,我只好接手剩下的工作,这就是为什么我是最了解 warnings
模块的那个人!
说起深度参与的其它 Python 项目?我觉得应该是 importlib
吧。Python 3.3 的 import
模块基本上是我一个人写的,Nick Coghlan 和 Eric Snow 帮了我不少忙,但整个 importlib
都是我写的。现在,大家提起这几个模块就会想到我,但其实当年几乎 Python 所有的内容我都接触过。14 年后的今天,再也不可能搞明白这些代码了。
Driscoll:我懂您的意思。有时候,看到一些代码,我会想“这谁写的啊,真烂”, 过一会儿才想起来原来这是两年前自己写的,当时我还挺沾沾自喜的!
Cannon:没错,看自己半年前写的代码还能觉得挺好,那就有问题了,说明你这半年没学到新东西。
Brett Cannon:‘看自己半年前写的代码还能觉得挺好,那就有问题了,说明你这半年没学到新东西。’
Driscoll:您觉得成为 Python 核心开发者最大的收获是什么?
Cannon:我觉得应该是友谊,很多核心开发者都成了我的朋友。
有一年,我们在一起聚了整整一周,几乎一天 24 小时都在一起,比那一年后来我们在网上交流的时间都长,甚至比和很多朋友在一起的时间都长,有几个人整整一周都和朋友混在一起呢?
说句心里话,就是友谊。和他们一起混日子,一起写代码,互相学习,享受我们的事业,一直这么干下去,就很好。
对于 Python 的影响力,我没有想过太多。有时候,想起这事会觉得有些不可思议,但我从不以此自居。我不希望因为 Python 变得骄傲自大,所以尽量少想。如果整天坐在那儿,思来想去就是参与了开发几百万程序员使用的编程语言,这就有点过了。话说参与 Python 开发确实挺酷,但更主要的还是能和朋友一起干点事儿。
直到现在,我还清清楚楚地记得刚加入 Python 团队,甚至刚加入邮件列表时的情景,就算现在很多人说我是 Python 开发团队的高管,我还是不适应,我从来都不这么认为。
谷歌曾经流传过一个关于龟叔的小典故,有人问龟叔,“从 1 分到 10 分,您对 Python 了解的程度是怎样的?” 他说 8 分。
Brett Cannon:‘谷歌曾经流传过一个关于龟叔的小典故,有人问龟叔,“从 1 分到 10 分,您对 Python 了解的程度是怎样的?” 他说 8 分。’
Python 现在太庞大了,没人能了解整个系统,就算能把握基本语义,但那些细枝末节的功能是怎么运作的,我们也把控不了。现在没几个人敢说自己对描述器或者元类了如指掌,我自己有时都要去查,没人了解整个系统。
Driscoll:您觉得 Python 作为一门编程语言会向哪个方向发展?Python 是否会在某些特定领域变得更加流行,还是说 Python 最终会如 C++ 一样变成编程语言的遗产。
Cannon:Python 今时今日的位置很奇妙,在极少数领域中,Python 还没有成为主流选手。的确,Python 并不适于底层操作系统与内核开发这些领域,但你能感觉到现在 Python 几乎已经遍地开花了。
就我所知,在数据科学领域,Python 现在排名第二。从增长趋势上看,至少在今后两年内,Python 还不能取代 R 语言在数据科学领域中的地位。但从长远来看,Python 肯定能赶上来[1]。另外,我对用不到系统语言的领域不甚了解,Python 在那些领域里可能没有什么竞争力。
展开了说,我觉得桌面应用也不是 Python 擅长的领域。不是说桌面应用领域没人用 Python,用的人其实也不少,但这个领域里的竞争太厉害了。把眼光放得再长远些,我们已经进入了这一领域,总有一天 Python 代码会遍及各个角落,Python 自身可能永远不会消失。
Brett Cannon:‘把眼光放得再长远些,我们已经进入了这一领域,总有一天 Python 代码会遍及各个角落,Python 自身可能永远不会消失。’
但愿 Python 永远不要成为 COBOL 那样的传说,这样大家就能喜欢我们更多一点,更久一点,不过,我真的不觉得 Python 会离开大家的视野。在我看来,时至今日,Python 代码实在是太多了,它将一直存在。
Driscoll:Python 是人工智能与机器学习大爆发中使用的主要语言。您认为是什么造就了 Python 今日的成就?
Cannon:Python 易学易用的特性让它更适合人工智能。当前从事人工智能的人不只是软件开发者,更多还是那些不以写代码为生的数据科学家。
这意味着要有一种让非程序员容易接受的编程语言,Python 恰好满足了这一需求。其实, Python 早就吸引了众多科学与计算机科学等教育领域的人,这不是什么新鲜事。
Driscoll:现在是不是该到升级 Python 3 的时候了?
Cannon:我可是为 Python 3 催生的人,对于这个问题,我不会说些无关痛痒的话,我肯定觉得大家应该立刻、马上升级到 Python 3,赶紧用上那些从 Python 3.0 一推出就加入的好东西。
Brett Cannon:‘我肯定觉得大家应该立刻、马上升级到 Python 3,赶紧用上那些从 Python 3.0 一推出就加入的好东西。’
我希望大家能认识到迁移到 Python 3 不过是早晚的事,这种切换不是突如其来的,也不应该特别痛苦。Instagram 用了九个月切换到 Python 3,在此期间他们还开发了不少新功能,这说明切换到 Python 3 是完全可行的。
Python大咖谈 - Kenneth Reitz 与 Mike Driscoll
Python大咖谈 - Brett Cannon(一)
-
2018年以后,在数据科学领域,Python 逐渐超过了 R语言,现在看来 Brett 的预言有些保守了。 ↩