Python3_基础部分_Python历史

Posted qingxiaoyimeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3_基础部分_Python历史相关的知识,希望对你有一定的参考价值。

 

1、Python的历史

  1.1 Python起源

  Guido von Rossum是一名荷兰计算机专家。1982年,Guido在阿姆斯特丹大学获得了数学和计算机硕士学位。他本人对计算机相关的工作很感兴趣,用他个人的话来说,他本人虽然是数学和计算机双硕士,但他做的工作主要是计算机相关的内容,并喜爱做任何关于编程的工作。

  在上个世界80年代,Guido使用过Pascale、C、Fortan等编程语言。这些语言基本设计原则是让计算机可以更快的进行运算工作。虽然IBM、微软和苹果已经开始了个人PC的推广,但这些个人电脑配置很低,价格很高,很难让广大编程人员和工作人员使用。比如早期的Macintosh,只有8MHz的CPU主频和128KB的RAM,C语言的一个数值类型的变量就可以占满存储空间。当时所有编程语言的核心是做编译器的优化,以便让程序能够在硬件上运行。为了增加计算机的运行速度,编程语言也让编程人员学习计算机思维,以便设计出能适应硬件的程序。那个时候的C语言被大家所诟病,主要是因为C语言存在指针、动态类型,同时面向对象、内存自动管理、自动化运维等高级功能更是会让计算机陷入崩溃。

  这些都问题都让编程人员感到苦恼。当时Guido已经可以利用C语言来编写一个复杂的功能,但需要耗费大量的时间,他的另外一个选择是shell脚本,Bourne Shell作为Unix系统的解释器已经存在了很长时间。Unix管理员经常使用shell编写一些简单的维护脚本,如系统备份、文件系统管理、系统信息收集等,shell脚本也可以很方便的将多个功能连接在一起使用。在C语言需要几十上百行的程序,shell脚本只需要简单的几行就可以完成。然而shell脚本本质是调用相关的命令,并不是一个真正的编程语言。比如shell脚本没有数值类型数据类型,做相关的数值计算将非常复杂。总之当时的C、shell等编程语言都不适合做一些数值类工作。

  Guido希望有一种编程语言,这种语言能够像C语言一样,具有全面的计算机功能接口,有可以像shell语言一样简化编程过程和语句。当时Guido正在参加一种由荷兰的数学和计算机研究所开发的教学语言ABC的教学,并参与到ABC语言的开发,与其他大部分语言不同,ABC语言的目标是让用户感觉更好,让语言变得更加容易阅读、容易使用、容易开发、容易学习等。比如下面一段ABC程序,用于统计文本中出现某个词的总数:

     HOW TO RETURN words document:
        PUT {} IN collection
        FOR line IN document:
           FOR word IN split line:
              IF word not.in collection:
                 INSERT word IN collection
        RETURN collection

  从上面的程序段来看,有一点编程基础的程序员很容易读懂这段程序。例如:HOW TO用于定义一个函数,使用冒号和缩进来表示程序块,行尾没有分号,for和if结构中也没有括号() ,赋值采用的是PUT,而不是更常见的等号。这些改动让ABC程序读起来像一段文本文字。这个ABC语言让Guido很感兴趣,但是由于ABC语言没有流行起来,同时ABC语言具有致命的问题:可扩展性差,并不是模块化的编程语言,要增加功能,需要改动很多地方,不便于开发大型程序,同时学习难度也很大,流行起来比较困难。

  1989年,圣诞期间,Guido在无聊的时间开闪避用C编写Python的编译器,Python的名字来源于Guido喜爱的一个电视剧:Month Python‘s Flying Circus。主要是用于创造出一种介于C和shell之间的一种语言,这种语言功能全面、容易学习,可扩展性好。

  1991年,第一个用C语言版本的Python编译器诞生,同时能够调用C语言的库文件。从这个编译器诞生开始,Python就具有了:类、函数、异常处理。包含outside 、dictionary等核心的数据类型、以模块为基础的扩展系统。Python摒弃了很多编程语言的毛病,同时增加了强制性的语法要求,这让Python更容易阅读。Pyhton注重多层次的扩展性,在高层可以直接饮用.py的文件,在底层可以调用C语言的库文件,这样在高层可以快速的编写Python程序和文件,在需要性能时可以调用C语言的库文件。起初编译器由Guido一个人开发,但是同事给予他很多使用上的反馈意见,并参与到Python编译器的改进之中。这样就构成了一个Python的核心团队,他们讲自己大部分的业余时间用于开发Python。随后,Python不断的扩展到其他地方,比如研究所、学校等,也让Python开始流行起来了。

  但此时,在计算机行业,个人计算机开始进入普通的家庭。Intel发布了486处理器,windows发布Windows 3.0的一系列视窗系统,计算机性能开始迅速提高。程序员开始专注程序的易用性,比如图形化界面和美观程度。 技术分享图片

  随着计算机性能不断提高,软件世界也开始发生惊天动地的变化。多样化的需求开始增加,C++、Java开始流行。面向对象的编程模式、提供了丰富的对象库,提高了程序的产量,将语言的易用性提到了一个新的高度。与此同时Internet成为了信息革命的主题,程序员开始频繁的与Internet进行交流,比如email、新闻等,一种新的开发模式诞生:开源。1991年Linus发布了内核源代码,吸引了大量的hack加入。这样开源的结构和容易扩展让Python开始流行起来。

  不同行业的开发者都提出了Python的使用意见,给Python在不同领域带来了很多优点。这些方式都让Python拥有了很多的hack。从Python 2.0 开始,Python也转向了开源,这让Python发展更加快速,具有了 自己的框架、强大的标准库和第三方的扩展包,如Django、web、numpy、matplotlib等

  但是由于Python2.0 版本起初的hack主要是欧美的,并没有考虑字符编码等跨不同人类语言的问题,因此在2013年时,Python为了适应全世界的开发人员,开始提倡使用3.5.2版本,但是现阶段大部分公司还是使用的Pythonn2.7版本,因此Python社区声明将为Python2.7版本支持到2020年,以便正在使用低版本的公司有时间转向3.5以上的版本。

