《Python核心编程(第二版)》——1.7 比较Python(Python与其他语言的比较)

1.7 比较Python(Python与其他语言的比较)

Python已经和很多语言比较过了。一个原因就是Python提供了很多其他语言拥有的特性,另外一个原因就是Python本身也是由诸多其他语言发展而来的,包括ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell和其他的脚本语言,等等。Python就是“浓缩的精华”:Van Rossum研究过很多语言,从中吸收了许多觉得不错的特性,并将它们溶于一炉。

然而,往往因为Python是一门解释型语言,你会发现大多数的比较是在Perl、Java、Tcl,还有JavaScript之间进行的。Perl是另外一种脚本语言,远远超越了标准的shell脚本。像Python一样,Perl赋予了你所有编程语言的功能特性,还有系统调用能力。

Perl最大的优势在于它的字符串模式匹配能力,其提供了一个十分强大的正则表达式匹配引擎。这使得Perl实际上成为了一种用于过滤、识别和抽取字符串文本的语言,而且它一直是开发Web 服务器端CGI(common gateway interface,通用网关接口)网络程序的最流行的语言。Python的正则表达式引擎很大程度上是基于Perl的。

然而,Perl语言的晦涩和对符号语法的过度使用,让解读变得很困难。这些语法令初学者不得精要,为他们的学习带来了不小的阻碍。Perl的这些额外的“特色”使得完成同一个任务会有多个方法,进而引起了开发者之间的分歧。最后,通常当你想阅读几个月前写的Perl脚本的时候都不得不求助参考书。

Python也经常被拿来和Java作对比,因为他们都有类似的面向对象的特性和语法。Java的语法尽管比C++简单的多,但是依旧有些繁琐,尤其是当你想完成一个小任务的时候。Python的简洁与纯粹使用Java相比提供了更加快速的开发环境。在Python和Java的关系上,一个非常重大的革命就是Jython的开发。Jython是一个完全用Java开发的Python解释器,现在可以在只有Java虚拟机的环境中运行Python程序。我们会在后面的章节中简单讲述Jython的更多优点,但是现在就可以告诉你:在Jython的脚本环境中,你可以熟练地处理Java对象,Java可以和Python对象进行交互,你可以访问自己的Java标准类库,就如同Java一直是Python环境的一部分一样。

现在,由于Rails项目的流行,Python也经常被拿来和Ruby进行比较。就像前面我们提到的,Python是多种编程范式的混合,它不像Ruby那样完全面向对象,也没有像Smalltalk那样的块,或许这正是Ruby最引人注目的特性。Python有一个字节码解释器,而Ruby没有。Python更加易读,而Ruby事实上可以看作是面向对象的Perl。相对于Rails,Python有几个自己的Web应用框架,比如Django和Turbogears这两个项目。

Tcl是另一种可以与Python相提并论的脚本语言。Tcl是最易于使用的脚本语言之一,程序员很容易像访问系统调用一样对Tcl语言进行扩展。Tcl直到今天仍然很流行,与Python相比,它或许有更多局限性(主要是因为它有限的几种数据类型),不过它也拥有和Python一样的通过扩展超越其原始设计的能力。更重要的是,Tcl通常总是和它的图形工具包Tk一起工作,一起协同开发图形用户界面应用程序。因为它非常流行,所以Tk已经被移植到Perl(Perl/Tk)和Python(Tkinter)中。同样有一个有争议的观点,那就是与Tcl相比,因为Python有类、模块及包的机制,所以写起大程序来更加得心应手。

Python有一点点函数化编程(functional programming ,FP)结构,这使得它有点类似于List或Scheme语言。尽管Python不是传统的函数化编程语言,但它持续地从Lisp和haskell语言中借用一些有价值的特性。举例来说,列表解析就是一个广受欢迎的来自Haskell的特性,而Lisp程序员在遇到lambda、map、filter和reduce时也会感到异常亲切。

