当前位置:首页>开发>正文

Ruby语言是什么,有什么特点和优势 Ruby 和 Python 相比有什么优势和缺陷

2023-04-17 20:31:24 互联网 未知 开发

 Ruby语言是什么,有什么特点和优势 Ruby 和 Python 相比有什么优势和缺陷

Ruby语言是什么,有什么特点和优势?

Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License

Ruby 和 Python 相比有什么优势和缺陷?

Ruby 和 Python 太相似了,取舍大部分都是个人喜好上的原因。比如我就觉得 Python 的 逗There is only one way to do it.地 比 Ruby 的 逗There are many ways to do it.地 要好,这不光是考虑团队协作的问题,更重要的是自己能很快明白自己三个月前写的没有任何注释的代码是在干什么。当然也有很多人觉得自由和灵活要比可读性来的重要,所以我说这个是个人喜好的原因。
客观上的 Ruby 比 Python 的优势我想到的有这么几个:
Block 应该是语言层面上 Ruby 比 Python 更酷的地方,Python 的匿名函数(lambda function)制约太多,属于鸡肋(BFDL GvR 不认可函数式编程的许多方面)。
OS X 上的话,Ruby 比 Python 最重要的优势可能是 MacRuby () 的存在。我大胆猜测以后 MacRuby 将成为 Objective-C 之外(如果不是完全替代的话)的苹果官方语言。MacRuby 除了能更加方便快捷的创建 Cocoa 应用外,ruby block 使得利用 OS X 的 Grand Central Dispatch 变得容易,在以后的多核、混合核(CPU GPU)应用上非常重要。
劣势:
Ruby 的硬伤之一在于性能。官方实现 Ruby 1.9 比 CPython 逊色不少。另外 Python 拥有诸如 Numpy, Psyco, PyPy, Cython 等多种性能倍增的途径,相比之下 Ruby 想要提高性能的途径则非常有限。
Ruby 的硬伤之二在于第三方包。Ruby 传入英语世界并大规模流行起来的时间不长,大部分的第三方包都和 Web 相关,Web 领域外的包数量远远不及 Python。特别是在科研等方面的区别非常明显,很多学科领域都有基于 Python 的成熟应用,而几乎找不到 Ruby 的相关包。这除了历史渊源,也和 Python 更加简洁的语法(很多用 Python 做研究的人不是计算机专业的)以及前述的性能倍增器(主要是 Numpy 和 Scipy)有密切的关系。

ruby语言的优缺点

完全面向对象
在Ruby语言中,任何东西都是对象,包括其他语言中的基本数据类型,比如整数
变量没有类型
Ruby的变量可以保存任何类型的数据。
任何东西都有值
不管是数学或者逻辑表达式还是一个语句,都会有值。
ruby语言很优雅,可以做到不需要注释就可以读懂。
优点
语法简单
普通的面向对象功能(类,方法调用等)
特殊的面向对象功能(Mixin,特殊方法等)
操作符重载
错误处理功能
迭代器和闭包
垃圾回收
动态载入(取决于系统架构)
可移植性高.不仅可以运行在多数UNIX上,还可以运行在DOS,Windows,Mac,BeOS等平台上
适合于快速开发,一般开发效率是JAVA的5倍

更详细的你可以看这个文档htt p://w ww.alo nely.com.c n/Ruby/2 01 60821/ 131 59.ht ml

Ruby为什么比Python成功

本文从RoR对Ruby的影响、Ruby的优势等多个角度分析了Ruby比Python成功的原因。
伴随着RoR的风行,Ruby语言受到越来越多的开发者的关注,同为脚本语言,Python的地位却略显尴尬,什么样的原因,造成了这样的局面?

笔者认为有以下几个方面:
一、 RoR的推波助澜
笔者认为,Ruby的成功,很大一部分是由于RoR的带动。
几年前,如果你没听过RoR倒是情有可原,但如果今天,RoR对你来说,还是一个陌生词汇的话,那你就有点危险了。:)

