Тесты языков сценариев, выполняющих ту же задачу? - PullRequest
0 голосов
/ 23 августа 2010

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

«Типами операций» могут быть сокеты, файловая система, логическая оценка, регулярное выражение или рисование.

Меня больше всего интересуют Python, PHP, Perl и Ruby.

Ответы [ 3 ]

5 голосов
/ 23 августа 2010

Есть стрельба по языку программирования: http://shootout.alioth.debian.org/ Хотя, возможно, он не измеряет достаточно того, что вы ищете.

Однако тесты почти наверняка не скажут вам ничего полезного об идеях высокого уровня того типа, который вы перечислили. Для этих целей производительность (как и в скорости выполнения) почти не имеет отношения к тому, на каком языке написан код (по крайней мере, для набора языков, которые вы перечислили, у всех из которых есть довольно похожие модели выполнения), и почти для всего делать с тем, как структурирован код.

Если вы хотите иметь возможность выбрать один из перечисленных языков (для конкретной задачи) на основе чего-то значимого, вам следует задать следующие вопросы:

  • Какие ограничения существуют для платформы, на которой вы хотите работать? Все языки, которые вы перечислили, имеют большие системы времени исполнения - интерпретаторы - это означает, что они могут иметь большие затраты на развертывание, если вы хотите использовать их в системах, на которых они еще не установлены. Тем не менее, в Python есть по крайней мере «py2exe» и «py2app», которые можно использовать для создания развертываемых исполняемых файлов вашего приложения для Windows или Mac - вполне может быть что-то подобное для других языков, которые вы перечислили.
  • Какая соответствующая функциональность предоставляется в стандартной библиотеке для языка? (в этом случае все перечисленные языки имеют очень большие, полезные стандартные библиотеки).
  • Какие соответствующие функции доступны во внешних библиотеках, которые вы можете использовать?
  • Насколько комфортно вы используете язык?

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

3 голосов
/ 23 августа 2010

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

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

2 голосов
/ 23 августа 2010

Лучше всего создать собственные тесты для конкретных задач, которые вас интересуют. Выберите языки, на которых вам нравится работать, а затем напишите тесты для системы, которую вы будете использовать, и задачи, которую вы будете выполнять. Если вас очень беспокоит скорость, я бы также порекомендовал посмотреть на отдельные операции и способы их оптимизации на каждом из языков (примеры: порядок аргументов, использование памяти ...)

...