Py学习  »  Python

工作中的思维应用:Guido谈Python如何使在代码中思考更容易

Python程序员 • 6 年前 • 647 次点击  


与世界上最流行的编程语言的创造者就消除大脑分歧以更好地工作进行的对话。


没有什么比计算机编程无处不在的影响更能定义21世纪了。我们所做的几乎所有事情,尤其是在工作中,都是通过屏幕显示大量计算的结果来实现的,这些计算我们现在看来都是理所当然的。如果您是99.7%的非程序员的人类中的一员,那么这一切是如何发生的就有点神秘了。正如科幻作家Arthur C. Clarke所引用的那样,“任何足够先进的技术都与魔法无异。”


当然,这不是魔法。然而,它既难懂又复杂,并牵扯到科技公司的数百万行代码库。当您在考虑一个您可能希望在代码中构建的真实系统时,您考虑的是不同函数之间随时间变化的复杂关系。您的代码的编写和结构化方式可能或多或少会有些复杂,但是您试图解决的问题具有固有的复杂性,是不能简化为更简单的东西的。


成为一名程序员不仅仅是一个想法,如果您不能处理用代码描述您的想法的细节,您就不会坚持很长时间。“我对那些认为系统思考最重要的观点持怀疑态度,因为为一个系统想出一个主意比采用一个想法并将其转化为工作代码要容易的多”,Python编程语言的创造者和退休BDFL(仁慈的独裁者对生命)Guido van Rossum说道。JavaScript仍然占据着web, 并且Java运行着25亿台Android手机,但是对于一般目的的编程和教育来说,Python已经成为默认的标准。


对更多的人来说,如果有谁已经使得将一个想法转化为可工作的代码变得更容易,那就是Van Rossum。在Python的30年历史中,他以一种谦逊的风度和低调的幽默完成了这件事——这种语言是以Monty Python的超现实喜剧命名的,而不是真正的缅甸巨蟒。Python编程语言以一种安静的方式,使我们的大脑在处理计算机编程的一些复杂问题时变得不那么困难了。


要了解Van Rossum是如何完成这一惊人壮举的,我们必须回到计算机历史上大型机和机器语言的时代。“大型机是一台价值数百万美元的机器,与大型机的成本相比,所有这些程序员的工资加起来简直是小巫见大巫,”他解释说,从逻辑上讲,机器时间优先于人类时间。“但当我体验了台式工作站和个人电脑之后,我意识到,在程序员的时间成本和电脑的时间成本之间,观念上的转变早该发生了,”Van Rossum并不认为他是第一个观察到这种转变的人,但他确实在Python的设计中利用了这一点。


这种将人类置于机器之上的简单思想是Python背后哲学的核心。当然,与编译语言相比,它是一种解释语言,这一事实意味着程序员可以立即得到关于他们正在编写的代码的反馈,而无需在每次修改之后花时间重新编译它。这在现在很常见,但在30年前却颇有争议,因为人们普遍认为(对计算机来说)速度越快越好。更新这个信念对程序员的生产力产生了巨大的积极影响。


“在Python中, 您输入的每一个符号 都是必要的。”—Guido van Rossum


Van Rossum说:“有很多通用编程任务在Python中是很简单的。对于那些还不是程序员但想成为程序员的人来说,Python特别容易得到。事实上,许多计算机科学学校正在从Java转向Python,因为它对初学者来说更容易掌握。这背后的原因很复杂,有许多因素,每一个因素都减少了一点点分歧。所有这些改进背后的哲学很简单:每件事都应该有一个必要的目的。额外的代码的减少使您可以更容易地关注您需要关注的东西。“在Python中,您键入的每个符号都是必需的,”Van Rossum说道。


这种简洁性使得在Python中完成一些有意义的事情变得容易,这是人们广泛采用Python的原因之一。我们向初级程序员介绍Python的典型方式也很重要。我们可以向他们展示非常小的代码片段,这些代码片段只需要了解很少的编程术语和概念就可以理解,”Van Rossum解释道,“而最小的Java程序,例如,在不熟悉的人看来,它包含了一大堆噪音字符。”


这种设计的安静和简单使我们能更容易地看到正在发生的事情。“对我来说,Python是非常可视化的,”Van Rossum说。“当我阅读Python时,我能明确地看到它是一种二维结构,而不是像语言那样的一维结构。这可能是因为Python使用缩进来进行分组,但也可能是因为我的思维只是喜欢直观地思考。”


当然,他不是唯一一个视觉化思考的人,在某种程度上我们都是这样的。但他对视觉认知的影响特别敏感。“一些格式糟糕的文本会让我发疯。它们打断了我对流程和结构的可视化解析,从这个意义上说,我确实认为在Python中,”Van Rossum承认,“当代码正确格式化时,我能更好地掌握代码。”如果代码缩进是任意的,而不是像Python中的缩进那样有一个明确的目的,那么就需要更多的信息去解析有关代码缩进是什么意思的不确定性。所以,如果您感觉体验起来要容易一些的话,那是因为您在知道发生了什么之前需要处理的信息更少。


Python的可读性不仅仅是排版上的,还是概念上的。Van Rossum认为,与其他语言相比,Python可能更接近于我们对代码中表示的结构的视觉理解,因为“Python使这种结构成为必需的”。


