私は現在、Web開発で学習して使用するサーバー側の言語を決定しようとしています。x、y、またはzが優れている理由に関する情報を取得するのは比較的簡単ですが、それぞれの欠点を理解することは困難ですそのうちの。
特に、Ruby on Rails=他の特定の言語/フレームワークとは対照的に)を学習および/または使用することの欠点について知りたいです。
経験から言えば、欠点は、Railsフレームワークに少しtooに依存していることです。これは素晴らしいことです。 Rails "スイートスポット"に真っ直ぐ入るシンプルでグリーンフィールドのCRUDアプリを作成しているだけなら、すばらしいことです。生産性が急上昇します。しかし、それ以外のことをしなければならない瞬間スイートスポット-既存のデータベースとやり取りし、JSONまたはXML APIが定義されていない別のアプリケーションと対話し、複雑なワークフローを実装しますRailsが敵になります。is Railsでこれらのことを行うことは可能ですが、それは「粒度に対して」なので、コミュニティは通常「それを行わないでください」と応答するだけなので、基本的に自分でそれを行う方法を考え出します。 Rails way "ではありません-これは基本的にRailsフレームワークをハックする必要があるため、生産性が失われるか、非常に厄介なコードになります。
また、暗黙のマイナス面もあります。それ以外はすべて醜く、ぎこちないように見えます。 Rails(大丈夫、ここで少し伝道してください...)の甘い、甘い蜜を味わったら、他のすべては自由意志です。Railsから戻るPHP、ASP.NET Webフォーム、またはJava=は、緑豊かな庭園で戯れる後に爪のベッドの上を歩くようなものです。他の言語やフレームワークを同じ光の中で見ることはできません。そして、あなたはまだ彼らに感謝するかもしれませんが、Railsの愛情のこもった抱擁を密かに待ち望んでいます。
最初のサーバー側言語については、RoRでいくつかの問題が発生する可能性があるように感じます。
言語を学ぶだけでなく、フレームワークも学ぶのです。 Railsに飛び込む前に、私は間違いなく時間をかけて昔ながらのRubyで遊んでみます。
それはフレームワークであり、そのため「意見のある」ものであるため、フレームワークで行われているすべてのことの非常に限定されたスコープを提供すると思います。
全体Ruby on Railsは、ボールを転がすための良い出発点になる可能性がありますが、見落とす可能性があるWeb開発について学ぶことはたくさんあります。単一のフレームワークに依存しすぎている。
私はRoRを何度か学習しようとしましたが、私の最大の問題は、常にパッケージとドキュメントを正しく機能させることです。ドキュメントの問題は、常に古くなっている(または非常に基本的な)ように見えることです。私はサイトから基本を手に入れましたが、それを超えてすべてがとても古く見えました(私が買った本でさえ戻ってしまいました)。欠点となる可能性のあるもう1つのことは、一部のライブラリの依存関係と、それらが他のライブラリとどのように競合するか Ben Coeが述べたとおり です。
後で考えてコメントにする代わりに、私が編集したいのはこれです:RoRは、Ruby forやってみたら「ルビーはバカだった」と思ってしまいました。それから数ヶ月後、私はRubyを試してみて言語を愛しました。それがフレームワークでした。そのため、言語が嫌いになりました。あまり手を出していないのですが、そうしたときは本当に楽しかった Sinatra 。多くの人がRoRからSinatraを離れて喜びを得たと思います。
これが最初のサーバー側言語である場合、それは他のどの言語よりも優れています。やるべきことは1つに焦点を当て、それをマスターしたと感じた後、他の人を探索し、自分の結論を導き出すことです。
私はRoRとASP.NETを日常的に使用していますが、奇妙なことに、ASP.NETの世界を好みますが、それは言語やアーキテクチャー自体よりも個人の哲学に関係しています。 (私は少しコントロールがおかしいので、強く型付けされた言語に個人的に引き付けられます)。
とにかく、私はそれをやってみると言います。 RoRは作業するのに最適な環境ですが、Railsにすぐに入る前に、Rubyを言語として使いこなしてください。Webを超えて、Rubyは* nixボックスを管理する必要があり、時間を大幅に節約できる場合は、かなりクールなスクリプト言語。
最近Railsを学び(趣味として-商用グレードの開発にそれを使用したことがない)、すでにJEEおよびASP.NETで働いていた人として、 Wayne M の答えは非常に鳴り響きました本当。
とにかく、これにはまだ誰も言及していない微妙な側面がありますが、Rails- convention over configuration への強い依存に少し悩まされました。
基本的に、新しいコードベースで「ファイルの検索」駆動型のオリエンテーションに慣れている場合、CoCはRailsを取得しようとするときに煩わしくなります。それは、正確にRailsの方法で行われる単純なCRUDグリーンフィールドに最適ですが(Wayne Mが言うように)、よりユニークで複雑なものに対しては、作業しようとすると何が起こっているのかを理解するのが難しくなります。ファイル内のものを検索してフローを調べ、配管がどのように接続されているかを確認します。
私が思うに、この問題は、Railsの経験を積んでいれば、それほど悪くはないでしょう。非常に冗長な設定フローに慣れているoldskool Java/.NET Web開発から来た誰かにとって、それが問題であることが確実にわかります。
私と一緒に、私が最初のX(あなたの場合、Xはサーバー側のWeb言語/フレームワークです)を学ぶ最大の問題は、他の問題を見つけたらすぐに、Xを適用し始めたいということです。最良の選択肢ではないかもしれません。私はこれで上達しましたが、それでも強い傾向です。
Ruby on Railsは、始めるのに適した選択肢です-優れたコミュニティ、たくさんのドキュメント、優れたチュートリアルがあります。ただし、特により多くのことを始める場合は、代替案を念頭に置いてください。 Web開発。RoRは、いくつかの問題ではやり過ぎであり、他の問題では不十分な解決策であり、別のセットに最適な選択肢である可能性があります。その長所、短所、およびツールの使用方法を理解してください。
私のアドバイスは、完了したいプロジェクトの明確な図を用意し、それからビルドを開始することです。問題が発生すると、最終的には適切なツールをすべて入手することになります。このアプローチは、簡潔な問題に基づいて意思決定を行っているため、優れています。
やるべきことは本を買うことです。私の経験では、インターネットチュートリアルはそれを切りません。彼らはまた、気晴らしのために多くの部屋を開いたままにします。あなたが本を持っているとき、それは悪いレビューを受けた場合、彼らはお金を失うので、出版社はそれが価値を提供することを確認する必要があります。少しのお金を使うことはあなたに多くの時間を節約します。
Ruby-on-Railsの庭の散歩とは何かを詩的に理解する人たちを正直に理解できません。私は経験豊富なASP.NET-MVC、Java、PHP、Python開発者としてそれを思いつきました-そして、これはこれまでで最も恐ろしい時間の浪費であることがわかりました!オンラインgoogleの90%答えは間違っているか不完全です。なぜですか?毎年大幅に変更されていますか?それとも、コードを実際に機能させることに誰も気にしていませんか?単純なことだけを行うのに膨大な時間がかかりました。たとえば、C#/ ASP.NET-MVCを使用してください。オリジナルのテクノロジを習得するのに、それほど長い時間はかかりませんでした。もちろん、RORは簡潔です。それが重要な場合は、コードを作成する方法はほとんどわかりません個人的には、キーボードで20秒間タイプして、確実に機能し、明確で、それに従っていくことができるコードを書くのではなく、簡潔にRuby 2のコードを入力する秒ですが、実際に機能させるための方法を探して徹夜するまでは機能しません。恐ろしい、悪臭を放つdodoの山です。なぜですか? (無料のように)ソースコードは、それを高品質のツールにするインセンティブを生み出しませんか?修正やモジュールをポンプで送り込むスクリプトキディが多すぎて、不適切なドキュメントが含まれていますか?知りません。しかし、その最初のRuby-Railsプロジェクトからようやく脱出できたとき、私は二度とその混乱に踏み込むことはないと誓った!
さまざまな言語/スクリプトの流行を評価するインデックスを確認することをお勧めします。役立つと思われるリンクを次に示します。 人気のある専門的に使用されているWeb関連の言語。
これは、オンライン求人の検索に基づいたWeb関連言語の相対的な人気を示しています。
RoRに関する上記の回答のいくつかに同意します。私は過去2年間、RoRを使用してアプリケーションを開発してきました。シンプルなアプリケーションで非常に優れており、CRUD(作成、読み取り、更新、削除)操作は非常にうまく機能します。シンプルなアプリケーションを開発する上での恩恵ですが、その制限もあります。宝石はたくさんありますが、さまざまな利点と使いやすさを備えていますが、基本的にはそれです。箱から出して行くと、アプリケーションはすべてねじれます。
RoRを使用してアプリケーションの作業をしている大規模なチームの場合、作業の委任を回避するのは難しい場合があります。