JavaScript 是另外一种非常类似Python的面向对象脚本语言。优秀的JavaScript程序员学起Python来易如反掌。 聪慧的读者会注意到JavaScript是基于原型系统的,而Python则遵循传统的面向对象系统,这使得二者的类和对象有一些差异。

下面列出了有关Python与其他语言进行比较的网页。
Perl

http://www2.linuxjournal.com/article/3882

http://llama.med.harvard.edu/~fgibbons/PerlPythonPhrasebook.html

http://aplawrence.com/Unixart/pythonvsperl.html

http://pleac.sf.net/pleac_python

http://www.garshol.priv.no/download/text/perl.html
Java

http://dirtsimple.org/2004/12/python-is-not-java.html

http://twistedmatrix.com/users/glyph/rant/python-vs-java.html

http://netpub.cstudies.ubc.ca/oleary/python/python_java_comparison.php
Lisp

http://strout.net/python/pythonvslisp.html 

http://norvig.com/python-lisp.html
Ruby

http://blog.ianbicking.org/ruby-python-power.html

http://www.rexx.com/~oinkoink/Ruby_v_Python.html

http://dev.rubycentral.com/faq/rubyfaq-2.html
Perl、C++

http://strombergers.com/python/
Perl、Java、C++

http://furryland.org/~mikec/bench/
C++、Java、Ruby

http://dmh2000.com/cjpr
Perl, Java, PHP, Tcl

http://www-128.ibm.com/developerworks/linux/library/l-python101.html

http://www-128.ibm.com/developerworks/linux/library/l-script-survey/
C、C++、Java、Perl、Rexx、Tcl

http://www.ubka.uni-karlsruhe.de/indexer-vvv/ira/2000/5

你可以在下面的网址中看到更多Python与其他的语言的比较:

http://www.python.org/doc/Comparisons.html

时间: 2024-10-30 20:26:30

《Python核心编程(第二版)》——1.7 比较Python(Python与其他语言的比较)的相关文章

拒绝从入门到放弃_《Python 核心编程 (第二版)》必读目录

目录 目录 关于这本书 必看知识点 最后 关于这本书 <Python 核心编程 (第二版)>是一本 Python 编程的入门书,分为 Python 核心(其实并不核心,应该叫基础) 和 高级主题 两大部分,以 Python 2.x 作为主要演示版本,涵盖的知识面广,知识点较齐全,代码多且好理解,但对 Python 版本特性的内容太久远,不合时宜. 整体来说 Python 核心 部分是主要内容,高级主题 部分作为应用扩展内容.后半部分篇幅较短,内容不够深入,只到了解的层面,好在横向够广(每一个主

Python核心编程学习笔记之映射类型(上)

 根据核心编程第二版学习Python3.x的内容,可能有些欠缺,有些方法在3.x中已经不提供了,就暂时先略过了.等以后再对比2.x和3.x的区别,作下笔记吧 1.    Python中字典的定位: a)      字典是python中唯一的映射类型,通常被认为是可变的哈希表. b)     字典对象是可变的,能存储任意多个python对象. c)      字典是Python中最强大的数据类型之一 2.    字典(dict)和序列类型容器类(列表和元组)的区别: a)      存储和访问数据

《Python核心编程(第二版)》——导读

前 言 欢迎走进Python核心编程 我们很高兴能帮你尽快并尽可能深入地学习Python.掌握语法是本书的一个目标,不管怎样,我们都坚信,哪怕是一个初学者,只要他能掌握Python的运作机理,他就不再仅仅是用Python"编写",而是能开发出更高效的Python应用程序.但是你知道,并不是掌握了一门语言的语法就能让你立刻登堂入室. 在本书中,你能发现许多可以立即上手的例子.为了巩固基础,你还会在每章的末尾找到有趣又富有挑战性的习题.这些初级和中级水平的习题可以检验你的学习效果,并且提升

python核心编程--笔记(不定时跟新)

