【Python不是大蟒蛇】认识Python | Python发展史 | Python优缺点

Ⅰ.认识Python

0x00 Python怎么来的

        ABC语言是在NWO(荷兰科学研究组织)旗下CWI(荷兰国家数学与计算机科学研究中心)的Leo Grurts,Lambert Meertens,Steven Pemberton主导研发一种交互式,结构化高级语言,旨在替代BASIC,Pascal等语言,用于教学及原型软件设计。 —— 百度百科

我们不是在讲Python吗?这和ABC语言有什么关系?

我们python的创始人吉多·范罗苏姆(Guido van Rossum),就曾参与了ABC语言的开发。

        1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。

        就Guido本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,Guido认为是其非开放造成的。Guido决心在Python中避免这一错误。同时,他还想实现在ABC中闪现过但未曾实现的东西。

        就这样,一个圣诞节,一台电脑,大名鼎鼎的Python就诞生了!!!

等下,就一个圣诞节,Python就做出来了?

没错,大神就是这么牛

 

 0x01 为什么叫Python

Python 的创始人吉多 · 范罗苏姆(Guido van Rossum)是个精力旺盛的逗比。1982 年从阿姆斯特丹大学取得数学和计算机科学硕士学位后,他曾在多家科研机构工作,2005 至 2012 年他在 Google 工作了 7 年,之后又离职加入 Dropbox。这位现年 60 岁的荷兰程序员在他 34 岁(1989 年)的圣诞节假期中设计出了风靡世界的程序语言 Python。虽然 Python 的原意是大蟒蛇,但创始人显然不是想表明这种语言可以变成白娘子跟你在西湖相遇,关于 Python 的命名,吉多自己(在 1996 年时)的说法是这样的:

「六年前的 1989 年 12 月,我在寻找一门『课余』编程项目来打发圣诞节前后的假期时光。假期里我的办公室关门,但我有一台家用电脑。我决定为当时我正构思的一个新的脚本语言写一个解释器,它是 ABC 语言的继承,对 UNIX / C 程序员会有吸引力。作为一个略微有些奇怪想法的人和《蒙提 · 派森的飞行马戏团》的狂热爱好者,我选择了 Python 作为项目的标题。」

0x02《蒙提 · 派森的飞行马戏团》是啥?

即:喜剧团体蒙提 · 派森(Monty Python),他们要为这个名字找到一个听上去比较圆滑的姓,因此选择了「Python」。这个方案提出后,BBC 对于「Monty Python」这个名字的看法是:「对于一个低俗娱乐群体而言真是个完美的名字」

 Ⅱ.Python发展史

0x00 Python版本发展史

Python版本发展史

发布版本

源自

年份

所有者

GPL兼容

0.9.0至1.2

n/a

1991-1995

CWI

1.3至1.5.2

1.2

1995-1999

CNRI

1.6

1.5.2

2000

CNRI

2.0

1.6

2000

BeOpen.com

1.6.1

1.6

2001

CNRI

2.1

2.0+1.6.1

2001

PSF

2.0.1

2.0+1.6.1

2001

PSF

2.1.1

2.1+2.0.1

2001

PSF

2.1.2

2.1.1

2002

PSF

2.1.3

2.1.2

2002

PSF

2.2 至3.

2.1.1

2001至今

PSF

3.0及更高

2.6

2008至今

PSF

                                                                                                                             —— 源自百度百科

0x01 Python编程语言排行榜 

2023年6月,TOP 20 的变动不大,排名前十的分别是:

Python,C,C++,Java,C#,Visual Basic, JavaScript,PHP,SQL,Assembly language。

Python,C,C++,Java,C#,Visual Basic, JavaScript,PHP,SQL,Assembly language 历史变化曲线图,得益于人工智能的发展 Python 发展非常迅速,近期有所回落:排名 21-50 的编程语言

各大编程语言的历史排名(1988-2023)

编程语言“名人榜”( 2003-2022)

 可以看出,Python因为简单易学,在世界编程语言排行榜名列前茅。

 Ⅲ.Python优缺点

优点

简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。

易学:Python极其容易上手,因为Python有极其简单的说明文档 [8]  。

易读、易维护:风格清晰划一、强制缩进

用途广泛

