【问题标题】:What's a good place to learn Ruby? What is it primarily used for? [closed]学习Ruby的好地方是什么?它主要用于什么? [关闭]
【发布时间】:2010-02-07 19:28:24
【问题描述】:

几年前,我的一个朋友建议我学习 Ruby。从那以后,我学习了 PHP 和 VB.NET,但我从未接触过 Ruby。

我可以从哪里开始使用 Ruby? Ruby 主要用于什么?与 PHP 相比,您如何描述它? Python? VB?

如何在 Ubuntu 9.04 上设置它? Windows Vista 或 7 家庭高级版?我可以在“无互联网”机器上的现有 (Apache) 虚拟服务器中设置 Ruby on Rails 吗?

【问题讨论】:

标签: ruby


【解决方案1】:

Ruby 最适合原始计算速度不成问题的 I/O 密集型任务。幸运的是,绝大多数现实世界的编程问题都是 I/O 密集型的,Web 应用程序就是一个特别好的例子。 Ruby 社区将大部分时间和精力花在编写和发布旨在在 Web 服务器上运行的代码上,这才是它真正的亮点,但我已经成功地用 Ruby 编写了桌面应用程序。 MacRuby 是 Ruby 在桌面环境中得到充分利用的一个很好的例子。对于 Web 服务器,您拥有像 RailsSinatraRack 生态系统的其余部分这样的出色项目。 Data Mapper 之类的项目非常适合桌面和 Web 服务器使用。 Ruby 很少在移动环境中使用,因为那里的性能是一个如此重要的问题,但如果您有决心,它can be done

与 VB 相比,嗯... VB 出现了很大的不足。我将 VB 描述为非常适合初学者,但个人成长空间很小。虽然 Ruby 对以前没有接触过任何东西的初学者很有用——但对于已经习惯了其他语言风格的人来说,这可能是一个挑战。但是,Ruby 不会限制您作为程序员的成长:Ruby 几乎具有您可能想要的所有编程语言功能(除了一些值得注意的例外,例如模式匹配和多个函数参数)。实际上,这些都是取舍;没有编程语言可以给你一切。与 PHP 相比,除了 Web 服务器部署之外,Ruby 在每个领域都做得很好。 PHP 无处不在。在大多数情况下,您可以假设它默认由您的虚拟主机安装。另一方面,Ruby 需要相当多的经验才能正确部署,尽管Phusion Passenger 已经显着改善了这种情况。与 Python 相比,好吧,老实说,它们的比较非常好。为了不与“Snakes”发生任何激烈的争吵,并且因为我自己同时使用 Ruby 和 Python,我将其称为平局。有很好的理由同时使用两者,并且在大多数情况下,它们可以互换使用。很少有应用程序非常适合 Ruby,而 Python 不能表现得一样好,反之亦然。总的来说,我自己更喜欢 Ruby,但是我对 Python 有很多欣赏的地方,而且我写了很多 Python 是因为 Google App Engine。也就是说,您也可以通过 JRuby 在该环境中运行 Ruby。

如果您想开始使用 Ruby,最好的去处是Try Ruby (in your browser)。那应该让你尝一尝,让你评估语言。如果您喜欢它,请从official site 获取一份副本。正如其他人所提到的,“Pickaxe”这本书很棒。有一个free version online,虽然它主要适用于旧版本的语言。 "dead-tree" edition 应该是最新的。如果您刚刚开始,我强烈建议您使用 1.9。仍有许多库与 1.9 不兼容,但如果您刚刚开始,您可能关心的所有库都应该是 1.9 的最新版本。如果您不需要,最好避免以后重新编写大量代码,而且 1.9 的速度要快得多。

在安装方面,在 Windows 上,最好使用“一键安装程序”。在 OS X 上,它应该已经预装了一些针对 OS-X 的特殊调整。在所有其他平台上,我强烈建议从源代码编译最新的稳定版本。你可以使用apt-get,这会奏效,而且肯定容易得多,但有时你会遇到困难,因为 Ruby 社区和 Debian 的人们倾向于在应该安装的位置上存在分歧,有时库作者会错误的假设。如果您从源代码编译,所有内容都将在默认位置结束,并且您将拥有最新的可用代码。如果您使用的是 Ubuntu,请不要忘记先sudo apt-get install build-essential

