奇酷教育 · 行业动态

python的前世与今生来源:m.qikuedu.com

  python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。并且在他去谷歌面试的时候简历只写了一句话,就是我创造了Python,可见能力确实不一般。
 
 
 
  吉多·范罗苏姆
 
 
  我们的前辈有一个非常亲民的名字叫做“龟叔”
 
  在80年代,个人电脑的配置较之如今是极低的,程序员不得不努力思考如何最大化利用空间,以写出符合机器口味的程序。而正是因为这一点,让龟叔感到苦恼。他认为这样编写程序实在是太过于耗费时间,于是他想到了shell。shell可以像胶水一样,将UNIX下的许多功能连接在一起。许多C语言下上百行的程序,在shell下只用几行就可以完成。然而,shell的本质是调用命令,它并不是一个真正的语言,shell不能全面的调动计算机的功能。 
 
  于是,龟叔开始思考,是否能设计一款语言,使它同时具备C与shell的优点,既能够全面调用计算机的功能接口,又可以轻松编写程序。 
 
  所以龟叔当时一直在寻找这样一种的语言,既可以像命令那样简洁明了,又可以和C语言的功能相媲美。不过当时那个年代,几乎是找不到的,不过找到了一种稍微类似的语言,就是传说中的ABC语言
 
  1989年圣诞节期间,在阿姆斯特丹,龟叔为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承。而取名python,是取自他挚爱的一部电视剧Monty Python’s Flying Circus 。 
 
  1991年,第一个Python编译器诞生,它是用C语言实现的,并能够调用C库(.so文件)。从一出生,Python已经具有了:类(class),函数(function),异常处理(exception),包括表(list)和词典(dictionary)在内的核心数据类型,以及模块(module)为基础的拓展系统。 
 
  龟叔为防止重蹈ABC的覆辙,着重注意python的可扩展性,并且也沿用了C中的大部分语法习惯,而这,使python得到龟叔同事的欢迎。他们迅速的反馈使用意见,并参与到Python的改进。
 
  python诞生在一个幸运的时间。1990年代初,个人计算机开始进入普通家庭。Intel发布了486处理器,windows发布window 3.0开始的一系列视窗系统,计算机的性能大大提高。并且由于Internet随个人电脑的普及而为人们所广知,许多程序员以及资深计算机用户频繁使用Internet进行交流,这使得python没有了硬件上的束缚与传播上的困难,再加上python易于使用的特点,使python得到了一定程度上的传播。 
 
  龟叔维护了一个maillist,python用户通过邮件进行交流。因为python用户来自许多领域,有不同的背景,对python也有不同的需求。python相当的开放,又容易拓展,所以当用户不满足于现有功能,很容易对python进行拓展或改造。随后,这些用户将改动发给龟叔,并由龟叔决定是否将新的特征加入到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可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、、Google、Yahoo!、Facebook、NASA、Quora(中国知乎)、豆瓣、知乎、百度、腾讯、汽车之家、美团等。
 
 
  目前Python主要应用领域
 
  云计算: 云计算最火的语言, 典型应用OpenStack
 
  WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
 
  科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
 
  系统运维: 运维人员必备语言
 
  金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
 
  图形GUI: PyQT, WxPython,TkInter
 
 
  Python在一些公司的应用
 
  谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬虫、Google广告等项目都在大量使用Python开发
 
  CIA: 美国中情局网站就是用Python开发的
 
  NASA: 美国航天局(NASA)大量使用Python进行数据分析和运算
 
  YouTube:世界上最大的视频网站YouTube就是用Python开发的
 
  Dropbox:美国最大的在线云存储网站,全部用Python实现,每天网站处理10亿个文件的上传和下载
 
  Instagram:美国最大的图片分享社交网站,每天超过3千万张照片被分享,全部用python开发
 
  Facebook:大量的基础库均通过Python实现的
 
  Redhat: 世界上最流行的Linux发行版本中的yum包管理工具就是用python开发的
 
  豆瓣: 公司几乎所有的业务均是通过Python开发的
 
  知乎: 国内最大的问答社区,通过Python开发(国外Quora)
 
  春雨医生:国内知名的在线医疗网站是用Python开发的
 
  除上面之外,还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝 、土豆、新浪、果壳等公司都在使用Python完成各种各样的任务。
 
 
  Python的种类
 
  Cpython
 
      Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
 
  Jyhton
 
      Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。
 
  IronPython
 
      Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
 
  PyPy(特殊)
 
      Python实现的Python,将Python的字节码字节码再编译成机器码。
 
  RubyPython、Brython ...
 
 
  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。”

推荐课程

* * * *

添加导师QQ:3053383067;2165190773在线报名
全国统一服务热线:400-807-8991