首页 > 科技 > Python之父范罗苏姆:这语言也忒难用了!放着我来,让我改

Python之父范罗苏姆:这语言也忒难用了!放着我来,让我改

来源|极客时间《卖桃者说》

作者|池建强

编辑|成敏

你好,这里是卖桃者说,今天我想和你聊的是 Python 之父和他的编程理念。

每个编程语言的作者都是一个技术传奇,回顾他们创造语言的过程,可以从中看到他们的编程思想和设计理念,这对技术人来说是一件非常有价值的事。

从 2017 年开始爆发后,Python 这门语言的热度就一直居高不下,去年开始还撼动了三大巨头之一 C++ 的位置,一度取而代之挤进了 TIOBE 编程语言排行榜的前三名。虽然 C++ 在今年 4 月份又夺回了第三名的宝座,但这不影响 Python 的热度和受欢迎程度,由于 Python 在大数据和 AI 领域的广泛应用,说它是人工智能时代的第一编程语言,应该是众望所归。

今天咱们就来聊聊 Python 之父 Guido van Rossum 的故事,为了方便,下面我会都称呼他为范罗苏姆。跟大部分语言之父一样,范罗苏姆之所以创造 Python 这门语言,也是因为当时的其他语言没法满足他的需求。

我们先把时间线拉回到 1956 年,这一年,范罗苏姆在荷兰出生,一般情况下,如果中间名是“van”,第一反应就可以猜猜他是不是荷兰人。1982 年,范罗苏姆从阿姆斯特丹大学毕业,获得了数学和计算机两个硕士学位,但相比数学,他更喜欢做计算机相关的工作,用他的话来说,就是热衷于干任何和编程相关的活儿。基本上,所有的编程语言之父,或者说所有的知名程序员,都会有这样一种对编程的狂热情节。

大学毕业后,范罗苏姆加入 CWI,这是一所主要做数学与计算机方面学术研究的机构。这段工作经历对他非常重要,他的编程理念,包括对 Python 的设计思想都是在这里初步形成的。

在 Python 之前,CWI 最为人所知的是在这里诞生了 Algol 68 编程语言,Algol 68 也是范罗苏姆最初接触的语言之一,对他也有很大的影响。当然啦,现在 CWI 以 Python 的诞生地而闻名。

刚进 CWI 的时候,范罗苏姆跟着一个团队做 ABC 语言的开发,期望可以取代 Basic,也是在这个团队中,他第一次获得了编程语言设计与实践的实际经验。但这个项目大概持续了有 4、5 年后失败了,范罗苏姆分析失败的主要原因是,过于追求完美和不够开放。他在之后开发 Python 的时候努力避免了这些问题。所以说,失败不重要,能不能从失败中汲取经验和教训才是关键。

ABC 项目停掉后,范罗苏姆就转到了 CWI 的 Amoeba 团队,做基于微内核的分布式系统,正是这个项目让他有了写一个新语言的想法。

那个时代,流行的语言是汇编、C、Fortran 等,这些语言要求编程者对计算机的运行机制有精确的了解,以充分利用硬件资源达成自己的目标,因为硬件资源实在是太匮乏和宝贵了,程序员们需要榨干计算机硬件的每一滴血和汗才能完成任务。

而 Amoeba 的系统管理程序就是用 C 语言写的。这给范罗苏姆带来了很多困惑,用 C 来实现功能,完成度是没有问题,但是需要耗费大量时间。用 Shell 吧,面对复杂问题又束手无策。Shell 是 Unix/Linux 下的脚本语言,也叫胶水语言,它可以把系统的各种功能通过管道的方式连接起来实现系统运维、定时任务、文件处理、程序安装卸载等工作,但是处理复杂的数值运算或系统调用就很麻烦。

自然地,范罗苏姆产生了一个想法,希望能有一门语言既能像 C 语言一样能够全面掌控计算机的资源,也能像 Shell 一样用起来简单,还具备交互性编程能力,轻轻松松编写一些小的工具包。

普通人,比如我,工作中有时也会有这样的想法,但想来想去,最大的可能还是只停留在想法层面。但范罗苏姆就不一样了,他对自己说,放着我来。