的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找python路径 1.4 –v   冗余输出(导入语句详细追踪) 1.5 –m mod 将一个模块以脚本形式运行 1.6 –Q opt 除法选项(参阅文档) 1.7 –c cmd 运行以命令行字符串心事提交的python脚本 1.8 file   以给定的文件运行python脚本 2 _在解释器中表示最后一个表达式的值. 3 prin

《Python核心编程(第二版)》——1.5 运行Python

1.5 运行Python 有三种不同的办法来启动Python.最简单的方式就是交互式的启动解释器,每次输入一行Python代码来执行.另外一种启动Python的方法是运行Python脚本.这样会调用相关的脚本解释器.最后一种办法就是用集成开发环境中的图形用户界面运行Python.集成开发环境通常整合了其他的工具,例如集成的调试器.文本编辑器,而且支持各种像CVS这样的源代码版本控制工具. 1.5.1 命令行上的交互式解释器 在命令行上启动解释器,你马上就可以开始编写Python代码.在Unix,

《Python核心编程(第二版)》——1.3 特点

1.3 特点 尽管Python已经流行了超过15年,但是一些人仍旧认为相对于通用软件开发产业而言,它还是个新丁.我们应当谨慎地使用"相对"这个词,因为"网络时代"的程序开发,几年看上去就像几十年. 当人们询问:"什么是Python?"的时候,很难用任何一个具象来描述它.人们更倾向于一口气不加思索地说出他们对Python的所有感觉,Python是____(请填写),这些特点究竟又是什么呢?为了让你能知其所以然,我们下面会对这些特点进行逐一地阐释.

《Python核心编程(第二版)》——第1部分 Python核心 第1章 欢迎来到Python世界 1.1 什么是Python

第1部分 Python核心 第1章 欢迎来到Python世界 本章主题 什么是Python Python的起源 Python的特点 下载Python 安装Python 运行Python Python文档 比较Python(与其他语言的比较) 其他实现 开篇将介绍一些Python的背景知识,包括什么是Python.Python的起源和它的一些关键特性.一旦你来了兴致,我们就会向你介绍怎样获得Python,以及如何在你的系统上安装并运行它.本章最后的练习将会帮助你非常自如地使用Python,包括使用

《Python核心编程(第3版)》——导读

前 言 欢迎各位读者打开本书 很高兴各位读者能够允许我们来帮助你们尽可能快.尽可能深入地学习Python.Core Python系列图书的目标不只是教会开发人员Python语言,我们还希望各位读者能够形成足够的知识库,从而能够开发任何应用领域的软件. 在其他的Core Python系列图书(Core Python Programming和Core Python Language Fundamentals)中,我们不仅向读者讲授Python语言的语法,还希望读者能够深入掌握Python的运行机制.

《Python核心编程(第3版)》——1.3 正则表达式和Python语言

1.3 正则表达式和Python语言 在了解了关于正则表达式的全部知识后,开始查看Python当前如何通过使用re模块来支持正则表达式,re模块在古老的Python 1.5版中引入,用于替换那些已过时的regex模块和regsub模块--这两个模块在Python 2.5版中移除,而且此后导入这两个模块中的任意一个都会触发ImportError异常. re模块支持更强大而且更通用的Perl风格(Perl 5风格)的正则表达式,该模块允许多个线程共享同一个已编译的正则表达式对象,也支持命名子组. 1

《指针的编程艺术(第二版)》一第一篇 C语言篇

第一篇 C语言篇 指针的编程艺术(第二版)C语言最早是在AT&T(American Telephone and Telegraph,美国电话与电报公司)内部使用的语言,但为了发布UNIX操作系统,不得不公开这一程序语言.主导这语言的两个灵魂人物,分别是Dennis Ritchie与Brian Kernighan.ANSI C已于1989年公布.Dennis Ritchie生于1941年,哈佛大学数学博士,是C语言之父.Brian Kernighan目前在普林斯顿大学计算器科学系(Departme