Какой язык сценариев использовать для служебных сценариев? - PullRequest
8 голосов
/ 28 февраля 2010

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

То, что мне в основном потребовалось бы, было бы упорядочено по случайности:

  1. Переносим на три верхние ОС: Windows, Linux и OS X
  2. Множество хороших библиотек, начиная от манипулирования файлами и каталогами и заканчивая доступом к базе данных. Графический интерфейс не нужен, хотя сеть может быть (скачать некоторые вещи через FTP или HTTP). Большим плюсом может стать возможность извлечения из хранилища Subversion.
  3. Требуется хорошая поддержка сообщества. И Python, и Ruby превосходны в этой области.
  4. Расширяемость: если нет доступной хорошей библиотеки для чего-либо, насколько легко мне ее реализовать или использовать нативное решение (выполнить программу, вызвать нативную функцию).
  5. Простота развертывания: насколько легко запустить и запустить в Windows (XP & 7, Server 2003+), Linux (CentOS 5.2, Ubuntu & Ubuntu Server 8.04+) и OS X (10.5 +).
  6. Легкость обучения. В то время как все языки сценариев не являются сложными для изучения для любого программиста, который стоит его усилий, мне интересен один, который довольно быстрый и легкий для изучения.

Это все, что я могу думать сейчас. Я рассмотрел Python и Ruby; Python удовлетворяет всем требованиям, и Ruby, похоже, тоже, хотя я не уверен в простоте развертывания в Windows и доступности библиотек. Тем не менее, я также ищу ваш опыт использования таких сценариев, написанных на выбранном вами языке.

Ответы [ 9 ]

10 голосов
/ 28 февраля 2010

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

Редактировать : (на собственном опыте, в контексте задач, описанных в вопросе)

  • У меня нет опыта сборки релизов из Python (я нахожу Ant или даже создаю лучший инструмент для этой конкретной задачи).
  • "Мессинг" с базами данных: бриз!
  • Перемещение файлов, просмотр каталогов и т. Д.: Ветерок!

Риск казаться дерзким или неопытным, что касается действий типа сценариев, я никогда не рисовал себя в углу, из которого Python не позволил мне выбраться.

Возможная «критика» Python, однако, несколько парадоксально, это его обширная библиотека пакетов (в дополнение к его щедрой стандартной библиотеке); Хотя хорошо иметь все эти «сторонние» библиотеки, иногда бывает сложно оценить зрелость и эффективность некоторых из этих пакетов, и иногда приходится тратить время на их выбор (или принятие решения о том, писать ли «с нуля») , Тем не менее, такие оценки могут быть достаточно быстрыми, благодаря интерактивной природе переводчика.

2 голосов
/ 28 февраля 2010

Ruby приличный, но python отличный. Python поставляется с отличной документацией, прост в освоении, имеет большое сообщество, содержит очень полезную стандартную библиотеку, будет предварительно установлен на большинство unix-подобных систем и не слишком болезнен для установки в Windows.

1 голос
/ 01 марта 2010

iconiK,

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

Я также ищу ваш опыт

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

Вероятно, мой самый недавний опыт в том, что в 1999 году мне пришлось решить, будет ли основной проект компилятора написан на Objective Caml или Haskell . Мы выбрали Caml, и я много раз хотел, чтобы я выбрал Haskell, но на самом деле в 1999 году Caml был, пожалуй, лучшим выбором, и, конечно, мы хорошо поработали с этим компилятором. Худший выбор из всех - подождать, чтобы собрать больше информации.

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

Код в добром здравии!

1 голос
/ 28 февраля 2010

Python, без сомнения. Он отвечает всем вашим целям и имеет преимущество в том, что он лаконичен и прост в освоении.

1 голос
/ 28 февраля 2010

Python - отличный скриптовый язык и очень переносимый. Это мой выбор, когда переносимость моих сценариев является основной проблемой.

Но мобильность редко является моей главной проблемой. Большинство моих сценариев довольно тесно связаны с проблемами ОС. Поэтому, когда я знаю, что я работаю в Windows и, возможно, не имею Python, я использую JScript под Windows Script Host .

1 голос
/ 28 февраля 2010

http://ant.apache.org/

Я использую его как для Java, так и для PHP проектов. И ответить на ваши баллы:

  • мобильность: 100%
  • библиотеки для БД, сети, ввода / вывода, SVN: да, некоторые встроены, для остальных вы используете расширения
  • сообщество: много книг и онлайн-ресурсов
  • расширяемость: да, муравей был разработан, чтобы быть расширяемым
  • установка: очень легко
  • легкость обучения: довольно легко
0 голосов
/ 28 февраля 2010

Python действительно отлично подходит для такого рода вещей. Я просто хотел обратить ваше внимание на Tcl, который просто великолепен для сценариев общего назначения и обработки файлов. Википедия о Tcl

0 голосов
/ 28 февраля 2010

Perl, за исключением, может быть, для кривой обучения. Переносимость не является проблемой, для библиотек есть CPAN, сообщество идеально, вызов внешних программ не является проблемой, и вы всегда можете обернуть библиотеку C, и установка не составит труда.

0 голосов
/ 28 февраля 2010

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

...