Py学习  »  Python

Python 之父谈 Python 的强制缩进及其他

MacTalk • 4 年前 • 342 次点击  


最近做卖桃者说,加上筹备 Python 核心技术进阶专栏,我又读了不少计算机领域的传奇故事和历史。最近看了一段 Python 之父 Guido van Rossum(范罗苏姆)的早期访谈,非常有意思,也解了我不少困惑,跟大家分享一下。

1956 年范罗苏姆在荷兰出生,一般情况下,如果中间名有个「van」,第一反应就可以猜猜他是不是荷兰人,比如我喜欢的球星范巴斯滕。1982年,范罗苏姆从阿姆斯特丹大学毕业,获得了数学和计算机两个硕士学位,但相比数学,他更喜欢做计算机相关的工作,用他的话来说,就是热衷于干任何和编程相关的活儿。

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

关于范罗苏姆的故事,明天会有一期专门的卖桃者说上线详细讲述,今天说说他的采访。

问:为什么你在设计 Python 语言的时候采用了强制缩进的方式来划分程序域?

如果你是个 C 或 Java 程序员,习惯了用大括号来划分程序域 —— 其实大部分语言都是这么做的 —— 看到 Python 是用缩进来搞定这件事,你马上会觉得「这太逆天了」,我当年学了 Perl,Java 之后再使用 Python,就是这种感觉。

范罗苏姆是这么说的:这种强制缩进,并不是什么新概念。当年我在 CWI 使用 ABC 语言编程的时候,人家就这么干的。我从 ABC 语言中继承了这个概念。不过 occam 这种很古老的语言也是用了这种方式,我不知道他们是谁先采用的,也许都是独创。这种思想也可能出自 Don Knuth(高德纳,著名计算机科学家,经典巨著《计算机程序设计艺术》的作者),他早在 1974 年就提出过这种做法。

范罗苏姆的想法是,如果「常识」上确立的东西,没有必要过度纠结。当然,这种常识是他的常识,至于其他人,大家应该会习惯的。并且,范罗苏姆很喜欢 ABC 的特性,他觉得这种设计彻底终结了 C 或 Java 程序员关于大括号直接放在函数名后面还是再换一行的终极争论。另外,他觉得这样的代码更具可读性。严格的格式化会形成更整洁的代码,而且会减少不同程序员的代码「布局」区别,何乐而不为呢?

于是 Python 就一直把这种代码风格延续下来,并成为了自己的鲜明特点。

问:如果想熟练使用 Python 编程,你有什么建议吗?

范罗苏姆说:实用主义。如果你过分纠缠数据封装,访问控制、抽象或规范这样的理论概念,你就不是一个真正的 Python 程序员。而且,你会浪费时间在「与语言为敌」上面。什么是与语言为敌,就是你是用 Python 的时候,还试图延续 Java 的使用习惯。你应该去享受它,使用它的特性。如果你信奉即时满足,喜欢极限编程和敏捷开发,那 Python 就是你的最爱。

问:你如何定义优秀的程序员。

范罗苏姆说:他们会显示出创造力,学习速度很快,而且很快编写出可用的代码,并且 bug 很少。优秀的程序员并不是什么都会,什么都擅长,而是各有千秋。有的擅长算法和数据结构,有的擅长系统集成、协议设计、API、多媒体等。好的程序员能够让梦想成真。

我们 Python 工程师还有一句最常用的话,英文是「Life is short, you need Python」,中文就是我常说的,人生苦短,我用 Python。

关于范罗苏姆,欢迎收听明天的卖桃者说。另外,大家期待已久的 Python 进阶专栏,今天终于上线了。之前每次推荐零基础学 Python,总有读者问,都学完了啊,核心技术和进阶实战在哪呢?搞的我挺不好意思。

今天我们联合 Facebook 资深工程师景霄老师开设了「Python核心技术与实战」专栏。景霄目前从事机器学习的相关工作,主要工作领域是人工智能的推荐排序系统与算法,曾领导多个上亿用户级产品的开发与落地,有着丰富的工程与实战经验。

进入大数据和 AI 时代,Python 实在是火的不行。PYPL(即编程语言流行指数,基于 Google 搜索频率而定)出炉了5 月编程语言排行榜Python 打败 Java,拿下 NO.1,成为最流行的编程语言。TIOBE 排行榜也显示, Python 的应用程度屡创新高,目前排名第四,并保持高速增长。由于 Python 在大数据和 AI 领域的广泛应用,说它是人工智能时代的第一编程语言,应该是众望所归。

专栏的内容不详细介绍了,之前的零基础学 Python 视频课已经超过了 1.2 万人学习,这次是进阶。从基础,到核心知识,比如 Python 协议、高级语法、正则表达式、协程、并发编程、垃圾回收机制等等,再到如何使用这些技能写出高质量的应用程序,最后一部分是实战课,作者会带领大家做一个量化交易系统,把知识穿连起来,融会贯通。

之前订阅过「零基础学 Python」的用户,我安排送了大家 10 元优惠券,是时候开始进阶了。

扫码订阅,优惠期 68 元,老 Python 用户再减 10 元 58,和大家一起进入 Python 精彩纷呈的世界吧。

点击原读原文,了解详情。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/32694
 
342 次点击