速度较快:Python的底层是用C语言写的,很多标准库和第三方库也都是用C写的,运行速度非常快。 [7] 

免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。

高层语言:用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是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools,itertools)提供了Haskell和Standard ML中久经考验的函数式程序设计工具。

可扩展性、可扩充性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在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。”

可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。

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

规范的代码:Python采用强制缩进的方式使得代码具有较好可读性。而Python语言写的程序不需要编译成二进制代码。Python的作者设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。其中很重要的一项就是Python的缩进规则。一个和其他大多数语言(如C)的区别就是,一个模块的界限,完全是由每行的首字符在这一行的位置来决定(而C语言是用一对大括号来明确的定出模块的边界,与字符的位置毫无关系)。通过强制程序员们缩进(包括if,for和函数定义等所有需要使用模块的地方),Python确实使得程序更加清晰和美观。

高级动态编程:虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划例如Zope、Mnet及BitTorrentGoogle也广泛地使用它。Python的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单程序设计任务的语言,如shellscript、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。

做科学计算优点多:说起科学计算,首先会被提到的可能是MATLAB。除了MATLAB的一些专业性很强的工具箱还无法被替代之外,MATLAB的大部分常用功能都可以在Python世界中找到相应的扩展库。和MATLAB相比,用Python做科学计算有如下优点:

●首先,MATLAB是一款商用软件,并且价格不菲。而Python完全免费,众多开源的科学计算库都提供了Python的调用接口。用户可以在任何计算机上免费安装Python及其绝大多数扩展库。

●其次,与MATLAB相比,Python是一门更易学、更严谨的程序设计语言。它能让用户编写出更易读、易维护的代码。

●最后,MATLAB主要专注于工程和科学计算。然而即使在计算领域,也经常会遇到文件管理、界面设计、网络通信等各种需求。而Python有着丰富的扩展库,可以轻易完成各种高级任务,开发者可以用Python实现完整应用程序所需的各种功能。

缺点

单行语句和命令行输出问题:很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i。而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。

给初学者带来困惑:独特的语法这也许不应该被称为局限,但是它用缩进来区分语句关系的方式还是给很多初学者带来了困惑。即便是很有经验的Python程序员,也可能陷入陷阱当中。

运行速度慢:这里是指与C和C++相比。Python开发人员尽量避开不成熟或者不重要的优化。一些针对非重要部位的加快运行速度的补丁通常不会被合并到Python内。所以很多人认为Python很慢。不过,根据二八定律,大多数程序对速度要求不高。在某些对运行速度要求很高的情况,Python设计师倾向于使用JIT技术,或者用使用C/C++语言改写这部分程序。可用的JIT技术是PyPy

和其他语言区别

对于一个特定的问题,只要有一种最好的方法来解决

这在由Tim Peters写的Python格言(称为The Zen of Python)里面表述为:There should be one-and preferably only one-obvious way to do it。这正好和Perl语言(另一种功能类似的高级动态语言)的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。

Python的设计哲学是“优雅”、“明确”、“简单”。因此,Perl语言中“总是有多种方法来做同一件事”的理念在Python开发者中通常是难以忍受的。Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。在设计Python语言时,如果面临多种选择,Python开发者一般会拒绝花俏的语法,而选择明确的没有或者很少有歧义的语法。由于这种设计观念的差异,Python源代码通常被认为比Perl具备更好的可读性,并且能够支撑大规模的软件开发。这些准则被称为Python格言。在Python解释器内运行import this可以获得完整的列表。

更高级的Virtual Machine

Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byte code。这种机制的基本思想跟Java,.NET是一致的。然而,Python Virtual Machine与Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一种更高级的Virtual Machine。这里的高级并不是通常意义上的高级,不是说Python的Virtual Machine比Java或.NET的功能更强大,而是说和Java 或.NET相比,Python的Virtual Machine距离真实机器的距离更远。或者可以这么说,Python的Virtual Machine是一种抽象层次更高的Virtual Machine。基于C的Python编译出的字节码文件,通常是.pyc格式。除此之外,Python还可以以交互模式运行,比如主流操作系统Unix/Linux、Mac、Windows都可以直接在命令模式下直接运行Python交互环境。直接下达操作指令即可实现交互操作。

                                                                                                                                   —— 百度百科

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值