Python 语言发展历史

这里写图片描述

Python 是一门简洁而又强大的编程语言。相信即使是刚接触编程的同学也一定听说过「人生苦短,我用 Python(Life is short. You need Python.)」这句话。目前人工智能越来越火,Python 凭借它扩展性强、第三方库丰富和免费开源等特点,在机器学习、数据挖掘、人工智能等领域有着很大优势,前景非常值得期待。(更多关于 Python 未来的讨论:可以参考:未来十年Python的前景会怎样? - 知乎

这里写图片描述
Python 创始人穿着「人生苦短,我用 Python」的T恤

本文将简单介绍 Python 的发展历史。对学习一门编程语言来说,了解它的历史,可以帮助我们理解它的功能来源、设计理念,一定会对我们学习和使用它大有裨益。


Python 的起源

你也许听过 Python 诞生的故事:1989年的圣诞节,一个名叫 Guido von Rossum 的荷兰程序员为了打发无聊的圣诞节假期开始写 Python 语言的编译/解释器。
我最初听到这个故事,脑海里浮现出了这样的画面:一个仿佛上帝的天才程序员,洞悉了计算机世界的所有秘密,一切任务对他来说都太过简单以至于无法提起兴趣,于是便随手写了发明了一门语言,而这门语言在后世产生如此大的影响力……实在是令人敬畏。但毕竟计算机领域中这样的传奇故事太多了。
这里写图片描述
Guido von Rossum

然而事实并非这么简单。在Python 诞生之前还有一段故事要讲。Guido von Rossum 的确是一个天才和神级程序员,然而他选择创造 Python 是有原因的。80年代的时候,个人电脑浪潮已经被掀起,然而其配置与今天相比还处于相当低的水平。于是所有的编译起的核心是做优化,以便使程序在极小的内存条件下仍能运行。这也使得那时的程序员在编程时像计算机一样思考,恨不得榨干计算机每一寸的能力,连指针都被认为是在浪费内存,至于动态类型、面向对象什么的,就只会让电脑陷入瘫痪。
Guido 对此感到很不满。即使是像他这样熟练掌握C语言的人,在用C写功能时也不得不耗费大量的时间。同时他还有另一个选择,就是 shell。Bourne Shell作为UNIX系统的解释器已经长期存在,它可以像胶水一样将 UNIX 下的许多功能连接在一起。许多C语言下上百行的程序,在shell下只用几行就可以完成。然而,shell的本质是调用命令。它并不是一个真正的语言,不能全面的调动计算机的性能。
所以 Guido 希望有一种语言可以兼具 C 和 shell 的优点。既能全面调用计算机的功能接口,又能轻松的编程。事实上,这时的 Guido 正在参与荷兰的 CWI(数学和计算机研究所)的 ABC 语言的开发。这种语言与当时大部分语言不同,它以教学为目的,希望让语言变得易读、易用、易学。然而,ABC 存在着一些致命的问题,使得它最终没有流行起来:

  • 可扩展性差。ABC 不会死模块化的语言,想在 ABC 中增加功能就必须改动很多地方
  • 不能直接进行 IO。尽管可以通过诸如文本流的方式导入数据,但 ABC 无法直接读写文件。
  • 过度革新。ABC 语言太贴近自然语言,虽然很特别、对新手很易学,但让大多数还掌握其他语言的程序员来说非常不适应,实际增加了学习难度。
  • 传播困难。ABC编译器很大,必须被保存在磁带上。安装时必须有一个大磁带,是传播变得困难。
    这里写图片描述

注意上面这几点,它们都是 Python 在设计开发中极力避免的。可以说 ABC 语言对于 Python 语言是非常重要的。


Python 的诞生

了解了上述 Python 起源的历史,我们才能够理解 Python 诞生的情况。1991年,第一个 Python 编译器(解释器)诞生,它用C语言实现,并能够调用C库(.so 文件)。从一出生,Python已经具有了:类,函数,异常处理,包括表和词典在内的核心数据类型,以及模块为基础的拓展系统。
Python 语法很多来自C,但又受到 ABC 语言的强烈影响。来自 ABC 语言的一些规定直到今天还富有争议,比如强制缩进。但这些语法规定让 Python 容易读。另一方面,Python 聪明的选择服从一些惯例(特别是C语言的惯例)。比如使用等号赋值,使用 def 来定义函数。Guido 认为,对于「常识」上确立的东西,没有必要过度纠结。
Python 从一开始就特别在意可拓展性。Python 可以在多个层次上拓展。从高层上,你可以引入 .py 文件。在底层,你可以引用C语言的库。Python 程序员可以快速的使用 Python 写 .py 文件作为拓展模块。但当性能是考虑的重要因素时,Python 程序员可以深入底层,写C程序,编译为 .so 文件引入到 Python 中使用。Python 就好像是使用钢构建房一样,先规定好大的框架。而程序员可以在此框架下相当自由的拓展或更改。


Python 的发展

最初的 Python 完全由 Guido 本人开发。然而此后Guido同事迅速爱上了这门新语言并不断反馈使用意见,参与到 Python 的改进中。于是 Guido 和一些同事构成 Python 的核心团队,他们将自己大部分的业余时间用于hack Python(也包括工作时间,因为他们将 Python 用于工作)。随后,Python 拓展到CWI之外。Python将许多机器层面上的细节隐藏,交给编译器处理,并凸显出逻辑层面的编程思考。Python 程序员可以花更多的时间用于思考程序的逻辑,而不是具体的实现细节。这一特征吸引了广大的程序员。Python开始迅速流行起来。
此外,还有两点外界因素使 Python 得到迅速发展,一是硬件性能的提高。当时已进入90年代初,个人计算机开始进入普通家庭,程序员们开始关注计算机和语言的易用性。相比 ABC 语言因为硬件的性能限制而失败,Python 生逢其时。二是互联网的发展,当时许多程序员以及资深计算机用户已经开始频繁使用 Internet 进行交流。一种新的软件开发模式开始流行:开源。开放性是 Python 能够发展壮大的根本原因。Guido 维护了一个 maillist,Python 用户就可以通过邮件进行交流。Python 用户来自许多领域,有不同的背景,对Python也有不同的需求。每当用户不满足于现有功能,很容易对Python进行拓展或改造。随后,这些用户将改动发给 Guido,并由 Guido 决定是否将新的特征加入到 Python 或者标准库中。
Python 被称为「Battery Included」,是说它以及其标准库的功能强大。这些是整个社区的贡献。Python 的开发者来自不同领域,他们将不同领域的优点带给 Python。比如 Python 标准库中的正则表达是参考Perl,而lambda, map, filter, reduce函数参考 Lisp 。Python 本身的一些功能以及大部分的标准库来自于社区。Python 的社区不断扩大,进而拥有了自己的 newsgroup ,网站(python.org) ,以及基金 (Python Software Foundation)。从 Python 2.0 开始,Python也从 maillist 的开发方式,转为完全开源的开发方式。社区气氛已经形成,工作被整个社区分担,Python 也获得了更加高速的发展。
到今天,Python 的框架已经确立。Python 语言以对象为核心组织代码,支持多种编程范式,采用动态类型,自动进行内存回收。Python支持解释运行,并能调用C库进行拓展。由于标准库的体系已经稳定,所以Python的生态系统开始拓展到第三方包。这些包,如Django,web.py,wxpython,numpy,matplotlib,PIL,将 Python 升级成了物种丰富的热带雨林。
如今 Python 已经进入到 3.0 时代,由于 Python 3 向后不兼容,所以从 2.0 到 3.0 的过渡并不容易。另一方面,Python 的性能依然值得改进,它的运算性能仍低于 C++ 和 Java。可以说 Python 依然是一个在发展中的语言,它还有着更加值得期待的未来。
(关于 Python 3.0 之后的发展,可以阅读这篇博客:Python 3.X简史——记录3.0之后的重要更新)


从上述 Python 的历史,我们可以学习到很多,比如 Python 清晰简明、扩展性强等特点的来源,如何更充分的用好 Python,开源、开放的重要性等等。无论如何,我对 Python 和编程的兴趣又增添了几分。


本文主要参考:
Vamei 的博客:Python简史
Wikipedia: Python - Wikipedia

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一种高级编程语言,由Guido van Rossum于1989年在荷兰创造。Python的设计目标是提供一种简单易读、易学习的语法,同时具备强大的功能和扩展性。 Python发展历史可以分为以下几个阶段: 1. Python 1.x系列:于1994年发布,这个版本的Python已经具备了基本的语法和功能,但还比较简单。这个版本的Python在学术界和爱好者中得到了广泛的应用。 2. Python 2.x系列:于2000年发布,这个版本的Python引入了一些重要的特性,如列表推导式、生成器、装饰器等。Python 2.x系列一直持续到2010年,成为当时最流行的Python版本。 3. Python 3.x系列:于2008年发布,这个版本的Python引入了一些重要的改进和变化,以解决Python 2.x系列中存在的一些设计缺陷和不一致性。然而,由于与Python 2.x不兼容,Python 3.x的普及速度相对较慢。目前,Python 3.x已经成为主流版本,并且得到了广泛的应用和支持。 除了以上主要版本之外,Python还有一些衍生版本和实现,如Jython(运行在Java虚拟机上)、IronPython(运行在.NET平台上)等。 Python发展历史中,除了语言本身的改进和演化,还有一个重要的因素是Python社区的活跃和贡献。Python社区是一个开放、友好和充满活力的社区,为Python发展做出了巨大的贡献,提供了大量的第三方库和工具,使得Python成为一种非常强大和灵活的编程语言

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值