【讨论】:

  • 你有没有看过像ruby -e "while x=STDIN.read(1024); STDOUT.write(x); end"这样的东西的表现? ruby 的 IO 性能太差了。
  • 这实际上不是我的意思。关键是,如果 I/O 是您的瓶颈,那么计算性能就不是那么大的问题了。
  • 我什至不同意这个结论。
  • 对于绝大多数应用来说,这个结论是相当有效的。解决 Ruby 的 I/O 问题不一定是微不足道的,但对于大多数目的来说,这项工作已经完成。像 Unicorn (unicorn.bogomips.org) 这样的东西已经存在,每秒可以轻松发出数千个请求。如果您需要原始速度,则有解决方案。新手可能无法立即访问它们,但它们确实存在。
【解决方案2】:

入门资源


'Pickaxe book' 是我找到的学习语言的最佳资源。对于免费资源,Ruby-doc 很难被击败 - 大量的入门信息。有很多很棒的网站,但 Ruby Inside 非常适合用于 Ruby 的一般新闻。


Ruby 适合...


真的 Ruby 是一种通用编程语言,因此可以用于您提到的所有领域。特别是,有一个非常流行的 Web 编程框架,称为Ruby on Rails


Ruby 与 ...


比较编程语言总是有争议的,但 Ruby 可以被描述为具有非常强大的动态编程方面的纯面向对象语言。它与 Smalltalk 相同。您会发现 Ruby 是一种非常简洁的语言,即比 Java 更少的键盘攻击 ;-)。它的执行速度不如 Java、C 或 PHP,但通常对于除系统编程之外的所有应用程序来说都足够快。

【讨论】:

    【解决方案3】:

    我发现学习 Ruby 编程的唯一最佳资源是Ruby website itself,尤其是第一版的'Pickaxe' book,可以在线免费获得。

    我是一名 C++ 程序员,我广泛使用 Ruby 来测试我的应用程序,以及编写快速实用的应用程序。在开始编写应用程序的 C++ 版本之前,我还使用它编写了用于演示项目的测试平台应用程序。

    【讨论】:

      【解决方案4】:

      您可以在 ruby​​-doc.org 开始学习 ruby​​,其中包含 Programming Ruby 的第一版(有点过时,但仍然是学习 ruby​​ 的一个很好的资源)以及官方 API 文档。如果你愿意投资一些钱,你也可以购买当前版本的 Programming Ruby 或 The Ruby Programming Language。

      关于 ruby​​ 的用途:我怀疑它最常用于 Web 编程。其次是作为系统管理、日志文件处理、网络抓取等的脚本语言。

      【讨论】:

        【解决方案5】:

        Ruby 是一种通用脚本语言,因此它几乎可以做任何事情。但真正让 Ruby 作为一门语言起飞的原因之一是Ruby on Rails

        与 Python 相比,我会说 Ruby 是 Python 的小妹妹。非常相似的语法、用途等。有些人可能喜欢 Ruby(比如说,用它来构建特定领域的语言很容易),有些人可能喜欢 Python(比如说,因为他们喜欢显式)。我总是推荐阅读Zen of Python:如果您同意其中的大部分内容,请学习 Python,如果您对其中的许多要点有重大问题,请尝试 Ruby。

        与 PHP 相比:Ruby 是一种脚本语言,没有 C 的大括号传统,而且 OO 设计更加重要(是的,我知道你可以在 PHP 中实现 OO)

        与 VB 相比:它不是 BASIC?它在 Unix 上运行而在 Windows 上运行不佳? (与在 Windows 上运行良好而在 Unix 上运行不佳的 VB 相比)。用 Ruby 编写一个 GUI 程序并不容易……但是,我们毕竟是在 Unix 上。

        【讨论】:

          【解决方案6】:

          Ruby 几乎可以用于任何事情,但实际上它最常见的用例是构建 Web 应用程序。

          我的同事写了一篇很棒的文章,列出了新的 Rubyist 可以用来学习这门语言的东西。它主要是为我们当地的 Ruby 用户组成员设计的,但也许您会发现它也很有用。这是链接:http://www.jasimabasheer.com/posts/meta_introduction_to_ruby.html

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2023-03-04
            • 2022-06-16
            • 2010-10-10
            • 1970-01-01
            • 1970-01-01
            • 2023-04-09
            • 2011-02-06
            相关资源
            最近更新 更多