什么是RoR呢?
全称,Ruby on Rails,简称,RoR或者Rails。
它是个全栈的(full-stack)web应用框架,它为开发者提供了构建一个web应用所需的完整基础结构,并且严格按照MVC(模型-视图-控制器)架构进行开发。
RoR致力于提高开发者的开发效率,希望通过尽量少的代码,完成尽可能多的功能。基于这样的考虑,RoR有两大设计原则,一是,不要重复自己 (Dont Repeat Yourself);二是,惯例优于配置(Convention Over Configuration)。
使用RoR,你甚至可以通过简单的几条命令行、几行代码,就完成一个功能强大的web应用程序,这极大地提高了开发者的开发效率。
2004年7月,RoR一经发布,在短期内,便受到很多开发者的追捧。时至今日,RoR已经被全世界的开发者们所关注,它带给开发者的效率提升,是前所未有的;它带给业界关于软件开发的思考,也是意义深远的。
在RoR如此风行的大背景下,Ruby on Rails,这个需要使用Ruby进行开发的web框架,也自然地带动了Ruby语言的发展。
在下面的“Ruby语言受关注程度趋势图”上,可以清晰地看出,Ruby语言在RoR发布也就是2004年7月后,进入了高速发展期。
Ruby因为有了RoR这样的“杀手级”应用,变得春风得意,那么Python呢?
在《浅谈Python语言》一文中,我们提到了Python具有丰富的API库,在web开发方面,也有Django、Turbogears这样的一些框架,就运行速度而言,
Python比Ruby快;就社区而言,Python也比Ruby成熟,可是为什么Python没有产生一个像RoR这样的“杀手级”应用呢?

Python语言的创始人Guido在接受InfoQ采访时,是这样解释的:

“我不喜欢Killer
Application,因为那会让多数人或者社区将精力集中于一个地方。Python是一个应用广泛的语言,基于Python已经产生了很多好用的
Web框架,比如Django等。但是Python不Killer
Application,至少目前是这样,而且我相信随着Python社区的发展,会有很多Killer
Applications自然出现。我喜欢多样化的应用。”

通过这个观点,我们可以看出Python在其发展道路上,追求的是一种均衡,一种“大而全”。
“会有很多Killer Applications自然出现”,这点,我想我们需要拭目以待。单就“均衡”而言,笔者认为这很危险,作为一门脚本语言,试图做Java之类传统语言做的事情,不太可取。

以Java为例,在web应用上,有太多的框架可供选择,不错,“在不同的场景用不同的框架”,这想法很好。可是,在实际应用中,有多少开发者可以根据项目特点,正确、合理地选择框架?

与其到最后,用户还不知道该如何选择,还不如一开始就替用户做出一个选择。
作为Python的使用者,我更愿看到有个Python的“杀手级”应用出现,进而带动Python更快速地发展。

你可以说RoR成就了Ruby,可是Rails为什么偏偏选择了Ruby?!Ruby优势何在?

二、 Ruby的优势
1. 比Perl更强大,比Python更面向对象
“比Perl更强大,比Python更面向对象”,这是Ruby创始人Matz设计Ruby的初衷。
Python既支持面向过程的编程也支持面向对象的编程,而Ruby则是完全面向对象。
在Ruby中,任何东西都是对象,包括Python中的基本数据类型;每个过程或函数都是方法。
例如,取-3的绝对值,在Python中,是这样的:abs(-3)。
而在Ruby中,则是这样的:-3.abs。这种OO的方式,显得更加直观。

2. 强大的语法功能
单就语法的简单性而言,Ruby不及Python。但解决一些较复杂的问题,Ruby强大的语法功能,有助于降低问题的复杂度。
例如:
Ruby以“块”的方式来实现列表内的条件、循环语句,比Python的更灵活、更具通用性。
Ruby具有类似Lisp的彻底的函数方式的条件、循环语句等。
Ruby的迭代器功能可以将流程控制结构抽象化。

