なぜRuby Matters(そしてPHPはそうではない)

チャパエフは興味深い記事を書きました-もしあなたがその記事が好きなら-私たちはカルマをその人に追加して、彼が自分で記事を投稿できるようにします(北)



私は事前に妊娠中の女性と子供たちにこの記事を読んだりコメントしたりしないようお願いします。 また、この記事を投稿したすべての犬を北に行かせないようにお願いします。カルマはこれを許可していません。 この記事は、Ruby&Railsが大好きであり、Ruby&Railsの開発を積極的にフォローしている理由です。





私自身、Javaですべての開発を行っています。 Habréでの技術基準の1つは、「トップ10のWeb 2.0サイトのうちいくつが実行されているか」です。 Javaは別の競争に参加しています:「フォーチュンのトップ1000企業のうち何社が頻繁に使用していますか?」。 はい、これはDigg&Wikipediaではなく、IBM、Oracle、Google、Accenture、Voca、Sabre、Wallmart、世界10大銀行のうち9社、その他多くの多くの銀行です。



実際、疑問が生じます。なぜRubyに注意を払ったのですか。 一般に、プログラマーは少なくとも1年に1つの新しい言語を学ぶことをお勧めしますが、RubyはRailsのおかげで私の興味の対象になりました。 それはすべて、私がもう一度Java Web開発に出会い、新しいJava Webフレームワークを探しに行ったときに始まりました。 Javaには非常に多くの人がいるので、Neal Ford(ThoughtWorksのアーキテクト)はかつてこのテーマに関する本を書いたことがあり、Matt Raible(Appfuseの作成者)は毎年このテーマに関するプレゼンテーションを行っています。 おそらく、すべてのアイデアはJavaで最初に実装されたか、またはJavaに移植されました。 最初のMVC Webフレームワークの1つである祖父のStrus、テンプレートエンジンのVelocity(hello Smarty!)、JSF(hello ASP.NET)、その他多数の祖父がいます。 そのため、TheServerSideとJavaLobbyでリークしたRails誇大広告のピークの1つだけだったので、私はそれを試してみませんか?



それ以来、私はすべてのJava Webフレームワークを軽withして見ています。WebはRailsで書かれている必要があります。この場合、Railsは「仕事に最適なツール」です。 KISS&DRYであるため、すべてのJava Webフレームワークで入手するのは非常に困難です。 はい、仕事ではJavaでWebを作成する必要があるため、すべての悪の少ない方-Google Web Toolkitを選択しました。今では、これらすべてのJSP + JSTL / JSF / Velocityを満たしている必要はありません。何かStruts / Spring MVC / Tapestry、よりファッショナブルなAJAXを追加:JavaScript + jQuery / Prototype。 GWTを使用すると、Javaのみで記述でき、JavaScriptを含む残りの部分については考えられません)



それでは、Rubyに戻ります。 なぜそれが重要なのでしょうか?



実装。



Rubyは正しい方法で行った。 バージョン1.9以降、開発者にはインタープリターはなく、仮想マシンがあります。 これにより、Rubyは他のインタープリター付き動的言語、特にPHPに比べてパフォーマンスが大幅に向上します。 インタープリターが仮想マシンより速くなることはありません。 2番目の喜びは、JRubyとIronRubyの存在です。 今エンタープライズに参入する方法は2つあります。Java/ .Netのように見えるテクノロジーを考案するか、それらと密接に統合します。 Rubyは2番目の方法を選択し、これまでのところ非常に大きな進歩を遂げています。 ちなみに、JRubyの実装はすでにほとんどすべてのMRIテスト(Ruby 1.8.6)を上回っており、最近Railsのパフォーマンスもそれを引き上げました。現在唯一のプラグはOnigurumaポート、Railsで積極的に使用されているRuby RegExpライブラリです。



DSLとメタプログラミングの機能。



これは次の大きなことの1つです。 ドメイン固有言語は、特定の問題を解決するために作成されたドメイン言語です。 そのため、Rubyでは、その構造により、このような言語を自分で簡単に作成できます。 Rubyの世界自体のDSLは暗闇です:ActiveRecord(あらゆる種類のhas_many:アイテム)、Rake、RSpec、およびその他多数。 DSLとはどのようなものですか? DSLは、アカウントに入金して通知を送信する必要があるビジネスアプリケーションでは、このように見える場合があります。



クライアント「1234-567890」では

500を支払う

send_mail:new_payment

終わり



HTMLパーサーであるHpricotの例をご覧ください。 このコードはページをロードし、リンクのCSSクラスを変更して、結果を画面に表示します。



doc = Hpricot(open( " redhanded.hobix.com/index.html "))

(doc / "span.entryPermalink")。set( "class"、 "newLinks")

(doc / "#sidebar")。削除

ドキュメントを置く



一般に、DSLのトピックは別の考慮に値し、おそらくいつかそれについて別の記事を書くでしょう。



コミュニティ。



Railsコミュニティは、伝統、統一、多様性という3つの柱を持つインドの文化を連想させます。 おそらくラッキー・スティッフ、DHH、マーティン・ファウラーがDRY&KISSの伝統を順守して生産性を高め、より多くの新しいアイデアを提示できる理由は、おそらくMatzなどのRailsの人々だけです。 RESTが人気を博したのはRailsの後、Smalltalkの支持者がDSLとメタプログラミングの復活に歓喜したのはRubyの後でした; Javaの後に息を吹き込んだのはRuby&Railsでした。 そして無条件に、Ruby&RailsはJavaに続いて次のすべての帝国Lispプログラマーの夢への進化のステップです)



今のところすべてです。 ご清聴ありがとうございました!



All Articles