2022年Perl、PHP、Python、Java和Ruby的比较 .pdf

上传人:Che****ry 文档编号:34263664 上传时间:2022-08-15 格式:PDF 页数:7 大小:122.90KB
返回 下载 相关 举报
2022年Perl、PHP、Python、Java和Ruby的比较 .pdf_第1页
第1页 / 共7页
2022年Perl、PHP、Python、Java和Ruby的比较 .pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《2022年Perl、PHP、Python、Java和Ruby的比较 .pdf》由会员分享,可在线阅读,更多相关《2022年Perl、PHP、Python、Java和Ruby的比较 .pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Perl、PHP、Python、Java 和 Ruby 的比较 语言的发展趋势一定是动静结合、刚柔并济 Perl凝练晦涩, Python 优雅明晰, Ruby精巧灵动, PHP简明单纯 或许优雅正是来自对细节和规范的重视 (RoR) 与 Ruby结合之后,便如一只猱身而上灵猫,立刻衬托出Java 和.NET 大象般的身影提问 Perl 、Python 、Ruby和 PHP各自有何特点 ? 为什么动态语言多作为轻量级的解决方案? LAMP为什么受欢迎? Ruby on Rails为什么会流行? 编程语言的发展趋势是什么? 讲解“剩下四种动态语言,我们将之归为后台脚本语言。”冒号说着画了张图表引号

2、 听得仔细: “我记得您开始是把这些语言划分为C族静态语言、 非 C族静态语言和动态语言三类的。”冒号 解释:“那是按语法来划分的,偏重理论; 现在是按应用来划分,偏重实践。”名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 句号 旋即联想到:“这种分法貌似三层架构前台语言对应表现层; 平台语言和后台脚本语言对应业务逻辑层; 系统语言对应数据层。”“的确有几分神似,但千万不可混淆。”冒号 提醒道,“三层架构(three-layer

3、 architecture)是模块设计上的逻辑划分1;而这里是按语言应用范围进行的物理划分与用户交互的是前台语言,与机器交互的是系统语言,介于其中的为前台提供服务同时又需要底层系统服务的是后台语言。”逗号 询问:“后台语言又细分成平台语言与后台脚本语言?”“这是基于程序(program) 与脚本 (script)、静态与动态而分的。”冒号 进行说明, “其实 Perl ,PHP ,Python 和 Ruby都有自己的虚拟机(virtual machine) ,从这种意义上说它们也可作为平台语言。但在实际应用中,它们没有Java 平台和 .NET 平台那种整合凝聚力和核心作用,通常作为轻量级的解

4、决方案。”问号 想探个究竟:“这是由于它们都是动态语言的缘故吗?”冒号 回答:“理论上动态语言同样能承担大型应用,但实践上它们多作为粘合语言或用于中小型应用。 用句时髦的话来形容,暂时还是主流的配角或非主流的主角。毕竟在运行效率、类型安全、可用资源、开发工具、技术支持等方面,它们与Java、C#相比尚有一定差距。另外它们同属草根语言,虽有开源社区的大力支持,在影响力上与后者未可同日而语。”叹号 揣测:“说不定在不久的将来,动态语言也会成为主流的主角。”“世易时移,殊难逆料。但有一点可以肯定,语言的发展趋势一定是动静结合、刚柔并济 。” 冒号 断言,“ 一方面以Java 和 C#为代表的静态语言

5、中嫁接了动态语言的枝条; 另一方面以Java 和.NET 为代表的平台与动态语言的交壤地带也在逐步扩大。 比如 JRuby 允许Ruby与 Java 之间互相调用,类似的还有Jython 、 IronRuby 、IronPython等等。此外值得一提的是, 动态语言最活跃的舞台当数LAMP , L-A-M-P 。”引号 接茬:“ L 是 Linux ,A是 Apache,M是 MySQL ,P是 PHP 。这四大组件形成了一个完整的开源网络开发平台。”冒号 补充道:“ P也可指 Perl 、Python ,甚至 Ruby。”逗号 调侃:“可惜Ruby 的 R比 P多了一根尾巴。”“有人为了自圆

