Python入门,初学者教程4——乌龟与Python 跟着Inty学Python

Python的起源
Python的作者,Guido von Rossum,确实是荷兰人 。1982年,Guido从阿姆斯特丹大学(University of Amsterdam)获得了数学和计算机硕士学位 。然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣 。用他的话说,尽管拥有数学和计算机双料资质,他总趋向于做计算机相关的工作,并热衷于做任何和编程相关的活儿 。
【Python入门,初学者教程4——乌龟与Python 跟着Inty学Python】

Python入门,初学者教程4——乌龟与Python 跟着Inty学Python

文章插图
Guido von Rossum
在那个时候,他接触并使用过诸如Pascal、C、 Fortran等语言 。这些语言的基本设计原则是让机器能更快运行 。在80年代,虽然IBM和苹果已经掀起了个人电脑浪潮,但这些个人电脑的配置很低 (在今天看来) 。比如早期的Macintosh,只有8MHz的CPU主频和128KB的RAM,一个大的数组就能占满内存 。所有的编译器的核心是做优化,以便让程序能够运行 。为了增进效率,语言也迫使程序员像计算机一样思考,以便能写出更符合机器口味的程序 。在那个时代,程序员恨不得用手榨取计算机每一寸的能力 。有人甚至认为C语言的指针是在浪费内存 。至于动态类型,内存自动管理,面向对象…… 别想了,那会让你的电脑陷入瘫痪 。
然而,这种思考方式让Guido感到苦恼 。Guido知道如何用C语言写出一个功能,但整个编写过程需要耗费大量的时间 (即使他已经准确的知道了如何实现) 。他的另一个选择是shell 。Bourne Shell作为UNIX系统的解释器(interPReter)已经长期存在 。UNIX的管理员们常常用shell去写一些简单的脚本,以进行一些系统维护的工作,比如定期备份、文件系统管理等等 。shell可以像胶水一样,将UNIX下的许多功能连接在一起 。许多C语言下上百行的程序,在shell下只用几行就可以完成 。然而,shell的本质是调用命令 。它并不是一个真正的语言 。比如说,shell没有数值型的数据类型,加法运算都很复杂 。总之,shell不能全面的调动计算机的功能 。
(关于shell,你可以参考linux架构和Linux命令行与命令)
Guido希望有一种语言,这种语言能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻松的编程 。ABC语言让Guido看到希望 。ABC是由荷兰的CWI (Centrum Wiskunde & Informatica, 数学和计算机研究所)开发的 。Guido在CWI工作,并参与到ABC语言的开发 。ABC语言以教学为目的 。与当时的大部分语言不同,ABC语言的目标是“让用户感觉更好” 。ABC语言希望让语言变得容易阅读,容易使用,容易记忆,容易学习,并以此来激发人们学习编程的兴趣 。比如下面是一段来自Wikipedia的ABC程序,这个程序用于统计文本中出现的词(Word)的总数:
HOW TO RETURN words document:
PUT {} IN collection
FOR line IN document:
FOR word IN split line:
IF word not.in collection:
INSERT word IN collection
RETURN collection

HOW TO用于定义一个函数 。一个Python程序员应该很容易理解这段程序 。ABC语言使用冒号(:)和缩进来表示程序块(C语言使用{}来表示程序块) 。行尾没有分号 。for和if结构中也没有括号() 。如果将HOW TO改为def,将PUT行改为collection = [],将INSERT行改为collection.append(word),这就几乎是一个标准的Python函数 。上面的函数读起来就像一段自然的文字 。
尽管已经具备了良好的可读性和易用性,ABC语言最终没有流行起来 。在当时,ABC语言编译器需要比较高配置的电脑才能运行 。而这些电脑的使用者通常精通计算机,他们更多考虑程序的效率,而非它的学习难度 。除了硬件上的困难外,ABC语言的设计也存在一些致命的问题: