没有Rails的Ruby

14

我已经在Rails中开发了一些简单的应用程序(只是为了测试),没有任何Ruby的知识,但现在我想改变我的生活。我将开始学习Ruby(永远不会学习Rails,因为有一些个人原因),并专注于它,但在此之前,我需要知道一些事情:

  • 如何使用Ruby构建GUI应用程序?
    • 是否可以使用GTK进行构建?
    • 从哪里下载?
  • 与Perl和Python相比,Ruby的优缺点是什么?
  • 与C#和其他.NET语言相比的优缺点是什么?
  • 今天Ruby(不包括Rails)的市场状况如何?
  • 在哪里可以获取关于Ruby世界最新消息的更新(播客和博客)?

4
在 Rails 出现之前,Ruby 就是一门完整的语言,只不过 RoR 让 Ruby 更加流行。但正如所指出的,单独使用 Ruby 的用处似乎不大,但是精通 Ruby 可以让您成为更好的 RoR 开发人员。为什么要专注于学习 Ruby,而不是更常用的语言呢? - James Black
1
仅供参考,这是我遇到的最好的 Ruby 书籍。http://www.manning.com/black2/ 如果你想深入挖掘,它绝对物有所值。 - Matt Briggs
看看 WxRuby。这是一个跨平台的 GUI 工具包,无论你在哪个平台上使用它,它都具有本地外观。我还没有用它编写过任何代码,但它在我的学习待办清单上。 - Earlz
我认为应该注意的是,虽然在Ruby中你写的代码比较少,但Ruby不是编译语言,因此Ruby开发人员必须公开桌面应用程序的源代码。这就是为什么人们认为Ruby更适合作为辅助工具而不是主要工具的原因。 - ryandawkins
8个回答

16

3
我认为最引人注目的比较是展示Ruby的简洁性。将此进行比较。
class Foo
  def self.bar
    puts 'bar'
  end
end

Foo.bar

为了

using System;

namespace Blah
{
  public class Foo
  {
    public static string Bar()
    {
      Console.WriteLine("bar");
    }

    public static void Main(string[] args)
    {
      Foo.Bar();
    }
  }
}

他们都表达了同样的意思,只是一个用6行代码实现,另一个用17行代码实现。这不是一个人为制造的例子(人为制造的例子是使用Ruby在一行中执行puts 'bar'),通常情况下,人们会编写2-3倍于C#的代码来完成相同的任务。
这只是冰山一角(混合,动态分派回调,对象个体化,鸭子类型和强大的内省API可能是我最喜欢的东西),但我发现这个例子对于没有任何现代脚本语言经验的人来说是最容易理解的。

3
如果你使用K&R风格的花括号而不是Allman风格的话,你可以在C#中节省4行代码。这样做更好,但是确实会更啰嗦一些。 - Kaleb Brasee
3
如果不包括命名空间并使用K&R花括号风格,您可以节省额外的三行,如果删除额外的行等,则只增加了3行。但考虑到Visual Studio智能感知的因素,我怀疑您真的需要那么多额外的按键操作。 - Jared
我对这类比较的问题在于,类锅炉板和写入控制台并不占据编程的很大一部分。 - Keldon Alleyne
你也可以在一行中编写你的第一个示例:Foo = Class.new { define_singleton_method(:bar) { puts 'bar' } },然后调用 Foo.bar 来输出 bar - 15 Volts

3
寻找纯粹的Ruby工作非常困难,因为很少有公司了解它,更不用说构建特定应用程序了。但这并不意味着这样的工作不存在,你可能需要成为一个专家才能胜任。
但如果你真的很热衷于做纯粹的Ruby工作(我完全不能责怪你),我会看看自动化和测试的工作市场,在那里没有关于你使用语言的特定要求,或者在系统管理市场,你可以使用任何你想要的脚本语言。你总是可以定义自己的市场,这是一个方便的事情,越来越多的Ruby项目正在各个地方涌现。
Ruby最强大的地方在于其框架以及有很多非常聪明的人在使用它。研究一下可用的框架,如Shoes、capistrano、Rails,看看是否有一些非Web的东西仍然吸引你。

2