6、其说,干脆让P表示 Programming language ,这下所有语言都囊括其中了。老外就喜欢玩这种首字母缩略(acronym) 的文字游戏, 尤其 LAMP正好还有灯 的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 含义,寓意开源世界的一盏明灯,他们一定更得意了。”冒号 语带调笑,“前面我们曾提及,网络应用是生长动态语言最肥沃的土壤,而LAMP就是这块土壤上搭建的平台。作为网络平台, LAMP 以其开放灵活、开发迅速、

7、部署方便、高可配置、安全可靠、成本低廉等特色而与 Java 平台和 .NET平台鼎足三分,尤其受中小企业的欢迎。LAMP中 Linux 是操作系统,Apache 是 Web服务器, MySQL 是数据库系统,而我们当下最关心的是P族语言: PHP 、Perl 、Python 还有 Ruby。”问号 建议:“作为动态语言, 它们的共性上节课已经谈了不少,能说说它们的个性吗?”“它们的个性极为鲜明:Perl凝练晦涩, Python 优雅明晰, Ruby 精巧灵动, PHP简明单纯 。先看老大哥Perl ,它博采众家之长,综合了C语言的结构、 sed 的正则表达式、AWK的关联数组 (associa

8、tive array)、Lisp 的表 (list)和 Unix Shell的命令,此外还有借鉴了一种语言,你们知道是哪种吗?”冒号忽然卖了个关子。逗号 猜想:“应该是某种OOP语言吧。”“Perl 中确有不少C+的影子,但它的对象模型在5.0 以后才引入,典型的半路出家,远不如前面的特征那么自然。与其说是一种自然而然的发展,不如说是在OOP 潮流裹挟下的一种身不由己的迎合。真正深入骨髓的借鉴是自然语言。”冒号 给出了答案,“我们提过,Perl 的发明者Larry Wall 是一名语言学家,他认为程序语言应该与自然语言一样,简洁自然、易读易写、表达多样、不拘一格。Perl 还有不少的格言或哲学

9、,使得编程语言一改严谨刻板的面孔,散发出浓郁的人文气息。”叹号 幽了一默:“我见过Perl的代码,人文气息没闻出来,但我怀疑有乙醚气息看一会就觉得晕晕乎乎的。”众人大笑。“有人仅用一行Perl代码就实现了RSA算法,你看了那还不得当场晕倒啊?”冒号 打趣道,“ Perl 的各种魔符好似一把把锋利的剪刀,做起文本裁剪之类的工作来游刃有余。这是它最大的长处,当初Perl 就是 Wall 用来做 Unix 系统管理的,以后在CGI上的广泛应用也得益于此。这也赋予Perl 极强的粘合力,因而有internet上的胶带 (duct tape)2的说法。 它又号称瑞士军刀,精练而复杂, 实用而强大。 但

10、Perl 过于灵活自由, 缺乏规范,影响了程序的可读性、一致性、整洁性和可维护性。不熟悉该语言的固然如读天书,熟悉语言而不熟悉问题的也颇费思量。相比之下Python 被认为是Perl 有力的挑战者, 不仅在于它天然的 OO 设计和丰富的类库,更重要的是它对程序员友好度大大超过Perl 。 Python 也有一系列的被称为禅(Zen) 的哲学,不少与Perl是针锋相对的。比如:Perl 认为做一件事可以名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - -

11、- - - - - 有多种方法, 而 Python 认为一件事应该最好只有一种方法;Perl追求语言的表现力,Python追求简单优雅 ;Perl喜欢隐性暗示, Python 强调显性明示 ;Perl强调紧凑,Python 强调松散 ; Perl 的语法和语义丰富,Python 的语法和语义简单而类库丰富。或许 Python 最让人不习惯的是它对空白符敏感性。”引号 感到惊奇:“对空白符敏感?这个倒真怪异。”冒号 见惯不怪:“虽然有点违反习惯,但非常符合Python 一贯的规范简洁的风格一方面从语法上保证了良好的编码风格;另一方面,每个代码块不再需要起始的大括号或begin/end之类的,减少

