Python はオブジェクト指向の文字通りのコンピューター プログラミング言語であり、Python の構文はシンプルかつ明確で、豊富で強力なクラス ライブラリを備えています。 Ruby は、シンプルで高速なオブジェクト指向 (オブジェクト指向プログラミング) スクリプト言語です。この記事では、Python と Ruby の類似点と相違点について説明します。
1. 類似点と相違点の比較選択
1. Python と Ruby の類似点:
* どちらも単純な構文を重視し、より一般的な表現を持っています。 Pythonはインデント、Rubyは基本的な表現です。すべてのシンボルが大幅に削減されました。
* はすべて動的データ型です。いずれも豊富なデータ構造を持っています。
* どちらも C 言語の拡張機能を備えており、移植性があり、Perl の移植性よりも優れています。組み込み言語としても使用できます。
* どちらもオブジェクト指向言語であり、大規模プロジェクトの開発ツールとして使用できます。
* すべてに豊富なライブラリがサポートされています。
* 一部のツールが GNU ワールドに属していることを除いて、最も寛大な著作権ライセンスもあります。
* すべてに Lisp 固有の eval 関数があり、関数をパラメーターとして受け取ることもできます。
* グラフィカル インターフェイスを備えた Ruby 固有のエディタもあります。
* すべては幅広い C ライブラリでサポートされています。 qt、gtk、tk、SDL、FOXなど、RubyはSWIGインターフェースを実装する予定です。
* すべてに完全なドキュメントが付いています。
2. Pythonと比較したRubyの利点:
* 正規表現とHTMLの埋め込み機能を備えています。 Python にも正規表現がありますが、Ruby ほど便利ではなく広く使用されています。 Python の埋め込み HTML プロジェクトはまだ始まったばかりです。 Ruby には Apache mod モジュールもあります。 Ruby 自体も、rac や doctools などの多くの UNIX ツールを実装しています。 PythonよりもLinuxに近い。
* Python よりも完全なオブジェクト指向構文。
※rubyのライブラリ全体はクラス継承のある構造になっています。
* 基本的なデータ型と演算子はオーバーロードできます。
*Ruby の主要な関数は、関数ではなくオブジェクト メソッドの呼び出しを通じて実装されます。 Python もこの分野で開発されていますが、Ruby ほど徹底していません。
*Ruby クラスはより標準化された単一継承であり、インターフェイスなどの概念も実装されています。
* Python は条件文やループ文をリストに実装できますが、Ruby は「ブロック」を使用してこの機能を実装し、Python よりも柔軟で多用途です。
*RubyにはLispと同様に完全な関数形式で条件文やループ文などが存在します。文章がより表現力豊かになります。
* rac などのいくつかの UNIX ツールが付属しています。
3. Python と比較した Ruby の欠点:
* 最大の欠点はまさに Ruby の能力によって引き起こされます。 Python のような単純さはありません。より複雑なオブジェクト指向構文、「ブロック」構文の導入、正規表現の導入、および一部の省略タグはすべて、言語の複雑さを増大させます。
* Rubyの基本的な表現よりもPythonのインデント表現の方が目に心地よいです。 Rubyプログラムの端だらけの目は不快です。もちろん、Ruby は end メソッドが Python よりも高度であると考えています。
*Ruby には、Python の「イントロスペクション」機能やプログラム ファイルからドキュメントを生成する機能がまだありません。
*Ruby は国際化をサポートしていません。国際化サポートは Ruby の計画に含まれています。なぜなら、RubyはPythonよりも歴史が浅いからです。
*Ruby には jython に相当するものはありません。
4. Python と Ruby の間の言語の選択:
シンプルさが最善であるという観点からは、Python を選択するのが正しいです。 Python は、シンプルな言語を探している人に適しています。これにより、Python の人気が高まり、より多くのサポートが得られる可能性があります。しかし、より強力な構文機能を追求したい場合は、ruby が良い選択です。 Ruby と Python の哲学には多くの類似点があるため、まず Python から始めて、Python を使用してみてください。Python が十分に強力でない場合は、Ruby を探すことができます。
ruby と python の比較は、Wubi と Pinyin 入力方式の比較に似ています。ピンインは、初心者向けの入力方法としても、長期的に使用する入力方法としても問題ありません。 Wubi は、より要求の厳しい状況に適しています。パフォーマンスを追求する場合は、Ruby を学ぶのもよいでしょう。プログラミング言語に興味があり、さまざまなプログラミングの概念を理解したい人は、Ruby を学ぶのも楽しいでしょう。
2. どちらも独自の特徴があります:
1. Python は構文の点でより単純ですが、Ruby はよりセクシーです
他のスクリプト言語と比較して、Python の構文はあまり多くのトリックがなく、比較的厳格です, 実際、Guido の設計言語の方向性は、Python のコードの強制インデントからもわかります。厳格な構文は、Rails のようなフレームワークのような、より性的なものを扱うのが簡単ではないということです。また、Python は DSL のようなことはできません。しかし、厳格な構文のもう 1 つの側面は、より標準化されており、比較的多くの機能を備えているということです。ソフトウェア開発に適したエンジニアリング要件により、開発のための大規模なチームを組織することが容易になります。
Ruby の構文は非常に柔軟です。Matz の Ruby 設計の出発点は、遊びのためのコーディングでもあります。そのため、十分なスキルがあれば、Ruby を使用して DSL を書くことができます。プログラマーにとって、ruby をプレイするのはとても楽しいことです。 Python コミュニティの誕生ではなく、Ruby コミュニティでの Rails の誕生は間違いなくプログラミング言語に直接関係しています。ただし、Ruby の柔軟な構文の裏には、プログラミング実装スタイルの多様性があり、これが大規模チームのコラボレーションと管理にとっての課題となります。
2. Python のパーサー実装はより成熟しており、サードパーティのライブラリは高品質です
Ruby 1.9 パーサーは大幅なパフォーマンスの向上と多くの新機能を実現しましたが、ソース コード実装の観点から見ると、基本的には Ruby 1.8 のソース コードにパッチを適用することによって機能が追加されます。ソースコードの構造上、Ruby の実装が古すぎるため、Ruby の拡張は難しく、パッチを当て続けるしかありません。これが、Ruby コミュニティで非常に多くの新しい Ruby パーサー実装が登場している理由です。これにより、Ruby の開発速度が大幅に制限されてきました。比較的言えば、Python パーサーはより成熟しており、安定しています。
サードパーティライブラリの数という点では、RubyはPythonに劣りませんが、PythonにはRubyよりもはるかに多くの高性能、高品質で実績のあるサードパーティライブラリがあります。あまり成熟していないため、Ruby の開発は大幅に制限されています。
3. Python は幅広い応用分野を持っていますが、Ruby は現在主に Web 分野に限定されています。サーバー バックエンドでのサーバー実装 サーバー バックエンド さまざまな集中操作、全文検索、さまざまなテキスト処理、システム管理など。さらに、wxPython はデスクトップ アプリケーション分野で非常に成熟したクロスプラットフォーム GUI フレームワークでもあります。 。オペレーティング システムのカーネル API の呼び出しなど、一部の特殊なアプリケーションでは、Python を使用して inotify 機能を直接呼び出すことで、多数の小さなファイルのリアルタイム同期ソリューションを実現できます。 Linux カーネル。つまり、Python はソフトウェア開発のスイス アーミー ナイフであり、何でもできます。
Ruby パーサーと Ruby クラス ライブラリの制約のため、現在、Ruby の応用は主に Web 開発の分野に限定されています。 Douban は初期に Ruby on Rails を検討したと言われていますが、Ruby では他のことができず Python では何でもできるため、最終的には Ruby を諦めて Python を選択したそうです。
4. Ruby は Web 分野の王様です
インターネット アプリケーションがソフトウェア開発のさまざまな分野にさらに浸透するにつれて、実際、Web 開発がソフトウェア業界全体の発展に占める割合が増加しています。 Ruby は他の分野では非常に限られていますが、Web 開発の分野では絶対的な王様です。 Rails フレームワークは、潜在的な競合他社よりもはるかに進んでいます。したがって、Ruby には何らかの問題があるかもしれませんが、Web 開発に関して言えば、Rails がほぼ唯一の選択肢であることは議論の余地がありません。
Python は非常に包括的ですが、Web 開発の分野では傑出したものではありません。Web フレームワークは数多くありますが、Python コミュニティでは Django の方が人気がありますが、欠点もあります。多くの側面。今日のインターネット アプリケーションは、多くの場合、複数の言語でプログラミングされています。Web 以外の Ruby の欠点は、他の言語で補うこともできます。
5. Python のパッケージ管理は Ruby ほど優れていません
Python のサードパーティ ライブラリは高品質で成熟していますが、Python コミュニティには RubyGem のような優れたパッケージ管理ソフトウェアやパッケージ公開 Web サイトがありません。したがって、アプリケーションの構築は Ruby ほど便利ではなく、ユーザーフレンドリーでもありません。特にクラスライブラリのバージョンアップ時にはRubyGemほど簡単ではないトラブルが多く発生します。
しかし、一般的に、Python と Ruby は非常によく似た 2 つのプログラミング言語です。両方のプログラミング言語を学習したとしても、それほど多くの時間を無駄にすることはありません。私が個人的に選択する場合は、まず Rails を使用して Web アプリケーションを構築し、次に状況に応じて Python または Java を選択してサーバーのバックエンド操作を処理します。つまり、未来はまだハイブリッド プログラミングの時代です。私たちはいくつかのプログラミング ツールについて詳しく知り、必要に応じて活用する必要があります。
3. 「Ruby と Python の比較」の修正
1. ドキュメント、オープンソース プロジェクト、およびライブラリのサポートについては、桁違いの問題ではありません。なぜそれらが並べて配置されているように見えるのでしょうか。
2. Python にはコアに正規表現モジュールが組み込まれていませんが、re 標準ライブラリのサポートはあります。その時の目的は、コアを可能な限り小さくすることでした。よくわかりませんが、標準ライブラリと組み込みの使用の違い、あるいは利点は何ですか?そして、Python で正規表現を使用するのは、呼び出し時に複数の import
を実行し、保存された無数の文字だけで、この問題を解決するのに十分です。
3. 埋め込み HTML 関数に関しては、Python で利用可能な C/Python デュアル実装の Cheetah テンプレートがあります。これは、Zope のおかげで、アメリカ海軍とフランス政府によって使用されていると言われています。関数はRubyにありますか?
4. mod_ruby モジュールが登場したのは短期間です。作者が mod_python について聞いたことがないのであれば、彼は本当に無知です。私が 1 年前に mod_python3.2.8 ドキュメントを翻訳したとき、mod_python はすでに非常に成熟しており、ほぼすべての Python
WEB フレームワークで効率を向上させるために mod_python 上に構築することがサポートされていました。ただし、mod_rubyは年に数回しか更新されないそうです。 mod_python には gnu.org のような重量級アプリケーションもありますが、mod_ruby にもあるのでしょうか。
5. さらに、unix ツールについても言及します。 Red Hat
Linux のインストール プログラムは常に Python で書かれています。Ubuntu を使用している場合、システムのアップデートを促すプログラムも Python で書かれています。
6. rac と doctools。グーグルで調べたところ、あなたの記事以外に rac に関する中国語のコンテンツがほとんど見つかりませんでした。 Google の観点から、rac の使いやすさについてはあまり言いません。 yacc ツールが日常のプログラミングにどれほど役立つのかよくわかりませんが、作者が言及していたので、名前だけ聞いたことがあり、使用したことがなかった Spark を探しました。グーグルの結果は、「racc
ruby」:「python
spark」=159,000:659,000です。 doctools については、何も言うことはありません。Google には 15,800 件のレコードしかなく、これが何に使われているのかまだわかりません。そこで、おそらく似ているものを見つけて比較したところ、Docutils と Google のレコードは 25,400 件でした。
7. 「Python ライブラリよりも完全なオブジェクト指向構文」。オブジェクト指向の目的は何ですか?さらに、Ruby は Python に似ているのでしょうか? ほとんどの標準ライブラリは、一般的な名前を推測するだけで済み、直接使用する必要はありません。モジュールの内容が少なすぎて覚えにくいため、2 回目までは直接記述できますか?さらに、オブジェクト指向は特効薬でも最先端のソフトウェア エンジニアリングのアイデアでもありません。
8. 「Rubyライブラリ全体がクラス継承構造に基づいている」 個人的にはJavaのカスだと思っていますが、宝物として勉強させていただきました。おそらくこれは、Java プログラマーを救う Ruby の利点でもあります。
9. 「基本的なデータ型と演算子はオーバーロードできます。」 これは、Python での __add__ などのオーバーロードがカウントされるかどうかは、あまり明確ではありません。
10. 「Ruby の主な機能は、関数ではなくオブジェクトのメソッド呼び出しによって実現されます。」 この文の意味がわかりません。また、徹底を追求しすぎず、実践的という言葉の方が魅力的であることをおすすめします。
11. Python はプログラマーに柔軟性を与えるために単一継承を厳密に必要としません。また、インターフェースに関しては、Python で同じ名前の関数が定義されていれば、同じインターフェースを持つものとみなされます。形而上学がここまで上がってきて、ちょっと混乱してしまいました。インターフェイスに関しては、Ruby のいわゆるインターフェイスは単なるミックスインですので、あまり自信を持ってはいけません。これは Python のいくつかの大規模なプロジェクトで実装されていますが、Python にとって明らかに意味がないため、これ以上使用されることはありません。
12. Lisp 関数型プログラミングに関しては、Python にはマップ、zip、フィルターなど、そしてもちろんラムダなど、多くの組み込みサポートがあります。サポートについて話すのではなく、実用性について話しましょう。 Python 愛好家の中には、関数型プログラミングがコードの可読性に影響を与えると今でも考えており、それを避けようとしている人もいます。したがって、何かをサポートすることを考える前に、まずそれが良いことなのかどうかを考えてください。
13. 「最大の欠点はまさにルビーの力によって引き起こされます。」あまりにもひどいのでノーコメントです。
14. ははは、Ruby は国際的にサポートされていません。当時、あの小さな日本人は何を思ったのでしょうか。彼は英語で CET-4 に合格しましたか?
15. jython に関しては、著者の原文が比較的古いためか、現在では jruby もあります。 Python には、jython、
ironpython、pypy、
pyrex など、多くの実装もあります。 Python の優秀性は、必ずしも他の言語で実装する必要はありません。もちろん、Java が Ruby を窮地から救ってくれることを期待するのは言うまでもありません。
さらに、Ruby のいくつかの欠点を回避しないでください:
16. Ruby にはローカライズされたスレッドがありませんが、マルチコア CPU をまったく利用できない疑似スレッドが使用されます。 CPython はローカライズされたスレッドを使用しますが、GIL を使用するため、マルチコア CPU を活用できません。しかし、スタックレスの登場により、この問題は完全に解決され、スタックレスは Python を並列コンピューティングの高みに引き上げました。この高さの競合相手は Erlang であり、Ruby は当然のことながら詮索する必要はありません。超軽量のスレッディング テクノロジーにより、性能の悪いマシンでも数十万のスレッドを簡単に実行できます。 Twisted に基づく非同期プログラミングもオプションとして提供されます。
17. 私が Python を学び始めたとき、「Python は主流の動的言語の中で最も遅い」という話を聞きましたが、そう言った人は Ruby をまったく真剣に考えていなかったことが後でわかりました。 Ruby が主流の動的言語に含まれる場合、Python よりも桁違いに遅い言語が存在することになります。
18. ルビーって人気あるの? PHPに行くつもりですか? PHP は良いのですが、WEB プログラミングにしか使えないのが問題で、もう少しシステムを必要とするものは C を使わなければなりません。そして今、Ruby はこの道をたどっているようです。ある日、誰かが「Ruby はクライアント プログラミングに使用できる」というニュースを発表し、誰もが好奇心をそそられました。さらに、現在のRORが何かを置き換えることができるかどうかはまだ不明です。 Java
WEB開発から救出された人全員がRubyに行ったわけではありません。
4. 「Ruby それとも Python?」にコメントする》
PythonとRubyの設計思想は確かに大きく異なりますが、この問題に関しては、どちらが優れているかについてはコメントしません。効率に関して言えば、Ruby を Python と比較するべきではありません。 Ruby は疑似スレッドであり、マルチコア CPU を活用する可能性はありませんので、そのまま渡します。そしてPythonはネイティブを使用します
スレッド、一部のモジュールがスレッドセーフではないため、マルチコア CPU のアプリケーションを制限するために GIL が追加されました。私の最近のテストでは、Twisted の非同期スレッドを使用した後、マルチコア CPU の計算能力を十分に活用できました。実行効率は桁違いですが、自分で試してみればわかります。
Java と Python を比較すると、著者の創造性がわかります (笑)。オープンソース プロジェクトはダーウィンの自然選択と非常に一致しています。Ruby にオープンソース プロジェクトがないことが利点なのでしょうか。また、PythonではWEB
フレームワーク以外で重複が多すぎるプロジェクトを見たことがありません。たとえば、pypcap は基本的に pcapy を排除しました。
リソースに関して言えば、Ruby にはまだ長い道のりがあるので、どちらの側も強いという点については、あまり並置しないでください。 Java コミュニティの人々が Ruby を学ぶ傾向にあることについては、個人的には、Java に慣れている開発者は視野が狭すぎるだけだと思います。言語はツールであり、オブジェクト指向もツールです。Python も関数型プログラミングをサポートしているとは限りません。なぜ著者はそれについて言及しなかったのですか。さらに、Python の実践の多くは開発効率を第一の目標としており、さまざまな形式に限定されず、知識が限られた多くの人々から広く批判されている C++ の多重継承も Python でサポートできます。問題は、あなたが気に入らないものをサポートすることではなく、できるだけ多くの人に好きなものを使ってもらうことです。さらに、Ruby 開発者が常に OO では不十分だと考えている Python の例は、Python がシーケンスの長さを取得する場合に len(x) メソッドを使用することです。この質問に関して、Ruby 開発者が x.length を OO とみなすことができると考えている場合、Python は x.__len__() を直接使用して長さを取得することもできます。メソッドを使用してプロパティをカプセル化する Java の観点から見ると、どちらがより OO なのでしょうか (笑)。
Ruby は日本人の作品です(笑)、これについては詳しく説明しません。日本が嫌いな中国人はたくさんいます。ここでは非技術的なことは使わずに、技術的なレベルでのみ Ruby を軽蔑することができます。 。
Rubyon
rails について、Ruby コミュニティはほぼすべてのエネルギーをこれに集中しています。しかし、これはRubyの単純さを示すだけです。多くのRORの模倣者がRORをはるかに超える無数の高度な機能をリリースしていることは事実によって証明されています。RORを置き換えるのは単なる先入観から来ています。今、Ruby が突然 ROR を失ったらどうなるでしょうか?筆者の言うzendに関しては、RORに比べれば卵で石を叩くようなものです。私はPythonのWEBフレームワークを2つ学習しており、普段はPythonとRubyのほうに色々と注目していますが、これまで一度も勉強したことがありません。 zendのことは聞きましたが、それが作者の作品かどうかはわかりませんが、ははははははありません。 WEB フレームワークで競争する必要がある場合は、django、Quixote、mod_python などを使用して比較できます。 ROR模倣品の代表格であるDjangoは現在も成長を続けていますが、すでにRORを上回る機能を多数備えており、性能もRORよりはるかに優れていることは言うまでもありません。 Quixote を使用する douban.com は、Python と Ruby を使用したすべての Web サイトの中で最大のトラフィックを持ち、同じハードウェア構成の ROR と比較して 2 倍以上の速度を示します。これは、WEB サーバーなどのさまざまな等価損失を除去した後で知っておく必要があります。 、これは桁違いに速いものです。 mod_pythonはこれを使っているそうです。 Ruby が依然としてオープンソースでありたいのであれば、Ruby は常に Python の影の中に存在することになります。
起動の早さに関しては人それぞれ事情が違うのでコメントしません。柔軟性が何をもたらすかについては、意見の問題ですので、コメントしません。著者は Python を始めるのがいかに難しいかについて語っていますが、Ruby がどれほど簡単であるかは実際にはわかりません。初めて Python を学んだとき、11 日目に Python で字句パーサーを作成しました。これは今でも私のブログで公開されています。したがって、初級の難易度に関しては、他人の意見を聞かずに、みんなで自分の力で挑戦してみるのが良いでしょう。
RORで生成されたディレクトリには色々なものがあり、それをすべて理解するのに時間がかかるとありますが、これはまさにIDE症候群です。 Python の典型的な例は TurboGears です。アプリケーション全体がどのように動作するかを理解したい場合は、コアの Cherrypy から学習を開始できます。その後、TurboGears を使い始めると、何も分からなくなります。この観点からすると、ROR に選択肢はありません。また、ROR で利用できる WEB サーバーへの接続手段である scgi も当時は Python の作品であり、Python の陰に隠れていた存在でした。
Rubyの今後の発展については何とも言えませんが、苦肉の策なのでリスクは依然としてかなり高いです。 Python に関しては、本当に順調に発展していくだろうと思っていましたが、Micro$oft の追加により、Python の将来がどの程度大きくなるのかを予測することが難しくなりました。話を戻して、著者が常々嫌っていたPythonの多様性についてですが、私の考えでは、RubyがPythonを超えられるものはほんの一握りであり、PythonがRubyを超えるものは当然Rubyにとっては超えられない差です。したがって、プログラミング言語の多様性を考慮すると、誰もが Ruby を学ぶことはお勧めできません。選択肢が 1 つ減り、ある程度の人気が集まるのは常に良いことです。
5. PythonとRuby、どっちを選べばいいの?
実際、Python と Ruby は非常に近いものであり、他のほとんどの言語よりもはるかに近いため、好きなものを使用できます (正直に言うと、これもナンセンスですが)。構文にはいくつかの違いがありますが、そのほとんどは糖衣構文です (私は Python をほとんど忘れているので、間違っている場合は遠慮なく批判してください) が、主な違いは依然として次のとおりです。設計コンセプト: 柔軟性と明示的。慣れていれば、この 2 つの生産性に違いはないと思います。 *比較は言語自体に限定されることに注意してください。
1. Ruby の case は、範囲/配列、オブジェクト、正規表現など、多くのものに一致します。Python には case/switch がありません。Python のインデントは、場合によってはより厳密です。何かのトラブル。 Ruby の終わりはかなり醜いので、誰もがワンライナーになることを余儀なくされています (冗談)
3. Ruby は Python よりも OO であるように感じます。 もちろん、これは Python が を提唱していないためでもあるかもしれません。オブジェクトの内部構造を変更する「トリック」の使用。錯覚
4. Python にはリスト内包がありますが、Ruby にはありません:(
5. Python には実際のキーワード引数があり、Ruby はそれをシミュレートするためにハッシュを使用します。もちろん、実際の使用には違いはありません
6. Python には非常に面倒ですが、Ruby には面倒なことはありません
7. Ruby には object.methods などの多くの組み込みメソッドがあり、Python はこの情報を保存します。特別な辞書で
8. Ruby のブロック関数は非常に強力で、Python のラムダは単一の値しか返せません
9.ruby のオープン クラスは広く宣言されており、2. days.ago のようなトリックを実行できます。 Python は組み込みクラスを直接変更できないようであり、そうすることに反対しています。 10. Python は @classmethod で宣言されたクラスを変更する必要があります。ruby は組み込みです
11。モナドメソッド。これは、Python に同様の概念があるかどうかはわかりません
12。Ruby には、method_missing メカニズムがあり、Python は (qiezi からの) __getattr__ を使用してメソッドをインターセプトできます。 13. Ruby は単一継承 + mixin を使用しますが、Python は多重継承を使用しますが、Python には mixin もあります
14。 Python のプロパティ メソッドは依然として自分でセッター/ゲッターを作成する必要があります
15. Ruby と Python はどちらもダック タイピングを使用しますが、Python にも明示的なインターフェイス メカニズムがあります (zope3 からカーネルに組み込まれたのでしょうか?)
16. Ruby の関数呼び出し括弧は、キーボードを数回クリックするだけで省略できます。Python のメタ プログラミングがどこまでできるかはわかりません。専門家の説明を待つ必要があります。Python 愛好家はあまり使用しないので、プログラムのロジックがわかりにくくなると思われるかもしれません
18. Ruby は、多くの事前定義された $x など、いくつかの醜いものを Perl から継承しています。定数
19. Ruby には組み込みの正規表現があり、これはより便利です
20。Ruby の yield は、ジェネレーターへの値の入出力に使用されます。
21. Python ライブラリの命名規則が少し矛盾しているように感じます。おそらく、Python の三重引用符は非常に美しいものです。 Ruby の < ;<-XX…XX は醜すぎます。%q{…} を使用して複数行のテキストを折り返すこともできます (qiezi より)
23。 Ruby のクラス ライブラリの設計では、メソッドにエイリアスを追加するのが好きです。記憶を促進します。
もう 1 つ: Ruby の公式 Web サイトでは、いくつかの基本的な比較も提供しています。
6. 2 つの言語のリソースと学習曲線の比較:
不適切な比喩を使用した全体的な印象: Python が Java である場合、Ruby は .net です。 Java の世界は非常に複雑で多様であることは承知していますが、どのような要件であっても、さまざまなアイデアを使用して実装されており、どれを選択するかは常に困難です。同じことが現在 Python にも当てはまり、Python は Java よりも開発の難易度がはるかに低いため、Java よりも多くの Python 関連プロジェクトが存在します。
リソースの点では、どちらのコミュニティも非常に強力です。興味深いことに、Java コミュニティは現在、Ruby に同化される危険にさらされています。私が購読している Java ブログ集合体の少なくとも一部では、Java よりも Ruby について話しています。 Ruby のコミュニティはより集中していますが、Python のコミュニティはより分散しています。 Ruby には日本のユーザーが多いのではないかといつも思っていますが、私は日本語がわからないので、この考えを確認するのは困難です。私は、英語を母国語としない創業者に対して、彼を理解するのが難しいのではないか、最新のニュースを入手するのが難しいのではないかなどと、常に少し恐れています。現時点では、この心配は不要であるように思えますが、誰が何が起こるか知っています!
Ruby が突然人気になった理由は、Rails アーキテクチャと切り離すことができません。 Ruby を検討する場合は、Ruby on Rails を検討してください。 Rails は、開発効率が非常に高い優れた Web 開発フレームワークを提供します。 Python には同様のアーキテクチャ実装が多数ありますが、世界を統一できるアーキテクチャはありません。 Python の zend は完成していますが、Web サーバーに偏っており、Rails と比較することはできません。
Ruby は Python よりも使いやすいです。 Ruby には言語機能という観点から見ると、ブロックなどの興味深いものがたくさんありますが、それらを大規模に適用するとプログラムが混乱してしまいます。 Python 構文は単純さを重視しますが、柔軟性が高く単純すぎるため、従来のプログラマーにとっては驚くような表現が目に入ることがよくあります。これを利点と見なすべきか欠点と見なすべきかはわかりませんが、少なくとも構文が柔軟すぎるため、プログラマごとにコーディング スタイルに過度の違いが生じやすく、学習コストが増加する可能性があると思います。
使い始めの初期段階では Ruby の方が簡単ですが、ある程度の複雑さのレベルに達すると、Ruby の難易度は急激に上がります。 Python を始めるのは簡単ではありませんが、複雑になってもそれほど苦痛ではありません。 Rails には、始めるのは簡単ですが、とっつきにくいという問題があります。 Railsによって生成されるディレクトリの目的は何ですか? O/R マッピングはどのように実装されますか? Web からデータベースにデータを転送する方法。これらはすべて、Ruby プログラマーが遅かれ早かれ直面する問題です。 Python の場合はそうではありません。これらを理解していなければ、おそらく使い始めることができません。 VB、Delphi、.net のいずれであっても、高度に統合された高速開発ツールにはこのような特徴があります。半年未満でプロジェクト ディレクトリ内のすべてのファイルの目的を明確に説明できる開発者がどれだけいるでしょうか。各ファイルの構文は?経験豊富なユーザーでも明確に説明できない人も多いと思います。
構造的な観点から見ると、この 2 つは実際には大きく異なりますが、最終的な結果は非常に似ています。 Ruby は純粋な OO 言語ですが、Python は関数と OO が混合されたものです。 Ruby では関数型スタイルのコーディングも使用できますが、実際にはシミュレートされます。結局のところ、両者は見た目が似ているため、この違いは通常のプログラマーには大きな影響を与えません。
一般的に、初めて開発に挑戦する非専門家には Ruby が適しています。プロのプログラマーの場合は、やはり Python を選択することをお勧めします。
今後の開発に関しては、Pythonの開発は予測可能であり、比較的安定していると思います。 Python はすでに個人ではなくコミュニティに属していますが、Ruby はさまざまな理由により、Ruby の作者の迷路は依然として Ruby の開発に大きな影響を与えるでしょう。 Sun は Java を管理していますが、Sun の強力なリソースと調整のための jcp 組織のおかげで、Java は非常に順調に開発されていますが、Ruby がこれを達成できるかどうかを証明するには時間がかかります。
7. Python から Ruby へ
Python は非常に優れた言語です。Python から Ruby に移行すると、いくつかの文法の違いに気づくでしょう。
類似点
Ruby では Python と同様に...
対話型プロンプト (irb と呼ばれる) があります。
コマンドラインでドキュメントを読むことができます (pydoc の代わりに ri コマンドを使用)。
何もありません特殊な行を終了する記号 (改行を除く)
Python の 3 つの引用符と同じように、テキストは複数行を使用できます。
リストには [] を使用し、辞書には {} を使用します (辞書は「ハッシュ」と呼ばれます)。 Ruby)
配列も同様に機能します (2 つの配列を追加して長い配列になりますが、a3 = [ a1, a2 ] のように結合すると、配列を含む配列が生成されます)。変換されました。
すべてがオブジェクトであり、変数名はオブジェクトへの単なるポインタです。
キーワードは異なりますが、例外は同じように機能します。
ドキュメントを埋め込むためのツールがあります(Rubyではrdocと呼ばれます)。 .
違い
Pythonとは異なり、Rubyでは...
文字列を変更できます。
定数を使用することができます(定数の値は異なる方法で変化します)。
ここには必須の記述要件がいくつかあります (例: クラス名は大文字で始まり、変数名は小文字で始まります)。
コンテナ(配列)は1つだけあり、変更可能です。
引用符内の文字列制限は異なります。
ここには新しいクラスのスタイルはありません。クラスには 1 つのスタイルしかありません。
Ruby ではプロパティに直接アクセスすることはできません。すべてメソッド呼び出しを通じて行われます。
メソッド呼び出しでの () の使用はオプションの戦略です。
ここでは、プライベートおよびその他のアクセス制限されたキーワードを使用して、Python で隠されている名前を置き換えます。
「ミックスイン」は多重継承を置き換えるために使用されます。
いつでも既存のクラスを変更し、新しいメソッドを追加できます。
True と False を true と false に置き換えます (None を nil に置き換えます)。
真理値を判断する場合、false と nil のみが false とみなされます (0、0.0、""、[] を含む)。
elifをelsifに置き換えます。
importをrequireに置き換えます。ただし、使い方は同じです。
通常のスタイルを使用してドキュメントに注釈を付け (docstring を置き換え)、同時にドキュメントを生成します。
8. Python と Ruby を 3 つの側面から比較します。
1. それぞれに適したアプリケーション
2. 開発環境と実行環境
3. プロジェクトは最終的に移植される予定なので、移植性はどうですか? Windows CE Symbina などのモバイル プラットフォーム
[1. それぞれが適用できるアプリケーション]
レビューした結果は、両方の言語で良い評価を得ているようで、ネットワーク開発におけるパフォーマンスは非常に良好です。迅速なアプリケーション開発に非常に適しており、開発効率が非常に高くなります。
Python:
プロジェクトに関連するアプリケーションの説明を抜粋しました
クロスプラットフォーム開発:
Python は、さまざまなプラットフォームを中立的な方法でサポートします。ユーザーが使用するシステムにさまざまなプラットフォームが含まれている場合は、Python を使用してアプリケーションを開発するのが最善です。その適応性により、システムに他のツールを使用する可能性も確保されます。プラットフォームを頻繁に切り替えるユーザーにとって、Python は理想的な選択肢です。
エンド ユーザーにソフトウェア サービスを提供する場合、Python も代替手段となり、異なるアプリケーション ソフトウェアを同時に使用してプログラミングする時間と費用を回避できます。
インターネット プログラミング:
Python には、ネットワーク スロット上で基本的なプロトコル レベルの通信を実行できる標準モジュールが付属しています。たとえば、POP サーバーから電子メールを読みたい場合は、Python に付属のライブラリ モジュールを使用できます。さらに、Python は XML、HTML、および CGI ライブラリ ファイルもサポートしているため、これを使用してユーザー入力要件を解析し、Web サーバーを通じて最高品質の結果を生成できます。
プログラマーは、Python の組み込みインタープリターを備えた Apache、Unix、および Windows Web サーバー用のモジュールをコンパイルすることもできます。 CGI プログラムの機能に基づいて、Python ステートメントを個別にロードすることなく簡単に実行できます。
Python ネットワーク プログラミングについては、「Python ネットワーク プログラミングの基礎」という良い本があります
この本は、Python 言語を使用したネットワーク プログラミングの基礎知識を包括的に紹介しており、主な内容には、ネットワークの基本知識と、Web サービスの高度な操作が含まれています。 、HTML とスレッドの解析、非同期通信など)この本は非常に実用的で、合計約 175 の例と 6,600 行を超えるコードが記載されており、読者が Python 言語を包括的かつ迅速に学習し、ネットワーク プログラムを作成するのに役立ちます。
Ruby:
オブジェクト指向プログラミングを便利かつ迅速に実行できる強力なオブジェクト指向スクリプト言語。Smalltalk、Eiffel、C++ などの正式なオブジェクト指向言語を使用して小規模なプロジェクトを開発するのは少し面倒に思えることがあります。もちろん、Ruby は通常のプロセス指向プログラミングにも使用できます。
Ruby は、高レベルと低レベルの両方の多くのネットワーク プロトコルをサポートしています。 Ruby は、ネットワーク層に固執することなく、TCP、UDP、SOCKS、およびその他の多くのプロトコルを使用して対話できるようにするいくつかの基本クラスを提供します。これらのクラスは、サーバーへの読み取りと書き込みを簡単に行うためのヘルパー クラスも提供します。ネットワークプログラミングも素晴らしいです。
【2. 開発環境、実行環境】
Python:
それに対して、強力な統合開発環境はありません。オープンソース ソフトウェアは有料ソフトウェアよりも使いやすいという人もいます。
最も一般的に使用されるもの:
Python 自体のアイドル:
は Python の中で最高の IDE ではありません...
PythonWin:
非常に使いやすい (Windows を使用するのと同じくらい快適)。コードのマージ、構文タグの強調表示、コードの自動補完機能を含む便利なエディターが備わっています。 PythonWin には、一部の IDE と同様、いかなる種類のフォーム デザイナも含まれていませんが、監視、コード検査、対話型デバッグ ウィンドウ、ブレークポイント、およびデバッガに必要なその他の機能を備えた優れたデバッガが提供されています。最も重要なことは、PythonWin は安定していますが、Win95r2 システムで使用すると、時々奇妙に「ハング」することがあります。インターフェイスの点では、PythonWin は比較的シンプルですが、非常に魅力的で、埋め込み可能およびドッキング可能な要素をうまく利用しています (私は、他の多くの IDE でも使用されている、「どこにでも多くのウィンドウがある」という Idle スタイルを好みます)。 PythonWin は、ActiveState の Python ドキュメントの HtmlHelp バージョンと PythonCOM も統合します。
eclipseのpydevプラグイン、eclipse+pydev
Pydevは優れたPython環境であるEclipseをベースにしており、改善速度が非常に速いです。
UliPad が提供する機能の一部:
ドキュメント作成やプログラミング開発に使用できるエディター。 Python プログラミング言語を使用して開発され、ユーザー インターフェイスは wxPython に基づいています。一般的なエディターの共通機能を完成させることに加えて、開発者が新しい機能を簡単に開発できるように、便利で柔軟なフレームワークを実装することを主な目的としています。さらに、プログラミング経験のあるユーザーは、日常業務の特殊な問題に対処するプラグインをコンパイルして、日常業務に密接に統合することもできます。強力なプログラミング言語である Python を使用しているため、ニーズに合わせてソフトウェアを簡単に変更できます。
UliPad は、コードのカラーリング、スマート補完、コードのデバッグ、Python クラスの参照、コード スニペット、Ftp 関数、ディレクトリの参照、その他の強力な機能をサポートしています。Doc ディレクトリ内のドキュメントは非常に充実しており、Python を書くのに非常に役立ちます。 !
システム要件:
python 2.4+
wxPython 2.6+
最後の選択は UliPad で、これは非常に優れています。
Ruby:
Ruby には優れた高度なデバッガが備わっています。
netbeans の Ruby プラグインまたは Eclipse の Ruby プラグインを使用できます
Eclipse で開発環境をインストールする一般的なプロセス:
1. Ruby1.8.6 ワンクリック インストーラーをインストールします。
2. Eclipse Platform Runtime Binary 圧縮パッケージを特定のディレクトリに解凍します。
3. RubyDevelopment Tools 圧縮パッケージの内容を Eclipse の対応するディレクトリに解凍します。
動作環境については、公式 Web サイトから対応するバージョンをダウンロードしてインストールするだけです。Windows でのインストールは比較的簡単で、ダブルクリックして実行するだけです。
【3. 移植性】
Python:
Python はオープンソースであるため、多くのプラットフォームに移植されています (さまざまなプラットフォームで動作できるように修正が加えられています)。システムに依存する機能の使用を慎重に回避すれば、すべての Python プログラムは、以下にリストされているプラットフォームのいずれでも変更なしで実行できます。これらのプラットフォームには、Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、 PlayStation、シャープ ザウルス、Windows CE、さらには PocketPC まで!
Python が実行されると、まず .py ファイル内のソース コードが Python バイト コードにコンパイルされ、次に Python 仮想マシンがこれらのコンパイルされたバイト コードを実行します。このメカニズムの基本的な考え方は Java および .NET と一致しています。ただし、Python 仮想マシンと Java または .NET 仮想マシンの違いは、Python 仮想マシンがより高度な仮想マシンであることです。ここでいう高度とは、通常の意味での高度ではありません。Python の仮想マシンが Java や .NET よりも強力であるという意味ではありません。Java や .NET と比較して、Python の仮想マシンが実際のマシンから遠く離れていることを意味します。あるいは、Python の Virtual Machine はより抽象度の高い Virtual Machine であるとも言えます。
オブジェクト指向の解釈型コンピューター プログラミング言語をインストールできます。これは、10 年以上の開発の歴史があり、成熟していて安定しています。 Python はスクリプト言語の中で最も豊富で強力なクラス ライブラリを備えており、ほとんどの日常的なアプリケーションをサポートするのに十分です。Python をインストールすると、Python で開発された多くのプログラムもサポートできます。さまざまなプログラム。一般の携帯電話ユーザーの場合、Python プラットフォームをインストールするだけで十分です。これにより、携帯電話は Python で開発されたより多くのプログラムをサポートできるようになります。現在、Symbian 携帯電話上では Python で開発されたプログラムが数多くあり、それらはどれも比較的実用的です。
Ruby:
主に Linux 上で開発されていますが、多くの種類の Unix、Dos、Windows95/98/Me/NT/2000/XP、MacOS、BeOS、OS/2 およびその他のシステム上で実行できます。
Ruby と携帯電話の開発に関する情報は非常に少ない Windows CE 上で動作するバージョンもありますが、関連する情報はまだ非常に少ないようで、インストールの失敗やコンパイルの失敗の例が多数あります。日本語ページに少しだけ日本語の紹介があります。 [まとめ]
それでは、友人の提案で Python と Ruby について以下の参考意見を述べさせていただきました。
1. Python はわかりやすい言語としても知られています。それは、作者が設計したときの一般的な指針となる考え方は、特定の問題に対して、それを解決する最善の方法は 1 つだけであるというものだったからです。 Python 言語が明確な言語であることのもう 1 つの意味は、その作成者が意図的に非常に制限的な構文を設計し、悪いプログラミング習慣 (if ステートメントの右に次の行をインデントしないなど) がコンパイルできないようにしていることです。これにより、プログラマーは意図的に良いプログラミング習慣を身に付けることが強制されます。 Python は他の部分の設計においても明確で一貫したスタイルを遵守しているため、読みやすく保守しやすい言語となっており、多くのユーザーに人気があり、幅広い用途に使用されています。
同じ問題に対して Python を使用して複数の人が書いたコードは非常に似ています。しかし、Ruby にはさまざまな設計思想があり、Ruby で作成されたプログラムは柔軟性が高すぎるため、人によって作成されるプログラムは大きく異なる場合があります。
上記の内容は Python と Ruby の類似点と相違点の比較であり、この記事を読んで Python と Ruby の類似点と相違点についてより深く理解していただければ幸いです。
関連する推奨事項:
Web 開発の初心者の場合、php、Python、Ruby のどれを学ぶべきですか?
PythonとRubyの各循環参照変数の問題(隠れたバグ?)
以上がPython と Ruby の類似点と相違点の比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。