编程语言“在轨道上”意味着啥?

Posted

技术标签:

【中文标题】编程语言“在轨道上”意味着啥?【英文标题】:What does it mean for a programming language to be "on rails"?编程语言“在轨道上”意味着什么? 【发布时间】:2010-09-16 01:21:04 【问题描述】:

我目前正在使用 Groovy 和 Grails。虽然 Groovy 非常简单,因为它基本上是 Java,但我不能说我对 Grails 很熟悉。我读到 Groovy 之于 Grails 就像 Ruby 之于 Ruby on Rails,但这是什么意思?

【问题讨论】:

【参考方案1】:

为了解决您对隐喻的困惑(尽管在您的问题下已经以其他方式回答):

Groovy 之于 Grails 就像 Ruby 之于 Ruby on Rails,但这意味着什么?

Grails 是一个基于/使用 Groovy 编程语言构建的 Web 框架,它为 Groovy 做的事情与 Rails(一个用于 Ruby 的 Web 框架)为 Ruby 做的事情一样。


“在轨”是什么意思?

这个问题的答案归结为这些网络框架的本质。

这些 Web 框架(Grails 和 Rails)建立在“约定优于配置”的前提下,这意味着使用通用约定来开发 Web 应用程序可以带来更高的生产力和更可维护的应用程序(这是一个粗略的概括)。通过定义一个约定并坚持下去,您会发现您的应用程序很容易生成并且可以快速启动和运行。

这就是“在轨道上”对我的意义,就像火车一样。当一条新的火车路线被开发出来时,不用担心重新发明火车从一个地方到另一个地方的方式,几十年来一直通过一个单一的惯例来解决这个问题:铁路。就像火车路线上的轨道限制其从两个位置的路径一样,基于约定的 Web 框架使用约定来提高应用程序开发人员的灵活性,以便他们可以专注于其应用程序的基本业务问题。

Web 框架约定的一个关键好处是,Web 框架现在可以对应用程序的某些层如何连接在一起做出假设。在 Rails 中,通常可以假设如果一个数据库表有复数名称,映射到该表的 ActiveRecord 类将具有相应的单数名称。因此,Rails 代码生成器可以使用数据映射信息来生成数据访问代码,例如动态查找器、迁移、延迟加载的关联遍历等。基于配置的框架中的这种数据访问代码手工编写很费力。

【讨论】:

【参考方案2】:

有几个人提到了 Rails/Grails 的技术细节。一些人还提到“约定优于配置”是 Rails/Grails 中的“导轨”。这越来越接近真相。但这只是更广泛的 Rails 哲学的一个特征,即 opinionated software 的概念。

不能只用技术术语来描述自以为是的软件;这是一种哲学;一种精神; an attitude。喜欢它或hate it,是 Rails 的核心。

这是 2005 年 interview with David Heinemeier Hansson 的摘录,Rails 的创建者:

Rails 是固执己见的软件。它避免将旧的软件理念置于首要位置。其中一个理想是灵活性——我们应该尝试适应尽可能多的方法,我们不应该对一种开发形式的判断超过另一种。嗯,Rails 可以,我相信这就是它起作用的原因。

使用 Rails,您可以在基础架构级别交换灵活性以在应用程序级别获得灵活性。如果您乐于沿着我在 Rails 中嵌入的黄金路径工作,您将在生产力方面获得巨大回报,让您在应用程序级别做得更多、更快、更好。

还有一个稍后的采访,进一步explores the subject。

所以“在轨道上”是“固执己见”的隐喻,这就是它被如此命名的原因。任何记者或作家都会告诉你的,“Ruby on Rails”是头韵,这无疑是吸引人们注意力的可靠方式。

【讨论】:

【参考方案3】:

我认为一个努力做到“类似rails”的框架指的是几件事:

模型级:AR 模式的 ORM(而不是数据映射器)、迁移或一些自动化模式和模型层管理,在应用程序中处理外键(不在数据库模式中,也不使用存储过程或纯 DBMS 逻辑)

鼓励 TDD:为单元测试自动生成骨架,

连接数据库表名和模型名、控制器和视图操作以及 html 模板的命名约定

简化的路线识别和路线生成方案

强调 REST 架构

与 ajax 库集成:RJS、原型和 scriptaculous

【讨论】:

【参考方案4】:

Rails 是一个用于开发带有数据库后端的 Web 应用程序的框架。我认为这个名字最初是一个文字游戏。火车可以真正快速带你去某个地方,但只能到有铁轨去的地方。

【讨论】:

【参考方案5】:

在轨道上意味着你无法控制你要去哪里。这意味着,你只能去已经铺设了铁轨的地方。任何试图去那些铺设铁轨的人没有预料到你会去的地方都会导致挫败感。

【讨论】:

+1 嘿嘿嘿 :-) 虽然我不确定我是否同意你的观点,但这是一个有趣的答案,并且在 Rails 社区中引起了最激烈的争论。【参考方案6】:

这是一种汽车表达方式。当一辆汽车的操控性非常好时,它被称为“像在铁轨上行驶一样过弯”(即它为您提供出色的控制)。

我不知道 Rails 的人是不是从那里得到这个名字,但我是这么解释的。

【讨论】:

【参考方案7】:

真正简短的答案:约定优于配置。

【讨论】:

很好,简短而甜蜜,我的回答可能属于迂回的范畴......【参考方案8】:

如上所述,Rails 和 Grails 为 Web 应用程序开发提供了约定 —— 以某种方式命名您的部分并将它们放在正确的位置使您的应用程序在默认情况下运行,无需额外配置。当你想偏离约定时,你可以在那里配置你的方式。

【讨论】:

【参考方案9】:

我不同意“on rails 是关于约定优于配置的哲学”等其他 cmet。

虽然 rails 确实遵循这些理念,但“Ruby on Rails”是 Web 框架的名称。不多也不少。它并不是指任何特定的“在轨”,它只是一个品牌名称,就像麦当劳是一个品牌名称一样。

如果其他人编写了另一个框架并将其称为“Python on Rails”,那么就会有另一个品牌名称。如果不是,“XYZ on rails”只是意味着人们很困惑。

【讨论】:

【参考方案10】:

Ruby 和 Groovy 是语言。

Ruby on Rails 是一个开创性的 webapp 框架。请参阅上面关于自以为是的软件的优秀答案。

从历史上看,Groovy webapp 框架的暂定名称是 Groovy on Rails。然而,RoR 社区反对。团队选择了 Grails

【讨论】:

【参考方案11】:

这是一个隐喻,我几乎说需要解释。无论如何,这是 Ruby on Rails 所做的一个非常好的比喻。它使做(去)常见的事情变得非常容易,即。 e.测试、验证、部署、MVC。

【讨论】:

以上是关于编程语言“在轨道上”意味着啥?的主要内容,如果未能解决你的问题,请参考以下文章

试图在轨道上安装红宝石

无法在轨道上的可安装引擎中加载模型

如何在轨道上的ruby中正确显示数据库中的图像

如何在轨道上的ruby中引用控制器中的另一个类?

openharmony 军棋工兵寻径算法的实现

编程语言是无堆栈的到底意味着啥?