12、了的代码行数。顺便插一句,另外一种优雅的语言Haskell同样对空白符敏感,或许优雅正是来自对细节和规范的重视吧。此外许多人抱怨Python 中的自引用 self太多,殊不知这也是它倡导显式表达的一种体现。总的看来,Python 主要的问题还是在性能效率上不尽如人意。”叹号 好奇地问:“ Ruby怎么样 ?据说它将取代Java。”“不要轻言 取代 二字。 ”冒号 规诫道, “Java 没有取代C+ ,也不会被Ruby取代,至多只是一种再分配。不过Ruby的确是门很可爱的语言,兼具Perl 的表现力和Python 的可读性。Ruby 背后最具特色的理念是:关注程序员使用语言时的感受超过语言本身的

13、功能。通俗地说,兵器的称手比锋利更重要; 文雅地说,应给予程序员更多的人文关怀。就拿代码块(block)和迭代器 (iterator)来说, 虽然均非Ruby首创, 但其语法最为赏心悦目。类似的例子比比皆是。Ruby的元编程能力特别强,也是它高度灵活的一种体现,但并不是所有人都喜欢这种风格。Ruby的主要弱点有两个:一个与Python 类似,在性能上还有待提高; 另一个是它的线程由用户空间(user space)而不是内核空间(kernel space)来管理 3 ,不能充分利用多核或多CPU 。真正让Ruby 变得炙手可热的是web应用框架 Ruby on Rails(RoR)的成功,它们还

14、催生了Java 平台上的 Groovy 语言和 Groovy on Grails框架。 RoR奉行的CoC(Convention over Configuration)和 DRY(Don t repeat yourself )原则以及MVC 架构看似了无新意,但与Ruby结合之后,便如一只猱身而上灵猫,立刻衬托出Java 和.NET大象般的身影。”逗号 有些怀疑 :“框架竟然捧红了语言,框架真有这么重要吗?”“如果 web应用中动态页面较少或业务逻辑不复杂,框架的价值并不大。以前 CGI编程就是往 Perl 之类的代码中嵌入HTML代码,如同Java 中的 Servlet;PHP则单纯地在HT

15、ML代码中插入PHP代码,如同早期的JSP。没有 MVC ,也不管什么三层架构,更没有ORM 。但是”冒号拖了个转折音,“一旦业务逻辑变得复杂,开发人员增多,手工作坊式编程开始捉襟见肘,引入框架这个流水生产线来提高生产力便是大势所趋。”名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - 句号 不解:“我想Perl 、Python 和 PHP一定也有不少框架,Java 中的框架更是泛滥成灾, 何以独独 RoR脱颖而出 ?”冒号 作出分

16、析:“正值web2.0 和敏捷开发 (agile development)的概念流行之际,RoR将 AJAX与 Ruby组合在一起成为绝佳的回应。以前各种web应用框架是不少, 但在 RoR之前轻量级套餐式解决方案并不多。Perl 中的 Catalyst、 Python 中的 Pylon 还有 PHP 中的 CakePHP等应是效仿之作。因此RoR出现的时机可说是不早不晚,正当其时。此外,Perl和 PHP由于过于流行, 反而有不少的历史包袱,人们习惯了将表示逻辑和业务逻辑编织在一起。至于Java 企业解决方案,框架太多,搭配组合更多,增加了选择的难度。即使采用最常见的轻量级 SSH(Stru

17、ts+Spring+Hibernate)组合,维护起来也比RoR繁杂得多。”叹号 愈发担忧:“听这意思,Java 还是危险啊 ! ”“言之过早。” 冒号 不以为然, “首先 RoR还有待进一步检验,目前无论是应用广度还是深度上尚无法与Java 相提并论 ; 其次 Java 在性能、安全等方面还是有不少优势,而这些对于大型和关键性的应用来说尤为重要。即使在中小型web应用中, RoR较之 PHP还远为不及。”问号接下话题:“PHP为何如此流行 ?”“因为它简单、专一。”冒号 答得很干脆, “与 Python 和 Ruby一开始就定位通用语言不同, PHP是专为网络而生的。同早期的Perl 相似,

18、 PHP起初主要起文本过滤器的作用,只不过 Perl 多处理文件流(file stream),而 PHP多处理套接字流(socket stream)。PHP的语法简单, 且为网络应用度身定造,受到网络开发人员的追捧当在情理之中。它虽很实用很流行, 但并不完美。 比如: 变量名大小写敏感而函数名大小写不敏感; 函数命名规则不一致;不支持 namespace 和 unicode4;与 Perl 一样,它的对象模型不是先天的,直到PHP 5才真正完善 ;对线程支持不足; 相比 Perl 、Python 和 Ruby,它的功能稍显单薄等等。”引号 突然想起:“我记得您在第一堂课提到PHP还能用于桌面应