3. 强大的字符串处理、正则表达式功能
Matz认为:Ruby > (Smalltalk Perl) / 2。
Ruby类库是对Perl语言功能的面向对象方式的重组,因为借鉴了很多Perl的东西,使得字符串处理、正则表达式这块,Ruby同样强大。

4. 不会僵住的“胶水语言”
同样是“胶水语言”,Ruby比Python更灵活。
使用过一段时间的Python,你会发现,Python比较依赖第三方的东西。相比较,Ruby则更依赖自身。例如,Ruby可以使用(UNIX的)绝大部分的系统调用,单独使用Ruby也可以进行系统编程等。

有优势,Ruby就一定可以成功了?Python同样也有很多优势!对,还得看当时所处的环境。

三、 时势造英雄
这点还得回到RoR的崛起。
Ruby,1995年12月正式发布,2000年进入美国;2004年7月,RoR正式发布。
RoR的出现时间,值得玩味。
在下面的“Java语言受关注程度趋势图”上,可以看到,2004年7月前后,Java处于一个相对“衰退期”。
提到Java,大家应该都会想到J2EE。
J2EE应用程序的广泛实现是从1999、2000年开始的,它的出现带来了诸如事务管理之类的核心中间层概念的标准化,但是因其开发效率、学习难度和实 际性能的问题,在实践中没有获得完全的成功。作为J2EE核心技术的EJB(2.x),更是因其高昂的学习代价、极低的开发效率和极高的资源消耗,备受指 责。

在这样一个大背景下,2003年,Spring框架诞生了。
Spring的设计思想在于“使J2EE开发更加简单”。这个设计思想,在包括Java领域在内的众多软件开发领域引起了广泛关注。软件开发者们开始思考,如何让开发向着一个更简单的方向发展。
RoR在这一时期出现,无疑是顺应了这样一个潮流。
可以这么说,是历史选择了RoR,当然也选择了Ruby。

遇到合适的机遇,还不够,俗话说得好:“众人拾柴火焰高”。

四、 众星捧月
Ruby的出现,受到了两大主流平台Java和.NET的极力追捧。
2006年9月,SUN雇佣了JRuby的主要开发者Charles Nutter和Thomas Enebo;一年不到,2007年6月14号,JRuby 1.0正式发布。SUN在其Java IDE NetBeans 6.0 M10中,更是集成了对Ruby/JRuby的支持。反观Python的Java实现——Jython,则没有这么幸运,发展至今,它并没有得到SUN的 支持。

而Microsoft,也在2007年7月,推出了Ruby的.NET实现——IronRuby的预览版。
相信SUN和Microsoft对Ruby的竞相推崇,必然推动Ruby的进一步发展。

基于以上几点,笔者认为Ruby的成功不是偶然,并且相信这样的成功还会持续下去。对于Python的未来,我们也将拭目以待。

与Ruby 相比,NodeJS 有哪些优势

Google JS Runtime 非常快
nodejs 默认 async(异步),有些时候快一些
适合 one page app (比如gmail那样的)我觉得的是更适合ajax所以才这样
语言统一,不用前后台换来换去,都是javascript(有人不喜欢javascript,可以学 coffee script),同时和mongodb结合比较好(相比SQL)。现在有一个MEAN stack: mongodb, express, angular and nodejs,貌似学好了很厉害。
Ruby on Rails优势

成熟,gem很好很多很全(不过nodejs现在用的人越来越多了)

会的人比较多(至少再美国)
学起来相对比nodejs要容易。nodejs的 abstraction(抽象?)比RoR少,还涉及到 callbacks(因为是异步)
移动端可能要求ajax多一些(如果你不做 native app),这个主要是前台设计(个人认为)。如果是点评网站的话,我觉得可能 Ruby on Rails 还是更合适一些。

最新文章