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


可拓展性差 。ABC语言不是模块化语言 。如果想在ABC语言中增加功能,比如对图形化的支持,就必须改动很多地方 。
不能直接进行IO 。ABC语言不能直接操作文件系统 。尽管你可以通过诸如文本流的方式导入数据,但ABC无法直接读写文件 。输入输出的困难对于计算机语言来说是致命的 。你能想像一个打不开车门的跑车么?
过度革新 。ABC用自然语言的方式来表达程序的意义,比如上面程序中的HOW TO (如何) 。然而对于程序员来说,他们更习惯用function或者define来定义一个函数 。同样,程序员也习惯了用等号(=)来分配变量 。这尽管让ABC语言显得特别,但实际上增加了程序员的学习难度 (程序员大都掌握不止一种语言) 。
传播困难 。ABC编译器很大,必须被保存在磁带(tape)上 。当时Guido在访问的时候,就必须有一个大磁带来给别人安装ABC编译器 。这样,ABC语言就很难快速传播 。

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

文章插图
IBM tape drive:读写磁带
1989年,为了打发圣诞节假期,Guido开始写Python语言的编译/解释器 。Python来自Guido所挚爱的电视剧Monty Python’s Flying Circus (BBC1960-1970年代播放的室内情景幽默剧,以当时的英国生活为素材) 。他希望这个新的叫做Python的语言,能实现他的理念(一种C和shell之间,功能全面,易学易用,可拓展的语言) 。Guido作为一个语言设计爱好者,已经有过设计语言的(不很成功)的尝试 。这一次,也不过是一次纯粹的hacking行为 。
Python的诞生
1991年,第一个Python编译器(同时也是解释器)诞生 。它是用C语言实现的,并能够调用C库(.so文件) 。从一出生,Python已经具有了:类(class),函数(function),异常处理(exception),包括表(list)和词典(dictionary)在内的核心数据类型,以及模块(module)为基础的拓展系统 。
Python入门,初学者教程4——乌龟与Python 跟着Inty学Python

文章插图

最初的Python logo: 由Guido的兄弟Just von Rossum设计
Python语法很多来自C,但又受到ABC语言的强烈影响 。来自ABC语言的一些规定直到今天还富有争议,比如强制缩进 。但这些语法规定让Python容易读 。另一方面,Python聪明的选择服从一些惯例(特别是C语言的惯例) 。比如使用等号赋值,使用def来定义函数 。Guido认为,如果“常识”上确立的东西,没有必要过度纠结 。
Python从一开始就特别在意可拓展性(extensibility) 。Python可以在多个层次上拓展 。从高层上,你可以引入.py文件 。在底层,你可以引用C语言的库 。Python程序员可以快速的使用Python写.py文件作为拓展模块 。但当性能是考虑的重要因素时,Python程序员可以深入底层,写C程序,编译为.so文件引入到Python中使用 。Python就好像是使用钢构建房一样,先规定好大的框架 。而程序员可以在此框架下相当自由的拓展或更改 。
最初的Python完全由Guido本人开发 。Python得到Guido同事的欢迎 。他们迅速的反馈使用意见,并参与到Python的改进 。Guido和一些同事构成Python的核心团队 。他们将自己大部分的业余时间用于hack Python (也包括工作时间,因为他们将Python用于工作) 。随后,Python拓展到CWI之外 。Python将许多机器层面上的细节隐藏,交给编译器处理,并凸显出逻辑层面的编程思考 。Python程序员可以花更多的时间用于思考程序的逻辑,而不是具体的实现细节 (Guido有一件T恤,写着:人生苦短,我用Python) 。这一特征吸引了广大的程序员 。Python开始流行 。
我们不得不暂停我们的Python时间,转而看一看这时的计算机概况 。1990年代初,个人计算机开始进入普通家庭 。Intel发布了486处理器,windows发布window 3.0开始的一系列视窗系统 。计算机的性能大大提高 。程序员开始关注计算机的易用性 (比如图形化界面) 。