1.2 Python版本的主要时间节点

  Granddaddy of Python web frameworks,Zopen 1 was released in 1990

    Python 1.0 - January 1994 年增加了Lambdemapfilter and reduce

    Python 2.0 - October 16,2000年加入了内存回收机制,同时形成了Python语言的框架

    Python 2.4 - November 30,2004,同年,Django web框架诞生

    Python 2.5 - September 19,2006

    Python 2.6 - July 3 2010

    In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there     would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible
      Python 3.0 - December 3,2008

      Python 3.1 - June 27,2009

      Python 3.2 - February 20,2011

      Python 3.3 - Setember 29,2012

      Python 3.4 - March 16,2014

      Python 3.5 - September 13,2015

      Python 3.6 - December 16,2016

      ..............

2、Python的优缺点

  2.1 Python的优点

  • 简单————Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质使你能够专注于解决问题而不是去搞明白语言本身。

  • 易学————Python极其容易上手。Python有极其简单的语法和说明文档。

  • 免费、开源————Python是FLOSS(自由/开放源码软件)之一。你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念—它是由一群希望看到一个更加优秀的Python的人创造并经常改进着的。

  • 高层语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。

  • 可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC、Symbian以及Google基于linux开发的Android平台!

  • 解释性————一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。

  • 面向对象————Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。

  • 可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。

  • 丰富的库————Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。

  • 规范的代码————Python采用强制缩进的方式使得代码具有极佳的可读性。

  2.2 Python的缺点

  1、运行速度慢(相对而言):有速度要求的话,用C++改写关键部分或者利用标准库进行替换引用。

  2、国内市场较小,中文资料匮乏(好的python中文资料屈指可数)。

 

  •   3、构架选择太多。

技术分享图片


以上是关于Python3_基础部分_Python历史的主要内容,如果未能解决你的问题,请参考以下文章

Python3学习

002_Python3基础语法

基础.[转]Python3 * 和 ** 运算符

python3 入门基础

Python3基础 super 子类调用父类的__init__

Python3基础 __repr__ 实例对象的名字,可以显示信息