是什么让红宝石优雅的语言?

我一直在阅读了很多关于Ruby的这几天。 几乎每隔一段时间后我遇到我听说的红宝石是一个优雅的语言。 你们能不能给的,为什么比其他语言的红宝石是优雅的例子吗?

--------------解决方案-------------

它被认为高雅的,因为它是正交的。 这就是说,类似的操作适用于类似的操作数一个奇特的方式。

简单的例子+对整数增加了他们; 对浮点数,同上。 在大的整数,太。 对字符串,它连接这些(哪一种你所期望的也是如此)。 现在这不是一个大问题+你有种从任何像样的编程语言指望它。 但也有类似的操作mapfilter ,它们在列表中的工作(他们应该!),但他们也可以用在阵列,并在事实上对任何可以被列举或迭代通过。

我喜欢阵列(或清单)索引原理,你可以用正整数索引指数从一开始,还是消极的指标,以指定从结构的末尾后面的位置,你可以指定一个范围内拉出一个子集.. 。这个工程的列表,数组和(分)串过。 它的工作原理在右侧的分配(的=它工作在左侧太(你可以分配给子,从而替换字符串的一部分)。 所以,你不需要substring_replace功能,你只要充分利用现有的,通用的概念。

红宝石的作者表示这在满足用户的(即程序员)的预期方面:应该有尽可能少的惊喜越好,每当常识的人都会导致你期望的东西的作品以某种方式,它只是应该的。 他工作非常努力,以满足这一要求。 此外,虽然红宝石借鉴了Perl的一点点,笔者不同意Perl的TMTOWTDI原则上同意Python中的禅:“应该有一个 - 和最好只有单明显的方式来做到这一点。”

这也是不错的红宝石做闭包(=代码块),所以你可以简单地包装在一对大括号中指定的函数。 有些地方是合适的指定函数的内联和Ruby可以方便地做到这一点。

Ruby允许你做的事情有少量的编码,因为它的结构组合在一起以强有力的方式。 我涉足项目欧拉,我发现,往往在最短的清晰和易于理解的解决方案是在Ruby中完成的。 在很短的是为J,但这是一个APL方言的门外汉,它看起来像线路噪声。

我个人的经验证明了这一点:我自学了Ruby和Rails,并在一个星期内写有中等复杂的数据分析Web应用程序。 我了解到每一个原则,我可以在不同的地方有不同的数据应用 - 它只是工作™!

  • 公开课 ,即你可以添加方法,以班它们定义后,
  • method_missing的即办案的可能性,在那里你送你还没有定义一个方法的消息。 同样,这可以让你写的适应,而不是仅仅崩溃的代码。
  • 具有Smalltalk中一样, 一致的面向对象的模型 ,例如,你可以做的事情一样1.class 1.times {}。 这使得很多的DSL支持的可能。
  • 它有块/关闭 -使得它更容易编写灵活的代码
  • 不与每一个变量的静态类型浪费你的时间 (即试图解决,如果你做TDD是并不重要的问题)
  • 您不必使用基于类的OO 支持基于原型的面向对象编程

Ruby和DSL的已经讨论了很多。

例如,从西纳特拉:

get '/' do
'Hello world!'
end

或从本博客:

ChessGame.new do |move|
move.black_pawn(forward)
move.white_pawn(forward)
#…
move.white_queen(pwn_king)
end

根据我的经验块是最大的贡献因素使得Ruby的优雅。 有什么比写每个迭代数组/哈希/等更优雅...

arr = ["one", "two", "three"]
arr.each { |e|
puts e
}

不过,我相信这是比这更多,Ruby语言的优雅也来自库。 大多数图书馆都不停地用独特的红宝石'风格'的函数名,如“每个'迭代或的使用'!” 和 '?' 在函数名结束破坏性/布尔返回功能,这是真正保持红宝石“优雅”。

红宝石是所有关于生产力和编程的乐趣,但有几个原因Ruby是优雅:

  • 纯面向对象:一切都是对象,所以你没有原始的对象类型来区分。
  • 它支持的功能和命令式编程范式:即导致既简洁又可读的代码。
  • 它支持最惊喜的原则:支持的可读性。
  • 它有闭包:这是真的很酷做内部DSL。
  • 它有一个强大的元编程API:该条例授权编写内部DSL以及。
  • 这是非常擅长的脚本任务:处理文本和xml文件和做行政相关的东西(它被广泛使用的系统管理员现在是一个天)。
  • 它有一个非常酷和支持社区:你会发现支持和帮助,无论您的问题。 这个社区支持现代fashional编码技术以及像TDD和BDD。

所有上述的总和是,使用红宝石可以有:

  • 简洁的代码:相对于Java和C ++,至少可以节省自己的代码输入50%。
  • Readablility。

因此,具有可读性和简洁的代码- >更少的代码,以测试和维护- - > 生产力 >少写代码。

我不应该忘记提及红宝石背后的巨大支持的社区。

我可能不能认为它是优雅的,我认为,在一般的优雅是由程序员的实现派生的。 但是我可以说,它是简洁的,我想这就是很多人时,他们说,Ruby是优雅的真的感觉。 很多时候,代码走到一起很快会让人感到优雅。

你可以看到编程语言枪战的结果在这里。 你会发现,Ruby 1.9的被轰出平贴在左边这意味着它是超级简洁。 我敢打赌,任何人谈论语言是优雅的在谈论一个语言,无论是在左边或关闭。 哈斯克尔是唯一明显的例外,我知道这需要很多的努力来完成某些事情之一,但仍然感觉非常雅致做。

全部的寄托是一个对象(PS像Smalltalk中...):

3.times { p "olleh" }

扩展/公开课(例如,从Rails的):

10.days_ago

..和更多的红宝石的优雅 :http://www.benhughes.name/files/presentations/ruby_elegance.pdf

只是一个有趣的边注:这种感觉就像PHP又是红宝石(从今天早些时候),但第一个答案感觉就像优雅的红宝石。 在PHP我最后写愚蠢的长码,如链接后从身边小事做起。 部分是因为lambda表达式基本上是不存在的。 因此,我不得不说,Ruby的支持拉姆达地图一起/减少是什么使得它优雅的给我。

分类:Ruby on Rails的 时间:2015-03-15 人气:0
本文关键词: 红宝石,Ruby on Rails的
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.279 (s). 10 q(s)