为什么人们选择Ruby而不是Java?

9

我是一个Ruby的初学者。我听到了以下关于Ruby的抱怨,希望Stack Overflow社区能够解决每个问题。

我听到的有关Ruby的常见抱怨:

  • Ruby比Java慢
  • Ruby没有静态类型
  • 它不适合大型项目

鉴于这些明显基于观点的陈述,Ruby如何比Java更好?Ruby是否会成为企业和个人广泛使用的语言?


如果你认为应该始终考虑应用程序的性能,而不是编写的代码行数/编写这些代码的容易程度,我建议你不要选择Ruby。尽管如此,我并不认为这在一般情况下是有意义的。 - Brian Mitchell
我们应该时刻关注应用程序的性能,而不是你编写的代码行数。总的来说不应该这样想!与人类(程序员)资源相比,计算能力很便宜。这就是为什么我通常使用Java而不是C ++ ;-) - Joonas Pulakka
如果有任何“主观和争议性”的内容,我会说。 - Epaga
除了静态类型问题之外,这是否对其他人来说听起来完全像过去十年的Java vs. C++ 辩论? - Bill the Lizard
@iraimbilanja:Java 项目能够保持小巧吗? :) - Bill the Lizard
显示剩余8条评论
8个回答

9
Ruby运行速度比Java慢,但写代码或读取速度更快。对您来说哪个更重要?我不知道世界上有哪家公司会拒绝如下机会:将开发时间缩短一半,代价是硬件成本增加一倍。
Ruby没有静态类型,但Python、Perl、Lisp、shell脚本等也没有。这对您是否真的是个问题?我相信您可以找到同样数量的使用动态语言的人抱怨Java、C#、C++等是静态类型的。我们有许多使用动态语言构建系统的例子。
我同意Ruby不适合大型项目,但今天的任何其他语言也不适合。软件工程的现状对我来说非常清晰:没有人能够可靠地构建大型系统。至少Ruby可以使您的大型项目在代码行数上变小,从而使它们(在某种程度上)更易于管理。它的语法更加丰富,因此您可以更接近表达自己的意思。编写速度更快,因此您将更快地了解自己是否正在走上正确的道路。
如果这些都是反对Ruby的最好论据,那么Ruby的表现比我想象中的要好。

3

Ruby的速度在最新版本中大大提高了。尽管在旧版本中,Ruby比其他脚本语言慢。


当前基准测试游戏中显示的所有Ruby实现都比该博客文章中显示的版本更新 - 它们不是旧版本!(ruby 1.8.7 ruby 1.9.1p0 jruby 1.2.0) - igouy

2

对于某些目的来说,Ruby 的运行速度太慢了。但是对于其他一些目的,它的速度已经足够快了。

对于某些应用程序来说,Java 的开发时间太长了。

对于某些应用程序而言,静态类型不必要,而对于其他应用程序则非常重要。

项目的规模在很大程度上并不重要。

从某些方面来看,Java 比 Ruby 更好,从另一些方面来看,Ruby 比 Java 更好。任何认为一个在任何情况下都“更好”的人可能对两者都不了解,无法持有有效的观点。

JRuby 又是怎样呢?

我认为现在已经相当明显了,Ruby 是“受欢迎”的。虽然不像 Java、C++ 或 C 那么“受欢迎”,但仍然很受欢迎。

请参见:


1
针对“哪种语言更好,这个还是那个?”这个问题的答案总是主观的。当然,客观性是有效的,你可以在某些方面得出关于一种语言在X任务/项目上表现更好的结论。
然而,即使如此,如果你的团队喜欢其他一些不是某项任务/项目的首选语言,但工作仍然可以完成……明智的团队会选择让他们感到愉快的语言,因为他们的生产力也会更高。
总之,没有人能告诉你他的选择比你的选择更好。他们可以试图说服你,但如果由于某种原因X语言让你更兴奋,他们无法做任何事情。
话虽如此:Ruby 1.9+在性能方面有了很大的改进。如果你问我,我的偏见意见是选择Ruby,因为我喜欢它。但如果你想要一个公正的意见,我们需要讨论更多方面,并检查你想用语言/框架等做什么。

1

我建议你尝试两种语言,然后决定哪一种更好。


0

Ruby已经是一门流行的语言了 :)

关于“我们应该始终考虑性能”和“Ruby比Java更好”的观点,我并不同意。在某些项目中,代码可读性可能比性能更重要。例如想一想优化过的C++代码,没有人能够阅读和维护。而且也没有完美的证据表明“Ruby比Java更好”。你从哪里得到这个信息的?


这是一个链接,它显示每次迭代需要86毫秒。因此,如果是一个大项目,我的应用程序会变得缓慢。客户只关心性能,不在乎代码的清晰程度。 - Manoj
有些项目确实需要考虑性能,这是客户想要的。但并不是说性能就是唯一的问题。如果客户需要经常修改应用程序,那么可维护性就非常重要了。如果您只关心性能,我建议使用C++ :) - Gant
C++?慢。汇编会更好,机器码可能是最好的选择。当然,这可能要等到22世纪才能交付... - Mike Woodhouse

0
Ruby比Java“更好”在哪里?
实际上并没有,Java也不比Ruby“更好”。两者都有其优缺点,具体取决于你的项目;什么是最适合完成那项工作的最佳工具。

请告诉我Ruby的优点。 - Manoj

0

根据您需要做什么。

我们期望我们的代码能够运行数十年。坚持使用纯Java意味着我们非常确定这些技术将保持“时尚”,未来的同事可以维护代码。选择当今流行的语言,最终意味着您将拥有用已经过时的语言编写的程序,因此更难以维护。

“纯Java”基本上意味着我们坚持使用标准Java运行时和Sun规范的实现(如JavaServer Faces)。它并不像听起来那么无聊 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接