python系列之---python的起源

根据TIOBE发布的2018年5月编程语言排行,可以看到python作为现在十分火热的语言,一直都是保持在前列。
5 月编程语言排行榜 TOP20 榜单:
python系列之---python的起源_第1张图片
Top 10编程语言TIOBE指数走势(2002-2018)
python系列之---python的起源_第2张图片
今天就介绍一下python语言背后的起源。
Python,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。
作为python的作者,是什么促使他设计了这个语言呢?
python系列之---python的起源_第3张图片
在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的生态系统开始拓展到第三方包。

python 设计定位

Python的设计哲学是“优雅”、“明确”、“简单”。因此,Perl语言中“总是有多种方法来做同一件事”的理念在Python开发者中通常是难以忍受的。Python开发者的哲学是[“用一种方法,最好是只有一种方法来做一件事”]。在设计Python语言时,如果面临多种选择,Python开发者一般会拒绝花俏的语法,而选择明确的没有或者很少有歧义的语法。由于这种设计观念的差异,Python源代码通常被认为比Perl具备更好的可读性,并且能够支撑大规模的软件开发。这些准则被称为Python格言。在Python解释器内运行import this可以获得完整的列表。
Python开发人员尽量避开不成熟或者不重要的优化。一些针对非重要部位的加快运行速度的补丁通常不会被合并到Python内。所以很多人认为Python很慢。不过,根据二八定律,大多数程序对速度要求不高。在某些对运行速度要求很高的情况,Python设计师倾向于使用JIT技术,或者用使用C/C++语言改写这部分程序。可用的JIT技术是PyPy。
Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools, itertools)提供了Haskell和Standard ML中久经考验的函数式程序设计工具。
虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划例如Zope、Mnet及BitTorrent,Google也广泛地使用它。Python的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单程序设计任务的语言,如shellscript、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。
Python本身被设计为可扩充的。并非所有的特性和功能都集成到语言核心。Python提供了丰富的API和工具,以便程序员能够轻松地使用C语言、C++、Cython来编写扩充模块。Python编译器本身也可以被集成到其它需要脚本语言的程序内。因此,很多人还把Python作为一种“胶水语言”(glue language)使用。使用Python将其他语言编写的程序进行集成和封装。在Google内部的很多项目,例如Google Engine使用C++编写性能要求极高的部分,然后用Python或Java/Go调用相应的模块。《Python技术手册》的作者马特利(Alex Martelli)说:“这很难讲,不过,2004 年,Python 已在Google 内部使用,Google 召募许多 Python 高手,但在这之前就已决定使用Python,他们的目的是 Python where we can, C++ where we must,在操控硬件的场合使用 C++,在快速开发时候使用 Python。”

reference:
后起之秀的炼成——Python诞生与崛起之路
https://blog.csdn.net/diosmai_kingso/article/details/78767636
Python简史
https://www.cnblogs.com/vamei/archive/2013/02/06/2892628.html
百度百科:Python
https://baike.baidu.com/item/Python/407313?fr=aladdin#1

你可能感兴趣的:(python,python)