正文
这给 Guido 带来很多困惑,用 C 实现个功能吧,完成度没有问题,但是需要耗费大量时间。用 Shell 吧,面对复杂问题又束手无策。Shell 是 Unix/Linux 下的脚本语言,也叫胶水语言,它可以把系统的各种功能通过管道(比如:find . -name “*.java” | xargs grep chjq)的方式连接起来实现系统运维、定时任务、文件处理、程序安装卸载等工作,但是处理复杂的数值运算或系统调用就很麻烦。这时候需求就来了,Guido 希望一门语言既能像 C 语言一样能够全面掌控计算机的资源,也能像 Shell 一样使用简单,还具备交互性编程能力,轻轻松松编写一些小的工具包。
普通人 —— 比如我 —— 有了这种需求就会对自己说,再等等,也许隔壁冯老师会做出来呢。冯老师的想法就更简朴了,我又不写代码,关我什么事。幸好 Guido 没这么想,Guido 对自己说的是,放着我来!
1989年的冬天,Guido 为了度过一个有意义的圣诞节,或者为了打发一个无聊的假期,开始编写 Python 语言的编译器和解释器,灵感来自教学语言 ABC(你不知道还有这种语言吧)。为什么叫 Python?因为 Guido 很喜欢 BBC 电视剧 —— 蒙提·派森的飞行马戏团(Monty Python's Flying Circus)。ABC 则是由 Guido 参加设计的一种教学语言。Guido 一直认为 ABC 这种语言非常优美和强大,是专门为非「专业程序员」设计的。但是 ABC 语言并没有成功,究其原因,Guido 认为是非开放造成的。Guido 决心在 Python 中避免这一错误,这一次他成功了。
1991年,第一个 Python 版本诞生,编译器是 C 语言实现的,Python 语言可以非常方便的调用 C 语言实现的库(这一点太重要了)。从一问世,Python 就是一个动态语言,面向对象编程的语言,具备类、函数、异常处理、列表(list)、词典(dict)、元组等数据类型。
Python 的语法同时受到了 C 和 ABC 语言的影响,比如采用 def 来定义函数,比如等号赋值,比如强制缩进。如果你是个 C 或 Java 程序员,习惯了用大括号来划分程序域 —— 其实大部分语言都是这么做的 —— 看到 Python 是用缩进来搞定这件事,你马上会觉得「Holy shit」,其实这种做法来自 ABC,Guido 的想法是,如果「常识」上确立的东西,没有必要过度纠结。当然,这种常识是 Guido 的常识,至于其他人,你们会习惯的。
事实也是如此, Python 吸引了大量的程序员,他们开始协同改进这门语言,Python 开始了改变世界的征程。
2000年10月16日 Python 2.0 发布,这次增加了实现完整的垃圾回收,并且支持 Unicode 编码。Guido 在开发的过程中一直遵循了开放的原则,社区协作的模式从最初的邮件列表改为开源的方式,Python 吸收了大量开发者和编程语言的特点,比如,Python 中的正则表达参考了 Perl,而内置函数 lambda,map,reduce,filter 等则参考了 Lisp,无数优秀的程序员为 Python 添砖加瓦,Python 搞不定的,没关系,我们用 C 实现,于是 Python 有了大量的函数库,尤其在数据分析和科学计算领域。另外,函数在 Python 中是一等公民,所以 Python 同时也是一种函数式编程语言。
Python 稳步发展,成为了一代老牌编程语言。
Python 的应用
每个编程语言都有自己的 Hello World,Python 最为简单。如果你有台 Mac 电脑,Python 的 SDK 是默认安装的。打开终端,输入 python 进入 python shell 的交互界面,然后键入