【问题标题】:Help me validate these points regarding Ruby [closed]帮助我验证有关 Ruby 的这些要点 [关闭]
【发布时间】:2010-05-31 15:55:53
【问题描述】:

在过去的 2.3 周里,我开始学习 Ruby,我对这门语言有了一些发现。有人可以验证这些观点吗?

  1. 在许多其他高级语言中实现,例如 C、Java、.Net 等,
  2. 很慢,原因很明显,它无法击败任何已知的高级语言。
  3. 不应与任何其他高级语言进行比较。
  4. 不适合大型应用程序。
  5. 完全开源,处于萌芽状态。
  6. 有一个名为 Rails 的框架,声称它有利于敏捷开发
  7. 那里的社区一天比一天好,随着时间的推移,立即寻求帮助应该不是问题。
  8. 版本之间有许多开发人员不会立即欢迎的重大变化。
  9. 无法全面估计运行时间,因为该语言有多种语言的多个底层实现。
  10. 书籍在您完成时总是过时。

谢谢。

【问题讨论】:

  • 这里的逻辑警察:“永远不应该与任何其他高级语言进行比较。”与“很慢,原因很明显,它无法击败任何已知的高级语言。”
  • 我对结束这个问题感到有些不安。 OP 显然是一个 Java 巨魔,他只是想要一个论坛来抨击 Ruby,所以结束这个问题是完全合适的。 OTOH,问题现已结束,Ruby 社区无法直截了当地纠正这些错误陈述。
  • @Jorg:我什至希望它重新打开。没有香料的教训很快就被遗忘了。我很想听到更多来自 Ruby 人的消息。
  • @Bragaadeesh - 如果您想在 ruby​​-talk 邮件列表上发布 Ruby 人员的消息。 (但他们可能会问您为自己“验证”这些“点”做了什么。)单击页面底部的“加入此邮件列表”链接 - blade.nagaokaut.ac.jp/ruby/ruby-talk/index.shtml
  • @Jörg - 显而易见的是,OP 的点列表太神秘了。鉴于他在回复我的回答时对“大 O 表示法”的评论,他的每个观点背后可能都有可以解释的推理(不是拖钓),但他表达得不够清楚。

标签: ruby language-features


【解决方案1】:
  1. true - JRuby 是我的最爱
  2. false - 你实际上并没有说明一个明显的原因,实现之间的性能差异很大,我可以向你保证 - 有很多“高级”语言比 Ruby 慢(请注意,该语言永远不会慢 - 它是执行环境/VM 很慢)
  3. false - 许多人一直将其与 Java、Python、Smalltalk、Lisp、Perl 进行比较 - 这没什么不好
  4. false - twitter 最初是在 Ruby 中实现的
  5. 是的
  6. true - 还有许多其他出色的 Web 框架,例如 Sinatra
  7. 是的
  8. 是的 - 版本之间的变化通常确实很大,但这对于一个相对年轻的社区驱动项目来说是正常的,这不是一件坏事
  9. 是的 - 互联网上有很多基准测试 - 这是recent one
  10. 大部分时间 - Programming Ruby 1.9The Ruby Programming Language 仍然没有过时。然而,有关 Rails 的书籍很快就会过时。

【讨论】:

  • 关于 Ruby 作为一种语言的书籍在大多数情况下都还可以(Ruby 的发布周期并没有那么快。Rails 是完全不同的游戏。
  • >> 你实际上并没有说明一个明显的原因
  • Twitter 可能有一个大型数据库,但是编写 Twitter 应用程序所需的代码行数不应 多。它比你在网上找到的任何“体面”的 PHP 论坛都要简单。
【解决方案2】:

很慢,原因很明显 无法击败任何已知的 高级语言。

你怎么知道它不能“击败”任何已知的高级语言?

运行时间不能全面 估计因为语言有 几个底层实现 多种语言。

这与 C、C++、Java、Python ……有何不同?

可以估算特定 Ruby 实现的运行时间吗?

【讨论】:

  • 当然可以。如果你细心,就可以了解在对象分配等方面哪些操作成本高昂和成本低:例如,比较字符串连接与数组操作,然后是连接操作。
  • @Tom Morris - OP(我向其提出问题的人)是否理解这一点?
  • 我不知道 OP 是否知道这一点。我希望发表评论,以便他能理解。
  • 通过运行时间估计我的意思是找到大 O 符号。我可以很容易地看出 Java 中 Arrays.sort() 的复杂性是 nlogn,因为它使用了快速排序。我可以告诉 java 中 ArrayList 的 insertAt() removeAt() 操作的简单数组的空间复杂度和时间复杂度。而在 Ruby 中找到这些是很痛苦的,而且空间复杂性在 Ruby 中是最差的。 “最坏”意味着最坏的情况不会降低语言本身。