1989 年的冬天,范罗苏姆已经 33 岁了,他加入 CWI 也有 7 年了。在这一年的圣诞节,他为了度过一个有意义的圣诞节,或者为了打发一个无聊的假期,开始编写 Python 语言的编译器和解释器。

这期间大概花了 2 年的时间,到 1991 年,第一个 Python 版本诞生了。编译器是用 C 语言实现的,Python 语言可以非常方便的调用 C 语言实现的库,这一点对于 Python 的发展非常重要。

Python 从一问世,就是一个动态语言,同时也是面向对象的编程语言,具备类、函数、异常处理、列表(list)、词典(dict)、元组等数据类型。

范罗苏姆还在 ABC 语言团队的时候,他就对于什么是好的、什么是不好的编程语言设计有了很多成熟想法。因此,他在设计 Python 的时候,尽可能避免掉了那些可能导致失败的设计。

比如过于追求完美,不够开放,拒绝用户参与到语言的设计中等等。由此衍生出的 Python 设计原则就有 3 条:

  1. 不必太担心性能——必要时再来优化;
  2. 别追求完美,“足够好”就是完美;
  3. 有时可以抄近道,尤其在你之后能改正的情况下。

另外,在最开始的时候,Python 只是个人的实验性项目,没有官方背景,范罗苏姆为了尽快取得成功,某种程度上也是为了尽量争取管理层的支持,在设计的时候采取了很多节约时间的原则,比如最经典的“借鉴任何有道理的想法”。

如果你用 Python 写过程序的话,相信你会对这个原则感同身受。Python 的语法同时受到了 C 和 ABC 语言的影响,比如采用 def 来定义函数,比如等号赋值,比如强制缩进等等。如果你是个 C 或 Java 程序员,习惯了用大括号来划分程序域 —— 其实大部分语言都是这么做的 —— 看到 Python 是用缩进来搞定这件事,你马上会觉得“这个太怪异了”,其实这种做法来自 ABC。范罗苏姆的想法是,如果“常识”上确立的东西,没有必要过度纠结。当然,这种常识是他的常识,至于其他人,你们会习惯的。

Python 中的正则表达参考了 Perl,而内置函数 lambda,map,reduce,filter 等参考了 Lisp,无数优秀的程序员为 Python 添砖加瓦,Python 搞不定的,没关系,我们用 C 实现,于是 Python 有了大量的函数库,尤其在数据分析和科学计算领域。另外,函数在 Python 中是一等公民,所以 Python 同时也是一种函数式编程语言。

当然,并不是所有的事情都能节约时间,在开发过程中,哪些地方能省时省力,哪些必须花费大量时间和精力,范罗苏姆分得清清楚楚,比如这 3 个设计原则:

  1. Python 不能被某个平台绑定,有些功能在一些平台上没法用可以接受,但核心功能必须跨平台。
  2. 支持并鼓励用户写出跨平台的代码,但也不拒绝某个平台的特有能力或资源,这一点与 Java 形成鲜明对比。
  3. 一个大型复杂系统,应该在不同层级都支持扩展,从而不论是老手还是新手,都能尽可能地发挥自主性。

某种意义上说,范罗苏姆在设计 Python 时所采用的设计哲学,或许是其最终取得成功的主要原因之一。它并不在一开始就追求完美,但足以满足大家的需求,同时一直遵循开放开源的原则,吸引了大量优秀的程序员。他们开始协同改进这门语言,很多涉及 Python 核心部分的重大改变或重构都是由他们提出并落实的。

对此,范罗苏姆也曾说过,Python 是在互联网上发展的语言,完全开源,由一群志愿者组成的专业的社区开发。他们充满热情,也拥有绝对的原创权。

就这样,Python 稳步发展,成为了一代老牌编程语言,并且厚积薄发,在人工智能兴起后,后来居上,成为新一代的热门语言。

人生苦短,你用 Python 了吗?

对了,昨天极客时间刚好上线了一个新的 Python 专栏,名字叫《Python 核心技术与实战》,作者是 Facebook 的资深工程师景霄,感兴趣的小伙伴可以去看看。好,关于 Python 之父范罗苏姆的故事我们就聊到这里,卖桃者说,明天见。

点击链接,阅读更多文章!

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/216299.html