Python vs Groovy против Ruby? (на основе перечисленных критериев)

Учитывая перечисленные ниже критерии, какие из Python, Groovy или Ruby вы использовали бы?

  • Критерии (Важность из 10, 10 наиболее важна)
  • Богатство доступных API/библиотек (например, математика, построение графиков, создание сетей) (9)
  • Возможность встраивания в настольные приложения (java/С++) (8)
  • Простота развертывания (8)
  • Возможность взаимодействия с DLL/Shared Libraries (7)
  • Возможность генерации графических интерфейсов (7)
  • Поддержка сообщества/пользователя (6)
  • Переносимость (6)
  • Управление базами данных (3)
  • Язык/семантика (2)

Ответ 1

Я думаю, будет сложно получить объективное сравнение. Я лично предпочитаю Python. Чтобы решить один из ваших критериев, Python был разработан с самого начала, чтобы быть встраиваемым языком. Он имеет очень богатый API C, и интерпретатор является модульным, чтобы упростить вызов с C. Если Java - это ваша среда хоста, вы должны посмотреть на Jython - реализацию Python внутри среды Java (VM и libs).

Ответ 2

Работая со всеми тремя из них, я могу сказать:

  • Python

    • имеет очень зрелые библиотеки.
    • документированы Документация
    • может быть доступна из вашего отладчика/оболочки во время выполнения через docstrings
    • вы можете разработать код без IDE
  • Рубин

    • имеет несколько больших библиотек (хотя некоторые из них плохо документированы)
    • Механизмы рубисных механизмов очень велики. Они делают код записи довольно простым (даже если документация недоступна).
    • вы можете разработать код без IDE
  • Groovy

    • вы можете воспользоваться всем, что предлагает Java. Синтаксис
    • несколько вдохновлен Ruby
    • трудно писать код без IDE. У вас нет возможности отлаживать материал с консоли (это то, что вы можете легко сделать в Python/Ruby), и доступным плагинам Groovy предстоит многое сделать. Я написал несколько приложений, используя Groovy, и по мере того как они становятся все больше, я сожалею, что не собираюсь работать с Ruby/Python (отладка была бы проще). Если вы будете развиваться только из среды IDE, Groovy классный язык.

Ответ 3

Просто чтобы мутить воды...

Groovy предоставляет вам доступ к Java. Java имеет чрезвычайно богатый набор API/библиотек, приложений и т.д.

Groovy является встраиваемым, хотя и простым в Java.

DLL/Библиотеки (если вы говорите о не-w32 > /Java) могут быть несколько проблематичными, хотя есть способы и некоторые API, которые помогут.

Я проделал некоторое программирование на Python, но, будучи более знакомым с Java, Groovy мне становится намного легче.

Ответ 4

Groovy? Я просто подбираю его; попробуйте это (внутри 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.

Во втором блоке вы удаляете параметр закрытия f. Будучи всего лишь одним параметром, по умолчанию используется встроенная переменная "it", доступная для контекста закрытия.

Вот что вы получаете:

"Звонок на isFile перехвачен... C:\temp\img.jpg"

и др.

Ответ 5

Python имеет все девять критериев. Он забивает 56.

Я уверен, что у Ruby есть все, что есть у Python. Кажется, что библиотеки меньше. Таким образом, он набирает 51.

Я не знаю, имеет ли Groovy все функции.

Так как Python - 56, а Ruby - 51, Python едва ограничивает Ruby.

Однако, я думаю, что такое решение все еще может сводиться к некоторым субъективным вопросам, выходящим за рамки этих девяти критериев.

Ответ 6

попробуйте Groovy.. у него есть все функции, которые вам нужны. Вы можете использовать существующую java lib без каких-либо изменений в своих классах. в основном.. Groovy - Java++, более динамично и интересно учиться (как и рубин)

Мне не нравится синтаксис ruby ​​или python, поэтому я положу их. Groovy похож на синтаксис C/С++, поэтому мне он нравится lol:)

Ответ 7

Из вашего критерия я бы выбрал JRuby:

  • Богатство доступных API/библиотек (например, математика, построение графиков, создание сетей) (9)

Все, к чему имеет доступ JVM, что много

  • Возможность встраивания в настольные приложения (java/С++) (8)

Отличная Monkeybars framework, которая позволяет вам разрабатывать графический интерфейс swing в вашем графическом дизайнере, а затем подключать его с помощью чистого рубинового кода

  • Простота развертывания (8)

Rawr может упаковать ваше приложение в качестве исполняемого банку

  • Возможность взаимодействия с DLL/Shared Libraries (7)

Явные библиотеки, доступные через Java, через jna + libffi

  • Возможность генерации графических интерфейсов (7)

Качание просто работает. Не уверен, насколько легко использовать QtJambi, но это определенно возможно.

  • Поддержка сообщества/пользователя (6)

Много. У Ruby отличное сообщество.

  • Переносимость (6)

Всюду работает JVM

  • Управление базами данных (3)

Все библиотеки баз данных ruby ​​и все java файлы

  • Язык/семантика (2)

Здесь, где ruby ​​принимает определенное преимущество над groovy и python. У этого языка были некоторые действительно красивые дизайнерские решения, принятые на ранней стадии, что проявляется в последовательности и мощности стандартной библиотеки. Blocks, в частности, приятно использовать.

Ответ 8

Этот вид добавления-по-показам не является хорошим выбором языка программирования. Вам лучше выбрать то, что вам известно лучше всего. Если вы не знаете ни одного из них, попробуйте их ненадолго. Если у вас есть действительно конкретный проект, то, возможно, некоторые языки программирования будут лучше, но если у вас есть общие предпочтения, вы никогда не достигнете консенсуса.

Это говорит о том, что Python довольно гибкий, он самый популярный в вашем списке, поэтому проще всего решить любые проблемы, возникающие при поиске, поэтому я бы рекомендовал Python.

Ответ 9

Perl? Хлоп.

Как заметил кто-то, Perl похож на большой взрыв в пунктуации factory. Это ограничение не преимущество, если результирующий код не является самостоятельной документацией.

Использовали Groovy для некоторых задач утилиты, которые легко получить. Полный доступ к библиотекам Java, а также некоторые интересные дополнения к нему, например, перечисление файлов в каталоге с помощью закрытия:

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

new File(basedir).eachFile{ f->

    if (f.isFile()) println f.canonicalPath
}

Ответ 10

Я знаю это не в вашем списке, но, по крайней мере, смотрю на perl.

  • Богатство Api/Libraries, чтобы потопить корабль.
  • Работает на более системах, чем большинство людей понимает.
  • Хорошо работает с бинарными библиотеками.
  • Имеет огромное сообщество.
  • Переносимость, см. выше.
  • Манипуляция с базами данных: больше способов сделать это. (Выберите свой любимый модуль)
  • И один из самых выразительных/коротких языков.