今天,我们来聊一聊python的诞生与发展历程。
为什么我会选择介绍python的历史呢?让我们来看张图:
该图为2017年世界编程语言使用率
可以看到,python位列第五,仅次于java和C一类的语言。
如果这不够具有说服力,让我们再来看两张图片:
图一为2017年数据工作者所使用语言的情况,图二为IEEE发布2017年编程语言排行榜,可以看到,两张图中python均高居榜首。
那么,是什么使python在短短二十几年间成为一个如此受人热捧的语言?纵观它的发展历史与历程,或许答案就会变得明晰。
Python,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。
此为Guido van Rossum(图片来源百度百科)
作为python的作者,是什么促使他设计了这个语言呢?
在80年代,个人电脑的配置较之如今是极低的,程序员不得不努力思考如何最大化利用空间,以写出符合机器口味的程序。而正是因为这一点,让guido感到苦恼。他认为这样编写程序实在是太过于耗费时间,于是他想到了shell。shell可以像胶水一样,将UNIX下的许多功能连接在一起。许多C语言下上百行的程序,在shell下只用几行就可以完成。然而,shell的本质是调用命令,它并不是一个真正的语言,shell不能全面的调动计算机的功能。
于是,guido开始思考,是否能设计一款语言,使它同时具备C与shell的优点,既能够全面调用计算机的功能接口,又可以轻松编写程序。
后来他进入CWI(Centrum Wiskunde & Informatica, 数学和计算机研究所)工作,并参加了ABC语言的开发。ABC语言旨在让语言变得容易阅读,容易使用,容易记忆,容易学习。但由于它的可拓展性差,不能直接IO,过度革新与传播困难,导致它不为大多数程序员所接受(因为语法上的过度革新,加大了程序员的学习难度)与传播。
除去这些缺点,我们不难看出,ABC就guido心中所期望的那款语言的雏形。
1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承。而取名python,是取自他挚爱的一部电视剧Monty Python’s Flying Circus 。
1991年,第一个Python编译器诞生,它是用C语言实现的,并能够调用C库(.so文件)。从一出生,Python已经具有了:类(class),函数(function),异常处理(exception),包括表(list)和词典(dictionary)在内的核心数据类型,以及模块(module)为基础的拓展系统。
guido为防止重蹈ABC的覆辙,着重注意python的可扩展性,并且也沿用了C中的大部分语法习惯,而这,使python得到guido同事的欢迎。他们迅速的反馈使用意见,并参与到Python的改进。
python诞生在一个幸运的时间。1990年代初,个人计算机开始进入普通家庭。Intel发布了486处理器,windows发布window 3.0开始的一系列视窗系统,计算机的性能大大提高。并且由于Internet随个人电脑的普及而为人们所广知,许多程序员以及资深计算机用户频繁使用Internet进行交流,这使得python没有了硬件上的束缚与传播上的困难,再加上python易于使用的特点,使python得到了一定程度上的传播。
Guido维护了一个maillist,python用户通过邮件进行交流。因为python用户来自许多领域,有不同的背景,对python也有不同的需求。python相当的开放,又容易拓展,所以当用户不满足于现有功能,很容易对python进行拓展或改造。随后,这些用户将改动发给Guido,并由Guido决定是否将新的特征加入到python或者标准库中。这就使得不同领域的优点集中于python。
后来的python2.0,从maillist的开发方式,转为完全开源的开发方式,(开源:由于Internet让信息交流成本大大下降,所出现的一种新的软件开发模式)python的数据库的扩展速度与传播速度也由此更进一步。
到今天,Python的框架已经确立。Python语言以对象为核心组织代码(Everything is object),支持多种编程范式(multi-paradigm),采用动态类型(dynamic typing),自动进行内存回收(garbage collection)。Python支持解释运行(interpret),并能调用C库进行拓展。Python有强大的标准库 (battery included)。由于标准库的体系已经稳定,所以Python的生态系统开始拓展到第三方包。这些包,如Django, web.py, wxpython, numpy, matplotlib,PIL,将Python升级成了物种丰富的热带雨林,这也是python相较于C,java一类语言的优势。例如一道高数中求解极限的题:
我们用C语言来编译求解:
然后使用python:
这样一对比,就可以清晰地看出python的优势了。
纵观python发展的历史,我们不难看出,python在设计上坚持了清晰划一的风格,这使得Python成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。python所崇尚的优雅、明确、简单,为它带来了今天的热度。虽然这不是主要的原因,但我们不难从python的故事中看出,语言终究是服务于人的,而不是机器,当语言变得简单明了方便且易于使用的时候,它的推广就已成定数。正如延续下来的是python,而不是淹没在历史中的ABC。
python的发展,足以作为后来语言发展的典范,是当之无愧的后起之秀。
PS:部分资料参考/截取于:
Python简史
https://www.cnblogs.com/vamei/archive/2013/02/06/2892628.html
百度百科:Python
https://baike.baidu.com/item/Python/407313?fr=aladdin#1