“当我在为我的书《程序员》做研究时,”作者Clive Thompson说,“我与很多热爱Python的开发人员进行了交谈。几乎所有人都说了类似‘Python很美’这样的话。他们喜欢它的可读性——他们发现,浏览Python代码并了解它的意图要容易得多。去掉了花括号,以优雅的视觉书架进行缩进,用Python写的任何东西看起来都像现代诗歌。”他们还发现编写Python很有趣,这一点比它看起来的样子更重要。正如Thompson所写的那样:“当您遇到一个程序员时,您遇到的是一个核心日常体验是无休止的失败和令人痛苦的挫折的人。”


“您写代码主要是为了和其他程序员交流,在一定程度上,是为了把自己的意志强加给计算机。

—Guido van Rossum


将程序员时间的优先级构建到语言中对围绕它成长起来的社区产生了一种奇怪的影响。Python中有一种社会哲学,即程序员的责任是为他人编写程序。有一个隐含的建议,Van Rossum在谈论和撰写Python的方式中都表示了大力支持,那就是多花点时间让您的代码在将来更容易被别人理解。通过您的工作质量来表达您对他人和他们时间的尊重,是Van Rossum在世界上潜移默化传播的一种精神。他说:“您写代码主要是为了和其他程序员交流,在一定程度上,是为了把自己的意志强加给计算机。”


围绕Python传播的文化的普遍性已经在一定程度上实现了Van Rossum在20年前提出的一个名为CP4E(面向所有人的计算机编程)的短期项目。“我通常不是一个很有远见的思想家。人们总是问我,Python的下一步是什么,我从来不知道。但是我戴上了我最具远见的帽子,并且认为每个人学习编程都是有意义的。”个人电脑已经有20年的历史了,但它们大多只是被美化了的打字机和计算器。Van Rossum问道:“所有人都有电脑,却很少有人去学习编程,难道这不是疯了吗?”


从那以后,他一直致力于通过Python(现在是3.7版)的改进使编程变得更容易学、更容易做。他仍然认为,编程教授的通常都是有价值的技能,比如解决问题、仔细地遵循方向,以及理解方向的含义。但他也发现,“有些介绍编程的内容对孩子来说很有趣,但并不是对所有孩子来说都有趣,我不认为我想把它作为全部课程的一个必须部分。”


与此同时,由于软件的发展,特别是网络软件的发展,人们对电脑编程的需求也减少了。网络软件可以让人们凭直觉完成以前需要编程才能完成的事情。“我不太确定它还有必要再存在,”Van Rossum这样评价CP4E。“我认为电脑已经发展到这样的程度,它们只是一件有用的东西,不是每个人都需要知道内部发生了什么。”


“Python现在也是业余爱好者的语言,我的意思是以最可能的方式。”—Guido van Rossum


越来越多的人开始在许多领域使用Python。“目前关于Python的意想不到的成功的主流理论,”Van Rossum说,“是在某种程度上,它将自己确立在了数据科学和机器学习领域,一般来说就是科学数据处理。一旦您有了临界质量,那么人们去使用与他们的同事和他们的竞争对手相同的系统就要容易一些,而不用去尝试不一样的东西。”尽管Python一开始只是专业程序员的工具,但Van Rossum说,“现在Python也是业余爱好者的语言,我的意思是以最可能的方式。”


一个成功的开源软件项目,比如Python,对于初学者来说必须是容易学习的,但是对于更高级的用户想要解决的现实世界的问题也要有实际的应用。对于初学者来说,您希望保持事情的简单性,这样他们的所有精力都将花在学习编程环境的复杂性上,对于高级用户来说,您希望帮助他们管理这些竞争抽象的复杂性。使Python实现尽可能简单的部分动机是让你能够随时改变您的想法,能够学习,能够迭代。“如果您用Python编写了一个原型,并使它能够正常工作,这通常不是一件非常大的工作,”Van Rossum说,“然后您就可以扔掉您的原型,根据您所学的知识重新编写相同的东西。您仍然可以用Python来写,但是第二个版本会比第一个版本好很多。”


Python经久不衰的魅力之一就是重新开始的乐观和谦逊。“如果您在编写和调试代码上投入了更多的时间,您就不会那么迫切地想把所有的东西都丢掉,然后重新开始。”Dropbox的联合创始人兼首席执行官Drew Houston在从波士顿到纽约的5个小时的车程中,用Python编写了Dropbox的第一个原型。“Dropbox的早期原型在很大程度上被丢弃了很多次,”Van Rossum说。


关于如何设计更好的思考工具,我们能从Python中学到什么?Tim Peters,Python的主要贡献者之一,在《Python之禅》格言中提供了一些线索,他在其中引用了Van Rossum的指导原则。与我们目前的讨论特别相关的是这一对:“简洁胜于复杂。复杂胜于凌乱。”这几乎可以成为大脑优化其功能以有效利用能量的一个方法。”


对Van Rossum来说同样重要的是思考和构建工具的社会方面。他从30年的Python之旅中得到了什么?“我已经意识到您不能单独做这件事,这对我来说不是一件容易的事。我明白了您并不是总会得到您想要的结果,但也许您得到的结果会和您期待的一样好,甚至更好。”


英文原文:https://qiniumedia.freelycode.com/vcdn/1/优质文章长图2/guido-interview.pdf
译者:天天向上

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52419