RailsがRubyで書かれたのはなぜですか?[閉まっている]


9

PHPとRubyは知っています。

Symfonyと呼ばれるPHPレールのクローン(選択不可ではありません)を使用すると(これは明らかに最良のPHPフレームワークです)、これはRailsのクローンであることがわかります。Symfonyは馬鹿げていると思います(SensioLabsは賢いビジネスです)。なぜならRailsはすでに存在しているからです。

オープンソースプロジェクトがお金を稼いでいることは別として、Railsがすでに存在するにもかかわらず、なぜPHPでRailsのクローンを作成するのか理解できません。Railsを使用しないのはなぜですか?確かに、DHHは何らかの理由でRubyを使用してRailsをコーディングしました。

Symfonyを使用していて、何かが適切に感じられないことに気づきましたが、それが何かはわかりません。私はがらくたのSitepoint電子ブックでRailsを学んで、それを忘れてしまったので、今はPragProg電子ブックで学んでいて、その電子ブックが大好きです。Railsは完全にはわかりませんが、その仕組みは理解しています(Symfonyのおかげです)。電子書籍全体を読み終えて、2つのRailsアプリを作成できるようにしたいと思っています。RailsはSitepoint電子ブックを使用してSymfonyよりも楽しく、覚えきれなかったことを覚えています。これは、Rubyのきれいな構文とは何の関係もありませんでした。

  1. RailsがRubyでコーディングされているのはなぜですか?
  2. PHP Railsクローンの何が正しくないと思いますか?
  3. Railsが行っていること、Railsクローンが行っていないことは何ですか?

4
RubyはRailsの秘密のソースです。
Chiron、2011

4
ええと、Ruby on RailsPHPに実装されているものを確認できません。
代替

2
メモリが役立った場合、DHHがRubyを選んだと説明したポッドキャストを一度聞いた。This Developer's Lifeの今回のエピソードだったと思います。
アダムリア

2
@Chris G-信じられないほど信じられない。基礎となる言語間の溝は巨大です。Rubyは巧妙であり、プログラミング言語を通じて包括的に考えられています。PHPは、ゲームの後半でハッキングされたRubyの機能を備えた他のハックに積み重ねられたハックです。PHPはホストしやすく、パフォーマンスも優れていますが、それがDHHの優先事項であった場合、彼はおそらくRubyを選択しなかったでしょう。PHPは実際にはプログラミング言語として設計されたことはなく、言語理論/ CSを気にする人々は結果としてそれに熱心ではない傾向があります。
glenatron

2
@Glenatronそれでも、インテリジェントなPHPユーザーがORMなどの主要な「Rails」機能を利用して美しく表現力豊かな最新のWebアプリケーションを作成することを妨げるものはありません。最近クロージャーがPHPに追加されたという考えは、誰もがクロージャーを使用することを妨げるものではありません!
クリスG.

回答:


26

1.)なぜRailsはRubyでコーディングされているのですか?

Railsはもともと、Rubyで書かれたBasecampに関するDHHの作業から抽出されました。時間の経過とともに、Railsコア開発者はより多くの機能をRailsに抽出して開発し続け、最終的には本格的なフレームワークになりました。

Rubyは長年にわたってパワーと表現力で成長して以来、フレームワークに引き続き適しています。そのため、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の両方を知っています」のような発言は、どちらか一方の深み、豊かさ、特異性をまだ十分に理解していない可能性があることを示唆しています。


stackoverflow.com/questions/6972992/から後世のために複製。)
John Feminella

Basecampの最初の試みはPHPで試みられたと思いますが、DHHが満足できる結果にはなりませんでした。したがって、RailsはRubyでコーディングされました。
ブライアン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を作成できます。

たとえば、RailのオブジェクトリレーショナルマッパーであるActiveRecordは、これらの両方をうまく処理します。まず、Rubyのメタプログラミング機能を使用して、データベースのフィールド名に対応するメソッドをその場で作成します。

