专栏首页python3Python 史话

Python 史话

Python /pi:'thon/ 用作者的话说, Python是另一个脚本语言,另一个Perl。 Python的设计崇尚简洁和优雅,它主要吸引那些觉得Perl 丑陋怪异的程序员。Python \Py"thon\, n. Python是卧在特尔斐阿波罗神殿的毒蛇的名字。Python一种大型蟒蛇。

Python是一种解释型、交互式、面向对象的通用编程语言,它的标识是一条可爱的大蟒蛇。我们经常拿它和Tcl、Perl、Scheme、Java 比较:Python有非常清晰的语法,先进的面向对象设计,拥有模块、类、异常处理、动态执行和高级数据类型。强大的标准库涵盖了字串处理(正则表达式)、网络协议(HTTP, FTP, SMTP,XML-RPC, POP, IMAP)、软件工程(敏捷开发,单元测试,logging)、操作系统接口(系统调用,文件系统,数据库)的方方面面。此外它还拥有大量的第三方扩展库和庞大活跃的社群支持,比如图形库PIL,跨平台GUI框架wxPython,应用服务器Zope,网络框twisted,3D支持PyOpenGL。简单,强大,开放和免费,就是使用Python最好的理由。Guido van Rossum 是Python语言的作者。据称Guido 因喜爱英国BBC每周滑稽剧Monty Python'sFlying Circus 而命名Python。象Linux 和Delphi这类单词的发音总是另人迷惑,Python社区称Python为派森[音],称Guido为奎多[音]的占了大多数。要知道Guido怎么念自己的名字,不妨到他主页里查找注音,还会有 一个搞怪的音频guido.au。(Guido 在英文发念/gwee'do/,在荷兰语中念 /khwee'do/)上世纪80年代,Guido在荷兰阿姆斯特丹为CWI工作时,曾实现过一个教学语言ABC。ABC不容易扩展,但也有很多吸引人的特性。Guido总结了ABC失败的经验,从1989年十二月开始开发Python,并吸收了C、Modula-3、Bourne shell 和Icon等语言的很多优点,到1991 年二月,Python 0.9.0 第一次正式发布在USENET。Gudio 的主页上面题有:笨拙并以此为荣(Gawkyand proud of it)。他推崇开放和自由,喜欢印有YouNeed Python的文化衫和PYTHON的车牌,主张Computer Programming for Everybody,让Python为我们开心地工作。Gudio过去一直对语言的变革态度保守,因而被社区称为“仁慈的□□□□者BDFL”(BenevolentDictator For Life)。1995年Guido一家迁居美国后开始为Zope公司工作。Guido带着他忠实的团队来到Zope.com,这是当时Python社区非常关注的一件大事,大家都希望Guido的×××能给未来的Zope 3 这个重量级应用服务器注入新的 活力。后来看到,Guido为了赚钱供他的孩子将来上大学,最后还是不得已告别了他共事8年心爱的Python-Labs团队,离开了加州的Zope,前往西海岸的ElementalSecurity从事企业级安全研究。听起来真是令人沮丧。在自由的世界里振臂一呼应者云集的英雄Guido,在现实 生活中居然算不上是有钱人!Gudio和他的Python在2002年赢得自由软件基金会年度大奖。Python的繁荣主要归功于开放自由的社区力量。开发小组成员利用邮件列表python-dev和新闻组comp.lang.python沟通交流,用SourceForge 完成代码管理、版本控制、特性跟踪、Bugs修复、提交补丁。SourceForge 的tracker列表里总是排满了最新提交的项目计划。由Guido本人和Bruce Eckel主持的PyCon2004 是面向Python社区的开发者盛会。PyCon2004议题涉及Web开发、数学和科学计算、Pyrex、Zope、GUI、3D、面向对象、Twisted网络框架、分布式应用。值得注意得 是Andrew Koenig这位C++社区的重量级人物出席并作了非常有趣的演讲。Python被设计为和C密切整合的胶水语言。常常用C为Python编写功能模块、底层接口和增强性能,利用Python完成逻辑抽象和原型开发。C也可以将Python嵌入执行(调用虚拟机解释执行)。C++库Boost.Python可以完成C++到Python类型的映射。Python简洁的语法,高级的数据类型,自动内存管理,健壮的虚拟机和丰富的标准库可以极大地提高生产力。体验一下Python使用弱类型带来的好处: def sum(arg1, arg2): return arg1 + arg2 print sum(42, 47.8) print sum('spam', 'eggs') 完成相同功能又具有灵活性的Java/C++代码实际上是不容易写的。C++使用模板就轻松搞定了么?C/C++ 体制里面隐藏的类型转换实在令人担忧。(C++View创刊号专门讨论过用C++如何求两数之和,BruceEckel给过一个Java实现。)Python语言特别强调简洁,优雅,自然的风格。锯齿型的代码缩进,简短的代码,清晰统一的语法规则。解释和交互执行,可以节约程序员编码和调试的时间。可 以象Java一样编译成字节码来提高执行速度。针对Python执行效率的优化产生很多方案。当然,首先要确认Python已经足够快。我们经常会发现执行 Python 应用程序所花费的时间绝大部分只是花在了几个函数上。将这些关键部分重写成 C 扩展模块,可以使用像 SWIG这样的扩展封装器扩展,将程序中最耗时元素作为C代码执行。已经创建了一种叫Pyrex 的语言,它融合了Python 和 C。一旦用 C 编译器进行了编译,就可以将这些Pyrex语言模块导入常规的 Python 应用程序并使用。与直接用C编写扩展相比,Pyrex允许在同一代码中更无缝地混合C级别的变量和Python级别的变量对象。扩展模块Psyco还可以插入Python解释器的内部,让它运行得更快。Python语言非常接近人类的自然语言。Python源程序被称作可执行的伪代码,具有极高的可读性。许多特性帮助你降低了产生错误的可能性。你相信这是一段python程序吗: member and folder is not object and object. displayContentsTab() 脚本语言通常有轻便灵活的特点。Python是平台兼容,高度可移植的,可以运行在许多Unix 变体,Mac,MS-DOS,Windows,嵌入式等平台。Python 2.0增加了对Unicode支持。Python社区还为你提供了最佳的工具和商业应用的秘密武器。win32all 作为Python在Win32 平台上的扩展,可 以很方便调用Win32 API和COM对象。用VB.NET可以做到的,通过win32all一样可以方便的实现。.NET 平台的Common Language Runtime(CLR)可以运行多种语言。Python for .NET可以与.NET框架互操作。譬如,如果Python类是公用的,Visual Basic程序员便能够继承它。JPython(Jython)是CPython(Python)语言的100%纯Java实现,可以运行在任何支持 JVM 的平台 上;它结合了Python及Java虚拟机和库的优点,并作为Java平台的方便补充,可以完全利用 JRE提供的所有类和API。Jython非常容易学习和使用,它的生产力在于结合了脚本语言Python的易用性与Java平台的健壮性。同Java一样Jython程序可以编译成Java字节码,增强了Java的字符串和文本支持功能使它成为Java程序最理想的嵌入脚本语言。J P y t h o n 函数设计(Functional programming)也为Java提供了强大和灵活的编程样式,共享了Python特有的动态特性,甚至可 以在运行时改变基类。现在可以得到的稳定版本是Jython 1.1。Python 2.3.4 (May 27, 2004)是最新的生产版本。活跃的Python一直在不断的进化之中。我们总是可以在Python中发现和体验当今最热门的新技术:未来的Python 3.0可能因为PyPy(implementingPython in Python)而引起语法上的激进变化。甚至有可能加入JIT(Just-In-Time, 运行时编译执行的技术,Java语言即采用该技术)编译支持。Guido 在个人的Blog里,提出敏捷编程Python化(Pythonic Agile Programming)。Python的某些特征专门适合敏捷开发(单元测试框架unittest,文档字串pydoc以及它支持的 inspect都是标准库的一部分)。Python已经集成在大多数Linux发行版中。RedHat 使用Python制作安装程序Anaconda(蟒蛇)。Gentoo的emerge 和portage 使用Python构建完整的系统。所有运行Mac OS X的Apple计算机的基本安装都包括Python。HP和Compaq的很多机器使用Python进行服务管Zope应用服务器是Python构建复杂系统的最佳实例。Plone内容管理系统是Zope应用最广泛的产品。Zope和Plone方案成了O'Reilly Open Source Conference2004 的明星。BitTorrent使得Python更加出名和流行。BT完美地应用了Python相关的多种解决方案:设计优雅、跨平台的语言和标准网络库的强力支持,wxPython跨平台的GUI,用py2exe绑定虚拟机并编译为可执行程序发布。RealNetworks的开源项目Helix 播放器(RealOne)用Python构建应用系统。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ThreadLocal的进化——TransmittableThreadLocal

    上一篇文章中,我们谈到了 InheritableThreadLocal,它解决了 ThreadLocal 针对父子线程无法共享上下文的问题。但我们可能听说过阿里...

    健程之道
  • ThreadLocal的进化——InheritableThreadLocal

    之前有介绍过 ThreadLocal,JDK 后来针对此做了一个升级版本 InheritableThreadLocal,今天就来好好介绍下。

    健程之道
  • 数据结构|用java自己手写实现一个栈

    本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得...

    微笑的小小刀
  • java基础|验证ArrayList的线程不安全

    本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得...

    微笑的小小刀
  • 原创 | 万万没想到,HashMap默认容量的选择,竟然背后有这么多思考!?

    集合是Java开发日常开发中经常会使用到的,而作为一种典型的K-V结构的数据结构,HashMap对于Java开发者一定不陌生。

    敖丙
  • 聊聊rocketmq的RemotingCommandException

    本文主要研究一下rocketmq的RemotingCommandException

    codecraft
  • 聊个程序员的话题

    最近看几个微信群的气氛很不对,大家也不要气馁,我们聊个程序员的话题,这是我对程序员的认识,希望对找工作的朋友或即将从事这一行的朋友,有所启发。

    icepy
  • Linux/MacOs 下常用命令学习

    本文总结一下常用的Linux文件操作指令,为后面的hadoop集群搭建做准备。本着够用即可的原则,文中所列出的命令只总结其常见用法,点到为止。如果需要进一步的学...

    超哥的杂货铺
  • USACO美国信息学奥赛第一场月赛(2019-12)正在进行中

    2019-2020美国信息学奥赛第一场月赛的比赛时间为美国时间2019年12月13 日8:00~2019年12月16日23:59(北京时间为2019年12月13...

    海天一树
  • java基础|验证i++的线程不安全

    本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得...

    微笑的小小刀

扫码关注云+社区

领取腾讯云代金券