Учитывая перечисленные ниже критерии, какой из Python, Groovy или Ruby вы бы использовали?
Если язык / семантика оценивает только 2, я предполагаю, что можно предложить любой язык.
Думаю, вы упустили один критерий: - Знакомство в команде проекта (10)
Для небольших проектов добавьте lua в список






Я знаю, что этого нет в вашем списке, но хотя бы посмотрите на perl.
Обратной стороной perl для тех, кто с ним не знаком, является отсутствие организации множества модулей. По крайней мере, насколько мне известно, нет удобного способа найти наиболее подходящий из ряда доступных модулей для конкретной задачи. Тот факт, что существует так много вариантов, замечателен, но должен быть лучший способ проанализировать все это на предмет модулей, которые считаются готовыми к производству и / или широко используемыми, и / или полнофункциональными, и / или легкими, и / или совместимыми. с различными выпусками Perl (например, некоторые новые версии модулей поддерживают только Perl 5.10).
@intuited Perl - не мой любимый язык, но у вас все наоборот. Я знаю Perl - это единственный язык, на котором легче всего найти подходящие модули. CPAN (search.cpan.org) имеет множество способов определения пригодности: автоматические тесты, выполняемые на новых представлениях на многих платформах ОС; рейтинги и комментарии; разумные соглашения об именах и пространствах имен и т. д. CPAN лучше организован, чем RubyGems и PyPI.
@Mark Thomas: Похоже, над функциональностью сайта cpan можно поработать. До сих пор я не знал о рейтинговой системе dlsip, которая отображается, когда вы просматриваете категории, потому что она не отображается, когда вы выполняете текстовый поиск, как я обычно делаю. Это чрезвычайно полезный набор данных, но я не понимаю, почему он не отображается постоянно. Фактически, это, кажется, единственный контекст, в котором отображается является - он даже не отображается, когда вы переходите на страницу модуля.
@Mark Thomas: Я все еще ищу страницу «расширенного поиска», которая позволит мне искать модули, соответствующие определенным критериям из dlsip, рейтингов пользователей, номера версии и т. д. Есть ли это где-нибудь? __________ Конечно, PyPI не имеет такой функциональности, хотя столбец «Оценка» в результатах поиска PyPI, по крайней мере, не очень полезен. Тенденция разработки модулей Python во многих случаях сводится к стандартной библиотеке, что делает ее несколько менее важной. Также полезно, что «Статус производства» модуля обычно указывается на странице этого модуля.
Пункты, которые были оценены, имеют более высокий приоритет, и оценка их рейтинга влияет на порядок оцениваемых пунктов. знак равно
Думаю, будет сложно провести объективное сравнение. Лично я предпочитаю Python. Чтобы удовлетворить один из ваших критериев, Python с самого начала разрабатывался как встраиваемый язык. Он имеет очень богатый C API, а интерпретатор разбит на модули, чтобы упростить вызов из C. Если Java является вашей средой хоста, вам следует взглянуть на Jython, реализацию Python внутри среды Java (виртуальная машина и библиотеки).
Такое сложение оценок по функциям - не лучший способ выбрать язык программирования. Вам лучше выбрать то, что вы знаете лучше всего. Если вы не знаете ни одного из них, попробуйте их немного. Если вы имеете в виду действительно конкретный проект, возможно, некоторые языки программирования будут лучше, но если у вас есть только общие предпочтения, вы никогда не придете к консенсусу.
Тем не менее, Python довольно гибкий, он самый популярный в вашем списке, поэтому проще всего решать любые проблемы, которые у вас есть, с помощью поиска, поэтому я бы рекомендовал Python.
Чтобы замутить воду ...
Groovy предоставляет вам доступ к Java. Java имеет чрезвычайно богатый набор API / библиотек, приложений и т. д.
Groovy встраивается, хотя проще всего в Java.
DLL / библиотеки (если вы говорите о не-Groovy / Java) могут быть несколько проблематичными, хотя есть способы и некоторые API-интерфейсы, которые могут помочь.
Я немного занимался программированием на Python, но, будучи более знакомым с Java, Groovy мне дается намного проще.
У Python есть все девять критериев. Он получил 56 баллов.
Я уверен, что в Ruby есть все, что есть в Python. Вроде библиотек меньше. Таким образом, он набирает 51 балл.
Я не знаю, есть ли у Groovy все возможности.
Поскольку Python 56, а Ruby 51, Python едва ли превосходит Ruby.
Однако я думаю, что такое решение все же может сводиться к некоторым субъективным вопросам, выходящим за рамки этих девяти критериев.
При всем уважении, я не думаю, что Ruby имеет такое же количество библиотек, как Python, не говоря уже о Groovy. Если я, например, возьмите пакеты Ubuntu (включая multiverse, что означает в основном пакеты Debian), там 920 имен пакетов с Python и 464 с Ruby. В Groovy нет сторонних библиотек.
Обновление: я посмотрел на Rubyforge и PyPI, и похоже, что эта оценка подтверждается тем, что у Python почти в два раза больше библиотек, чем у Ruby.
Обновление два года спустя: в списке больше RubyGems, чем пакетов PyPI. Но это не соревнование по ссанию. И Ruby, и Python достаточно зрелы, чтобы иметь отличные библиотеки практически для всего, чем вы хотите заниматься.
Perl? Ой.
Как кто-то заметил, Perl похож на большой взрыв на фабрике пунктуации. Его краткость является преимуществом нет, если результирующий код не самодокументируется.
Использовал Groovy для решения некоторых служебных задач, легко приступил к работе. Полный доступ к библиотекам Java, плюс некоторые интересные дополнения к ним, например, перечисление файлов в каталоге с помощью закрытия:
// process all files printing out full name (. and .. auto excluded)
new File(basedir).eachFile{ f->
if (f.isFile()) println f.canonicalPath
}
"Perl - это слишком много знаков препинания / строк" # отличительная черта номер 1 того, кто его не пробовал.
@Kent Fredric: В основном согласен, хотя я бы сказал, что «изучил», а не «попробовал». На это нужно время, но то же самое с любым языком. По какой-то причине многие люди, кажется, считают любой язык, в котором не используются те же условные обозначения, что и уже известный, как неполноценный. Во всяком случае, казалось бы логичным, что пунктуация - это Полегче, которую следует запомнить, поскольку (возможно, по иронии судьбы), как только вы поймете, как она используется, обычно есть только одно сопоставление, которое имеет смысл, в отличие от языков, в которых используются слова (которые имеют синонимы) для тех же концепций.
Проблема при выполнении «служебных задач» с Groovy заключается в том, что в Java нет низкоуровневых методов, таких как chmod, chown, fork и т. д.
"chown tmp / foo" .execute ()? - groovy-lang.org/groovy-dev-kit.html#process-management
попробуйте Groovy ... в нем есть все необходимые вам функции. Вы можете использовать существующую java lib без каких-либо изменений в ее классах. в основном .. Groovy - это java ++, он более динамичен и интересен для изучения (как и Ruby)
Мне не нравится синтаксис Ruby или Python, поэтому я оставлю их позади. Groovy похож на синтаксис C / C++, поэтому он мне нравится lol :)
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
}
Первый код - АОП. Все вызовы любого метода объекта File будут перехвачены. Никаких дополнительных инструментов не требуется. Это выполняется для существующего класса Java динамически.
Во втором блоке вы удаляете закрывающий параметр 'f'. Являясь всего лишь одним параметром, по умолчанию используется встроенная переменная «it», доступная для контекста закрытия.
Вот что вы получите:
"Вызов isFile перехвачен ... C: \ temp \ img.jpg"
и т.п.
Из ваших критериев я бы выбрал JRuby:
Все, к чему у JVM есть доступ, это много
Отличный фреймворк Панели обезьян, который позволяет вам создавать графический интерфейс Swing в вашем конструкторе графического интерфейса, а затем подключать его с помощью чистого кода Ruby.
Rawr может упаковать ваше приложение как исполняемую банку
Общие библиотеки Java легко, C через jna + libffi
Swing просто работает. Не уверен, насколько легко использовать QtJambi, но это определенно возможно.
Много. У Ruby отличное сообщество.
Везде работает JVM
Все библиотеки баз данных ruby и все библиотеки java
Здесь рубин явно опережает groovy и python. С самого начала в языке были приняты по-настоящему красивые дизайнерские решения, что проявляется в последовательности и мощи стандартной библиотеки. Блоки, в частности, делает его использование приятным.
Поработав со всеми тремя из них, могу сказать следующее:
Python
Рубин
Groovy
Как бы вы оценили зрелость библиотек Java и Python?
Обычно библиотеки Java довольно хорошего качества. А поскольку вы можете использовать Jython (чтобы извлечь из них пользу при написании кода Python), я бы сказал, что вы в любом случае хороши.
Вы исключаете jRuby и jython? Они действительно мешают обсуждению переносимости и семантики.