为什么Rails用Ruby编写?[关闭]


9

我知道PHP和Ruby。

使用名为Symfony(显然是最好的PHP框架)的PHP Rails克隆(并非没有选择),我注意到它是Rails的克隆。我认为Symfony很愚蠢,这(SensioLabs是一项聪明的生意),因为Rails已经存在。

除了可以赚钱的开源项目之外,我不理解为什么人们已经在Rails已经存在的情况下用PHP制作Rails克隆。为什么不使用Rails?DHH肯定用Ruby编码了Rails是有原因的。

使用Symfony,我注意到有些东西感觉不太正确,但我不知道它是什么。我是通过胡扯的Sitepoint电子书学习了Rails的,却忘记了它,所以现在我通过PragProg电子书学习了Rails,我很喜欢那本书。我并不完全了解Rails,但我了解它的工作原理(感谢Symfony)。我很想读完整个电子书,所以我可以制作2个Rails应用程序。我记得使用我无法完成的Sitepoint电子书,Rails比Symfony更有趣,而这与Ruby的漂亮语法无关。

  1. 为什么Rails用Ruby编码?
  2. 感觉不对的PHP Rails克隆有什么用?
  3. Rails在做什么,Rails克隆在做什么?

4
Ruby是Rails的秘密调味料。
Chiron

4
嗯,我看不到Ruby on Rails用PHP实现的东西。
替代

2
如果有记性的话,我曾经听过一个播客,DHH在那里描述他选择了Ruby。我认为这是《开发商生活》的这一集
亚当李尔

2
@Chris G-我很难相信。基础语言之间的鸿沟巨大-Ruby是一种聪明的语言,通过编程语言进行了全面的思考,PHP是一堆在其他hack上堆积如山的hack,在游戏后期有很多Ruby特性被入侵。PHP易于托管并且性能更好,但是如果将这些作为DHH的优先事项,那么他可能不会再选择Ruby。PHP从来没有真正被设计成可以作为一种编程语言,因此关心语言理论/ CS的人们往往并不热衷于此。
glenatron 2011年

2
@Glenatron并没有阻止任何智能PHP用户利用ORM等关键的“ Rails”功能来编写美观,富有表现力的现代Web应用程序。闭包只是最近才添加到PHP的想法不会阻止任何人使用它们!
克里斯·G。

Answers:


26

1.)为什么Rails用Ruby编码?

Rails最初是从DHH在Basecamp上用Ruby编写的工作中提取的。随着时间的流逝,Rails核心开发人员继续向Rails中提取和开发更多功能,最终使它成为一个成熟的框架。

由于Ruby多年来的功能和表达能力不断增强,它仍然非常适合该框架,因此它仍然是其编写的语言。(此外,“ C#on Rails”或“ Java on Rails”不会没有那么好的寓意。)

2.)感觉不对的PHP Rails克隆有什么用?

这确实不能客观地回答,但这可能是因为#1。Rails的行为和内部功能利用了Ruby中存在的许多功能,因此很难在其他地方精确复制。例如,PHP没有元类,Rails在很大程度上依赖元类。

除了可以赚钱的开源项目之外,我不理解为什么人们已经在Rails已经存在的情况下用PHP制作Rails克隆。为什么不使用Rails?DHH肯定用Ruby编码了Rails是有原因的。

因为并非每个人都有时间,预算或意愿去学习一种新语言,以便他们可以学习一种新框架。

以此类推,如果事实证明Brainfuck有一个非常流行的Web框架,这是否意味着您应该放弃尚未在Brainfuck中编写其应用程序的客户?这是无法开展业务的方式。

我知道PHP和Ruby。

诸如“我同时了解PHP和Ruby”之类的语句表明,您可能还没有完全欣赏二者的深度,丰富性和特质。



我相信在Basecamp的最初尝试是在PHP中尝试的,并没有使DHH满意。因此,Rails是用Ruby编码的。
Bryan M.

3
+1-有一段时间学习一种新语言-任何重要的近期项目都不是其中之一。
JeffO 2011年

PHP没有开箱即用的元类,您是正确的。但是,从PHP 5.3开始,可以实现元类功能。
克里斯·G

