web-dev-qa-db-ja.com

Python vs Groovy vs Ruby?(問題のリストにある基準に基づく)

下記の基準を考慮して、Python、Groovy、Rubyのどれを使用しますか?

  • 基準(10のうち重要度10が最も重要)
  • 豊富なAPI /ライブラリが利用可能(例:数学、プロット、ネットワーキング)(9)
  • デスクトップ(Java/c ++)アプリケーションに埋め込む機能(8)
  • 展開のしやすさ(8)
  • DLL /共有ライブラリとのインターフェース機能(7)
  • GUIを生成する機能(7)
  • コミュニティ/ユーザーサポート(6)
  • ポータビリティ(6)
  • データベース操作(3)
  • 言語/意味論(2)
34
Prembo

客観的な比較は難しいと思います。私は個人的にPythonを好みます。いずれかの基準に対処するために、Pythonは最初から組み込み可能な言語として設計されました。非常に豊富なC APIを備えており、インタープリターはモジュール化されているため、Cから簡単に呼び出すことができます。 Javaがホスト環境である場合、Pythonの実装であるJava環境(VMおよびlibs)。

33
Ned Batchelder

これら3つすべてを使用して、これは私が言えることです。

  • Python

    • 非常に成熟したライブラリがあります
    • ライブラリは文書化されています
    • ドキュメントは、実行時にデバッガ/シェルからdocstringsを介してアクセスできます
    • iDEがなくてもコードを開発できます
  • ルビー

    • いくつかの優れたライブラリがあります(一部のドキュメントが不適切に記載されている場合でも)
    • Rubyのイントロスペクションメカニズムは素晴らしいです。彼らはコードを書くのをかなり簡単にします(たとえドキュメントが利用できない場合でも)
    • iDEがなくてもコードを開発できます
  • グルービー

    • あなたはすべてから利益を得ることができますJavaが提供しなければならない
    • 構文はRubyから多少ヒントを得たものです
    • iDEなしでコードを書くのは難しいです。コンソールから何かをデバッグする方法はありません(これはPython/Rubyで簡単に実行できることです)。使用可能なGroovyプラグインには、多くの機能があります。私はGroovyを使用していくつかのアプリを作成しましたが、大きくなるにつれて、Ruby/Pythonを使用しなかったことを後悔しています(デバッグの方がずっと簡単だったでしょう)。 IDEからのみ開発する場合、Groovyはクールな言語です。
27
Geo

水を濁すためだけに...

GroovyはJavaへのアクセスを提供します。 Javaには、API /ライブラリ、アプリケーションなどの非常に豊富なセットがあります。

Groovyは組み込み可能ですが、Javaで最も簡単です。

DLL /ライブラリ(Groovy/Java以外について話している場合)は、いくらか問題があるかもしれませんが、役立つ方法といくつかのAPIがあります。

私はいくつかのPython=プログラミングを実行しましたが、Javaに慣れているため、Groovyの方がずっと簡単になりました。

24
Ken Gentle

グルーヴィー?私はそれを拾っているところです。これを試してください(groovyconsole内で):

File.metaClass.invokeMethod = { String name, args ->
    System.out.print ("Call to $name intercepted...");
    File.metaClass.getMetaMethod(name, args).invoke(delegate, args);
}

new File("c:/temp").eachFile{
    if (it.isFile()) println it.canonicalPath
}

最初のコードはAOPです。 Fileオブジェクトの任意のメソッドへの呼び出しはすべて傍受されます。追加のツールは必要ありません。これは、既存のJavaクラスに対して動的に実行されます。

2番目のブロックでは、 'f'クロージャーパラメーターを削除します。パラメータは1つだけなので、デフォルトでは、クロージャコンテキストで使用できる組み込みの「it」変数になります。

ここにあなたが得るものがあります:

「isFileへの呼び出しが傍受されました... C:\ temp\img.jpg」

等.

10
Florin

