分享

Python 之父 Guido van Rossum 谈如何以代码的方式思考

 北书房2014 2019-12-02

Python 之父 Guido van Rossum 谈如何以代码的方式思考

原作者:Anthony Wing Kosner 翻译/整理:4字节 基于 CC-BY-NC 协议

Dropbox 在其 Work in Progress 博客上分享了一篇两千余字的,与 Python 发明人吉多·范罗苏姆(Guido van Rossum)探讨 Python 语言的对话文章:

对21世纪的定义,无非是计算机编程无处不在的影响。我们所做的任何事,尤其在工作中,都能在一块电脑屏幕上体现,而这其中包含了大量的,我们认为理所当然的运算结果。如果你属于世界上99.7%的非程序员人口,这一切背后的原理对你来说可能是个迷,就像著名科幻作家亚瑟·C·克拉克说的一样,任何高度先进的技术看上去和魔法都没区别

当然看上去像魔法但它并不是魔法,不过这其中的原理很复杂。科技企业的代码库以数百万行为计,当你在考虑用代码构建一个系统时,你会反复思考不同功能之间的复杂关系,以及代码的编写和结构会对系统造成什么影响等,但你需要解决的问题和具有其固有的逻辑复杂性,不能简单地就说来“简化”这个系统。

身为一名程序员重要的并不仅仅是电子,如果你没有使用代码来描述你的想法,你在行业内是不会生存太久的。Python 之父,也是“终身慈善独裁者”(BDFL)的 Guido van Rossum 表示:

“我对于那种系统性思考高于代码编写的论调是有疑问的,因为提出一个想法比把这个想法转化为可以运行的代码容易太多了。”

但如果说有这样一个人让将想法和可运行代码之间的转化变得更容易的话,这个人非 Guido van Rossum 莫属。虽然在现代 JavaScript 仍然称霸 Web 界,基于 Java 的安卓系统仍然在全球超过25亿台安卓手机上运行,但除此之外的领域,Python 似乎已经成为了新标准。Guido van Possum 用30年的时间达成了这一成就,Python 语言以一种安静低调的姿态为所有人降低了计算机编程的复杂性,使我们的大脑更容易用代码的方式来思考和管理问题

要理解 Van Rossum 如何取得这一成就,我们需要回到大型计算机的时代。他说大型机在当时花费数百万美元,与计算机的成本相比,程序员的薪水等开销都不算什么,这种成本的差异造成了我们在逻辑上将机器的时间优于人类的时间,“但是当我体验台式工作站和 PC 时,我意识到对程序员时间成本与计算机时间成本的观念已经过时了”。他表示自己并非第一个有这个意识的人,但他在设计 Python 的过程中融入了这种理念。

这种赋予人类高于机器优先级的简单想法是 Python 背后的哲学核心。当然它是一门解释性语言而不是一门编译语言,这意味着程序员可以立即获得有关所编写代码的反馈,而无需在每次更改后都花时间重新编译代码。在2019年这个特性非常普遍,但在30年前它却充满争议,因为传统观念认为对于计算机来说速度要越快越好。这一观念的转变对于程序员后来的生产力和效率产生了巨大的影响。

Van Rossum 表示,很多常见的编程任务在 Python 中都可以很轻松完成,对于那些尚未成为程序员但希望学习编程的人而言,Python 是非常容易上手的。的确,很多高校和计算机相关专业都正在从 Java 切换到 Python,因为它对初学者更加友好。这其中具体的原因有很多个,每一个都各自降低了它的难度,但简单来说 Python 的好处在于:一切都应该有一个必要的目标。去除了冗余的代码使开发者可以更专注于问题本身。在 Python 中,你键入的每一个符号都是必不可少的。

这种简洁使得人们很容易在 Python 中达成自己的目标。Van Rossum 解释说:

“我们向初学者引入 Python 的方式也很重要,我们可以向他们展示很小的代码片段,而这些片段仅需要很少的编程知识和编程概念的理解。而对比之下即使是一个最小的 Java 程序对于还没有被‘初始化’的程序员,也包含了一大堆内容和干扰字符与关键字。”

这种安静和简化的语言设计使你更容易看出代码背后的功能是什么。Van Rossum 说:

“对我来说 Python 是非常视觉化的语言。当我阅读 Python 代码时我能很清晰地看到一种二维结构,而不是语言中的一维结构。这或许是因为 Python 强制使用了缩进进行分组,也或许是我的大脑更喜欢视觉化的思考。”

Van Rossum 显然并不是世界上唯一一个拥有视觉化思维的人,我们所有人在某种程度上都会,不过他对视觉的认知非常敏感:

“格式差的文本使我抓狂,它们打乱了我对流程和结构的视觉解析。我想从这个角度上说,我确实是以 Python 思考的。当代码的格式正确时我能更清晰地掌握到代码的含义。”

Python 的可读性并不仅仅体现在视觉上,也体现在概念上。Van Rossum 认为 Python 比其它语言更接近我们对代码表示的结构的视觉理解。

作家 Clive Thompson 在写 CODERS 一书时与大量程序员打过交道,其中 Python 爱好者几乎全都表示他们认为 Python 代码很漂亮,甚至像现代诗一样优雅。另外一点就是,Python 写起来很有趣,而这可能比你想象的更为重要,毕竟程序员是一个每天的核心任务就是应对无数次失败与错误的人。

将程序员的时间放在优先地位这一点对于程序员社区造成了很大的影响,从中还衍生出另一种哲学,即身为程序员对自己的代码负责任。Van Rossum 一直以来都有这样的理念,认为程序员应该多花一点时间优化自己的代码,让它在阅读上更易于理解和被他人维护。

Python 所产生的讨论度,影响力和使用人数已经达到了20年前 van Rossum 所制定的目标。他自称并不是一个很有远见的思想者,所以当人们问起“Python 的下一步计划是什么”时他总是不知所措,不过当他竭力去思考时,他的愿景是让每个人都能理解编程:

“PC 问世到现在已经20年了,但大多数时间它们都只是功能更为强大的打字机或者计算器而已。你想想不觉得这件事很疯狂吗?人人都拥有电脑,但却很少有人懂编程。”

从这时候起,他就一直致力于让编程变得更容易学习。现在在 Python 进化到了3.7之时,他仍然认为编程通常教授的是一些有价值的技巧,比如解决问题,遵循指示或者是指示的含义等,但同时他也意识到编程中的一部分对于孩子来说很有趣——虽然并不是所有的孩子都会被编程所吸引,他也不希望编程成为小孩需要强制学习的内容。

另外由于软件行业的迅速发展,人们对计算机进行编程的需求也有所减少,以前需要懂得代码才能完成的工作现在一个应用就能完成。Van Rossum 认为计算机已经进化到了这种程度,他们对很多人来说都是非常有用的工具,虽然并不是人人都知道它的工作原理。

越来越多的人在不同的领域开始使用 Python。Van Rossum 说,关于 Python 最出人意料的成功,也是当下非常流行的理论就是,在前几年的某个时候,Python 已经确立了自己在数据科学和机器学习以及一般科学数据处理中的地位,一旦达到了临界质量,这些领域的从业者会意识到统一使用一个系统会比每个人都去不停尝试新系统要容易得多

那么我们从 Python 中能够学到哪些如何设计更好的思维工具的想法呢?Python 的最大贡献者之一 Tim Peters 在 Python 的哲学中提过:

“简单胜于复杂,复杂胜于繁复(Simple is better than complex. Complex is better than complicated)。”

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多