如果你找到了,给我打电话

如果你找到了一份Ruby开发工作,请给我留言,这样我就可以搬到那里和你一起工作。不幸的是,我认为这样的地方不存在,尽管Rails工作在我的地区似乎很受欢迎。

现在,Ruby 目前位列前十(仅排在第10位)Tiobe指数中。这对于一种新语言来说非常了不起,这可能全部归功于Rails。Ruby一直保持稳定,并且有望某天击败VB。从技术上讲,Ruby备受推崇,因此可以安全地假设未来某一天将会有Ruby开发工作。这可能需要很长时间,并且它们可能始终是类似于Rails的工作,因为Web应用程序可能会继续替代其他所有东西。

(一个名为Chrome的操作系统即将推出,仅仅运行Web应用程序。)

然而,Python、Perl和PHP都比它更受欢迎,所以你可能更有可能在它们上面或Java或C*上找到工作。由于我无法想象有人愿意做纯PHP工作,因此可以安全地假设所有的PHP活动都是在Web编程中进行的,在这种情况下,更安全的假设是所有的Ruby工作都是Web应用程序工作。


你可以选择一个不受编程语言限制的工作场所,比如生物信息学研究中心。此外,参见https://dev59.com/4HVC5IYBdhLWcg3w51hv - Andrew Grimm
Ruby是一种新语言?相比之下,Fortran呢?不确定是否值得更改答案,但它有点误导人。我的意思是,在第一个C++标准发布之前,Ruby就已经存在了。 - Cubic

1

一种选择是通过偷偷摸摸地引入Ruby:

  • 使用“硬件和软件”层次结构 - 使用JRuby来配置和组装现有Java组件的自定义配置。毕竟,从外部看起来就像是Java...
  • 用Ruby进行工具和系统管理工作
  • 在非关键的内部应用中使用Ruby - 在这些应用中,没有人过多关注平台 - 只要成本不太高或花费的时间不太多即可。

我以前工作中采用Ruby on Rails的原始业务案例是,采用Java选项将耗费太多时间 - 因此我们被允许探索其他替代方案...这种压力作为商业激励,让我们考虑其他技术。


0

Pragmatic ProgrammersMartin Fowler开始谈论Ruby作为一门优秀的语言时,Ruby作为一门有趣的语言赢得了许多软件工程师的信任。

在我重新编写AppMaker时,我选择使用Ruby作为代码生成语言。这个决定受到了他们和书籍Code Generation in Action的影响。

你可以使用Ruby来制作原生GUI,使用Cocoa(Ruby项目是最新XCode中可用的模板之一,就在其他应用程序模板旁边)。动态语言支持是.Net空间的热门话题,IronRuby被支持在SilverLight中进行Web客户端编程,同时也是一种重要的语言。

现在还处于初期阶段,我不认为它会像C#或Java那样拥有职业市场,但它正在逐渐发展壮大。


0

看看MacRuby。它是一种语言的实现,具有漂亮的Ruby风格接口到Cocoa。

Ruby似乎很适合Cocoa,因为它的面向对象实现基于与Objective-C相同的消息解析模型。


0

我希望这不会太烦人,但我在Yahoo!实习时被投入到Ruby中,我真的很喜欢它。现在我也正在自学rails,只是为了好玩。

我喜欢Ruby的原因是:

  • 块!
  • Nokogiri,因为它让我在Yahoo!的特定任务变得更容易。
  • foo?() 惯例用于布尔函数
  • []= 操作符和成员=() 语法
  • 可以不使用括号调用函数
  • attr_reader等

我认识一个人,他换工作只是为了获得更多的Ruby经验。他的计划是开始一家咨询公司,用Ruby制作东西。Ruby非常棒!


为什么你喜欢在调用函数时不加括号呢?这听起来会让阅读变得非常困难。 - Joe Phillips
如果我从未使用过它们,那么是的,它会影响可读性。但在某些情况下,比如attr_reader和Rails中经常出现的情况,即使没有它们,代码也同样易读。 - Steinbitglis
Ruby中不存在公共字段(public field)这种概念,因此不加括号不会产生混淆。除非你喜欢一直输入()。 - Matt Briggs

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