6

1.为什么Rails用Ruby编码?

曾经有过将其编程为红宝石的决定。该设计决定一直持续到今天。

2.感觉不对的PHP Rails克隆有什么用?

这是您的一种感觉,很难在像这样的婚礼上说。您可能想问一个与您更亲密,更了解您的感受甚至分享的人。

3. Rails在做什么,Rails克隆在做什么?

按照定义,Rails的精确副本可以完成Rails所做的所有事情。因此,这最有可能取决于克隆的完成方式。不同的部分将导致不同的行为。例如,对于另一种语言的翻译,另一种语言可能没有Rails on Ruby正在使用的语言功能,这很可能导致设计和行为上的差异。


6

为什么Rails用Ruby编码?

Ruby允许大量的元编程,其宽松的语法允许您创建看起来完全不像方法调用的漂亮API。

例如,Rails的对象关系映射器ActiveRecord可以很好地完成这两项工作。首先,它使用Ruby的元编程功能来动态创建与数据库中字段名称相对应的方法

其次,ActiveRecord使您可以声明与对象的关联:a Personmay has_many :books。has_many看起来像一个声明,但实际上是一个方法调用。(Ruby将其读为has_many(:books)

Ruby的另一个目标是使经验丰富的程序员的生活更轻松。

Ruby使这些事情变得容易,所以人们就去做。其他语言使这些变得更加困难,或者像这样的神奇事物显然不是文化的一部分。Django是Python的大型框架,因为它在Python中不那么容易,所以它的meta魔术要少得多,并且Python作为一种语言倾向于“显式优于隐式”。(我对该方面的PHP文化或Web框架了解不多。)

我认为这是DHH爱上Ruby的一些原因,并且他在Rails中使用了这些语言功能。


使用控制台在Rails中做一些脚手架都很好,但是Symfony中存在这样的功能。您能指出我在哪里可以找到Ruby语言如何满足元编程的证据吗?上课不足够吗?
2011年

1
实用程序员有一本书:Ruby中的元编程,除了介绍Ruby中的元编程外,它还花费了大约50页的篇幅谈论Rails中的元编程。我认为简单的类是不够的:例如,有时元编程通过方法链发生(“当您调用此函数时,请调用我的函数版本-可能会或可能不会调用原始函数”)。这是Ruby中的元编程模式(Rails可以清理并使其更易于使用)
RyanWilcox

精通Rails之后,我必须阅读。这听起来令人困惑。
2011年

我只想提到PHP也有ORM解决方案。这不是Ruby独有的。
克里斯·G

1
有一个ActiveRecord的PHP实现,称为phpActiveRecord。它使用所有这些东西。但是,当DHH构建Rails时,PHP距离做到这一点还有很长的路要走。
Jamon Holmgren

2

为什么不使用滑轨?

作为两者的使用者,我将提供一些观点。我爱好Ruby / Rails中的程序,并且在工作中只使用PHP。(注意:我不认为Ruby / Rails是一个业余爱好者环境,这就是我选择使用它的方式。)

由于流行趋势和它的“与众不同”,许多人将Ruby / Rails视为网站开发的圣杯。在许多方面,将PHP视为古老的东西肯定是足够的,但还不够。

Symfony感觉不像Rails,因为PHP确实缺少Rails提供的一些语法糖。PHP在这方面正在改进,并且5.3添加了闭包已经使我们中许多人编写代码有所不同。

别误会,我爱Ruby,也爱Rails。但是,当您不想处理复杂或昂贵的网站托管或担心性能或“边缘化”时,PHP在今天仍然极为重要,它的框架也非常出色。

  • Redbean通过PHP提供了出色的ORM功能。教义,成语/巴黎和推进也是如此。
  • Symfony2和CakePHP提供了一个庞大的Web开发框架,其精神与Rails类似。
  • CodeIgniter提供了一个完整的框架解决方案。
  • Slim提供了类似Sinatra的框架。

我认为您对PHP Rails克隆不“感觉正确”的暗示是错误的,因为它们不是克隆,并且它们与Rails不会相同。学习沉浸在PHP解决方案的简单性和熟悉性中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.