第二に、ActiveRecordのは、あなたがオブジェクトに関連付けを宣言することができます:Personかもしれないがhas_many :books。そのhas_manyは宣言のように見えますが、実際にはメソッド呼び出しです。(Rubyはこれをと読みますhas_many(:books)

Rubyには、経験豊富なプログラマーの生活をより簡単にするという目標もあります。

Rubyはこれらのことを簡単にするので、人々はそれを行います。他の言語はこれらを難しくします、またはこのような魔法のものは明らかに文化の一部ではありません。PythonメガフレームワークであるDjangoは、Pythonほど簡単ではないためメタマジックがはるかに少なく、Pythonは言語として「明示的は暗黙的より優れている」という傾向があります。(PHPの文化やその側のWebフレームワークについてはあまり知りません。)

私はこれらがDHHがRubyに夢中になった理由のいくつかだと思います、そして彼はRailsでこれらの言語機能を強力に使用しています。


コンソールを使用してRailsで足場を作成するのは非常にうまくいきますが、そのような機能はSymfonyに存在します。Rubyの言語がどのようにメタプログラミングに対応しているかの証拠を見つけることができる場所を教えていただけますか?クラスで十分ではありませんか?
desbest 2011

1
Pragmatic Programmersには本があります。Rubyでのメタプログラミングの紹介であることに加えて、Rubyでのメタプログラミングについても約50ページを費やしています。私はクラスだけでは十分ではないと思います。たとえば、メタプログラミングはメソッドチェーンを介して行われることがあります(「この関数を呼び出すときは、代わりに私のバージョンの関数を呼び出します-元の関数を呼び出すかどうかはわかりません」)。これはRubyのメタプログラミングパターンです(これにより、Railsはクリーンアップされて使いやすくなります)
RyanWilcox 2011

Railsをマスターしたら、それを読む必要があります。それはすべて混乱しているように聞こえます。
desbest 08

PHPにはORMソリューションもあります。Rubyに限定されるものではありません。
クリスG.

1
phpActiveRecordと呼ばれるActiveRecordのPHP実装があります。これらのすべてを使用します。しかし、DHHがRailsを構築した当時は、PHPがそれを実現するまでには長い道のりがありました。
Jamon Holmgren 2013年

2

レールを使用しないのはなぜですか?

両方のユーザーとして、いくつかの視点を提供します。私はRuby / Railsでプログラムを趣味とし、仕事でPHPを独占的に使用しています。(注:Ruby / Railsを趣味の環境として却下することはありません。これは、私が使用することを選択した方法です。)

多くの人々が、Ruby / RailsをWebサイト開発の聖杯と見なしています。これは、人気のワゴンであり、その「異なる」ためです。多くの点で、PHPを古いものとして却下することは確かに十分ではありませんが、十分ではありません。

PHPにはRailsが提供する構文上の砂糖の一部が欠けているため、symfonyはRailsのように感じません。PHPはこの点で改善されており、5.3のクロージャーの追加により、私たちの何人がコードを書くかが変わってきました。

誤解しないでください。RubyとRailsが大好きです。しかし、複雑で高価なWebサイトのホスティングに対処したくない場合や、パフォーマンスや「最先端」であることを心配したくない場合でも、PHPは今日でも非常に関連性が高く、フレームワークも非常に優れています。

  • Redbeanは、PHPで優れたORM機能を提供します。Doctrine、Idiorm / Paris、Propelも同様です。
  • Symfony2とCakePHPは、精神的にRailsに似た肥大化したWeb開発フレームワークを提供します。
  • CodeIgniterは、肥大化のない完全なフレームワークソリューションを提供します。
  • Slimは、シナトラのようなフレームワークを提供します。

PHPのRailsクローンが「正しく感じる」とは思わないというあなたの主張は誤解されています。なぜなら、それらはクローンではなく、Railsと同じではないからです。PHPソリューションのシンプルさと親しみやすさを理解する。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.