19、用。”“不仅 PHP ,Perl 、 Python 还有 Ruby,都能作为前台语言来开发命令行或图形界面的应用。同样地, VB 、Delphi和 JavaScript也能作为后台语言。现代的程序语言既有自己的专长, 又向通用化和全能化发展,以争取更多的生存空间。试想一下,现代的程序员又何尝不是如此呢 ?”言及于此,冒号收住话题,“语言简评告一段落,还有不少既有趣又有用的语言,在此就不一一评说了。我们看到,每种编程语言都有其独特的惯例用法和哲学理念,它们与编程范式一道形成了语言的编程风格。体悟愈深者编程语感愈强,思维与语言愈交融无碍,渐从必然王国走向自由王国。”名师资料总结 - - -精品资料

20、欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 逗号 满怀憧憬:“那是不是一种人剑合一的境界?”“或许人器合一更准确吧,程序员可不能只会一种兵器哟。” 冒号 故意抠他的字眼, “现在请大家每人写一句对本节课的感言。”众人沉思片刻,齐齐挥笔而就叹号没有最好的语言,只有最合适的语言。逗号没有糟糕的语言,只有糟糕的程序员。问号没有一种语言是万能的,只会一种语言是万万不能的。引号废除对语言的宗教信仰,建立对语言的哲学思维。句号编程就是在人脑和电脑之间寻找最佳平衡点的过

21、程。冒号读罢大悦,顺手一掌拍出五记马屁:“精彩之极! 可谓字字珠玑、句句联璧啊。兹决定,给诸位的奖赏是立时下课! ”众人欣然领赏而去。插语1 有两种三层架构,一种是three-layer architecture,一种是 three-tier architecture。它们经常换用,但其实是有分别的:前者仅仅在逻辑进行划分,而后者在物理上也进行了划分不同层次的模块运行在不同的主机上。2 不少地方译作输送带、传送带,因为duct 有输送管、 导管之意,于是想当然地认为这表明Perl 在 internet上起着输送作用。殊不知duct type专指一种万能的粘性极强的胶带,用以比喻Perl 的粘合

22、力。3 这类线程被称为绿色线程(green thread),也称伪线程。据称Ruby2.0 将支持原生线程 (native thread)。4 PHP 将在 5.3.0支持 namespace,将在 6.0 支持 unicode 。总结 比起 Java 平台和 .NET平台,动态语言轻便灵活、开发效率高,但整合凝聚力还不够,在运行效率、类型安全、可用资源、开发工具、技术支持以及影响力等方面也有一定差距,故通常作为轻量级的解决方案。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页

23、,共 7 页 - - - - - - - - - LAMP是由 Linux 、Apache、MySQL 和包括 PHP 、Perl 、Python 或 Ruby在内的脚本语言组成的网络开发平台,具有开放灵活、开发迅速、部署方便、高可配置、安全可靠、成本低廉等优点。 Perl精练、复杂、强大、灵活、自由、隐晦、表现力强,但规范性、可读性、一致性、整洁性和可维护性较差。 Python优雅规范、简洁明晰、易学易用、类库丰富,但效率稍差,有些人不喜欢它对空白符敏感的特性。 Ruby 语法精巧、高度灵活,兼具Perl 的表现力和Python 的可读性,尤其注重程序员的感受,但其性能和线程模型尚有待改进。

24、 PHP简单、 专一、 实用、 流行, 在但相比其他三种语言,在语法和功能上稍有欠缺。 RoR是一种轻量级套餐式的web应用解决方案,是由好的设计(MVC架构和 CoC 、DRY原则 ) 加上好的语言(Ruby) 在好的时机 (web2.0 和敏捷开发风行之际) 打造出的好的框架。 静态语言与动态语言从语言特征到运行环境都在逐渐融合。 程序员应该与程序语言一样,既要有自己的专长,又要向通用化和全能化发展。 编程语言惯例用法、哲学理念和编程范式形成了语言的编程风格。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