groovyを試してみてください。必要なすべての機能が備わっています。既存のJava libをそのクラスに変更を加えることなく使用できます。基本的に.. groovyはJava ++であり、(Rubyのように)よりダイナミックで楽しく学ぶことができます。

私はRubyまたはpython構文なので、後ろに置きます。GroovyはC/C++構文に似ているので、彼が好きですlol :)

8
adwin

Pythonには9つの基準があります。スコアは56です。

確かにRubyはすべてを持っていますPythonは持っています。ライブラリの数は少ないようです。したがって、51を獲得します。

Groovyにすべての機能があるかどうかはわかりません。

Pythonは56であり、Rubyは51であるため、PythonはRubyをほとんど使用していません。

しかし、私はこの種の決定がこれらの9つの基準外の主観的な問題にまで沸騰する可能性があると思います。

7
S.Lott

あなたの基準から、私はJRubyを選びます:

  • 豊富なAPI /ライブラリが利用可能(例:数学、プロット、ネットワーキング)(9)

JVMがアクセスできるすべてのもの、つまりlot

  • デスクトップ(Java/c ++)アプリケーションに埋め込む機能(8)

優れた Monkeybars フレームワーク。これにより、GUIデザイナーでSwing GUIを設計し、クリーンRubyコードを使用して接続できます。

  • 展開のしやすさ(8)

Rawr アプリを実行可能なjarとしてパッケージ化できます

  • DLL /共有ライブラリとのインターフェース機能(7)

Java共有ライブラリは簡単、Cは jna + libffi

  • GUIを生成する機能(7)

スイングだけで動作します。 QtJambiを使用するのがいかに簡単かはわかりませんが、それは間違いなく可能です。

  • コミュニティ/ユーザーサポート(6)

たくさん。 Rubyには優れたコミュニティがあります。

  • ポータビリティ(6)

JVMが動作するすべての場所

  • データベース操作(3)

すべてのRubyデータベースライブラリおよびすべてのJavaもの

  • 言語/意味論(2)

ここでRubyはgroovyとpythonよりも確実に先導します。この言語は、早い段階でいくつかの本当に美しい設計決定を下しており、標準ライブラリの一貫性と能力に現れています。 ブロック 、特に、それを使用することを喜びにします。

6
Martin DeMello

このような機能ごとのスコアの追加は、プログラミング言語を選択する良い方法ではありません。あなたはあなたが一番よく知っているものを選ぶほうがいいでしょう。それらのいずれかを知らない場合は、しばらく試してみてください。本当に特定のプロジェクトを念頭に置いている場合は、一部のプログラミング言語の方が優れているかもしれませんが、一般的な好みがあるだけではコンセンサスに達しません。

とはいえ、Pythonは非常に柔軟性が高く、リストで最も人気があるため、検索することであらゆる種類の問題を解決するのが最も簡単なので、Pythonをお勧めします。

3
lacker

Perl?うわぁ。

誰かがPerlを観察したように、句読点の工場での大爆発のようなものです。その簡潔さはnot結果のコードが自己文書化されていない場合の利点です。

いくつかのユーティリティタスクにGroovyを使用しました。 Javaライブラリへのフルアクセス、およびクロージャを使用してディレクトリ内のファイルを一覧表示するなど、ライブラリへのいくつかのクールな追加機能:

// process all files printing out full name (. and .. auto excluded)

new File(basedir).eachFile{ f->

    if (f.isFile()) println f.canonicalPath
}
2
Chris Brooks

私はそれがあなたのリストにないことを知っていますが、少なくともPerlを見てください。

  • 船を沈めるAPI /ライブラリの豊富さ。
  • ほとんどの人が存在することを認識しているよりも多くのシステムで実行されます。
  • Binaryライブラリとうまく連携します。
  • 巨大なコミュニティがあります。
  • 移植性、上記を参照してください。
  • データベース操作:それを行うためのより多くの方法。 (あなたの好きなモジュールを選んでください)
  • そして、最も表現力豊かで簡潔な言語の1つです。
0
Kent Fredric