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 отличное сообщество.
Всюду работает JVM
- Управление базами данных (3)
Все библиотеки баз данных ruby и все java файлы
Здесь, где 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, чтобы потопить корабль.
- Работает на более системах, чем большинство людей понимает.
- Хорошо работает с бинарными библиотеками.
- Имеет огромное сообщество.
- Переносимость, см. выше.
- Манипуляция с базами данных: больше способов сделать это. (Выберите свой любимый модуль)
- И один из самых выразительных/коротких языков.