Ответ 1
Вы должны использовать язык сценариев, когда скорость разработки важнее скорости выполнения.
Когда нужно использовать язык сценариев над более подробным, скомпилированным языком, например С++. С# или Java?
И чтобы задать вопрос немного интереснее, ответьте на следующие вопросы:
Вы должны использовать язык сценариев, когда... BLANK...
Когда вам нужен язык сценариев использования X.
Когда вам нужно использовать язык сценариев Y.
Когда вам нужно C использовать язык сценариев Z.
Вы должны использовать язык сценариев, когда скорость разработки важнее скорости выполнения.
Добавление языка сценариев в качестве компонента более крупной скомпилированной системы - это общий шаблон: скомпилированная часть системы оптимизирована для скорости выполнения, но ее сложнее изменить (поскольку она должна быть скомпилирован и перезагружен), тогда как сценарийная часть системы оптимизирована для гибкости, она будет работать медленнее, но может быть быстро и легко изменена любым, у кого есть текстовый редактор.
Этот шаблон можно использовать, если вы хотите легко настроить часть вашего приложения.
Это немного религиозный вопрос. Я использую язык сценариев для специальных задач, например:
Все это также можно выполнить на скомпилированном языке, но для меня быстрее и проще выполнять их на языке сценариев (я использую ruby, но PERL и python - все в порядке).
Я использую языки сценариев для быстрого прототипирования, экспериментирования и перебора данных. Например, если у меня есть куча текстовых файлов, которые мне нужны для предварительной обработки и сборки в базе данных в качестве одноразовой операции, я обычно script.
Однако в эти дни линия между "scripting" и "compiled" становится размытой, с такими языками, как groovy и ruby. Для задачи, упомянутой выше, я буду использовать ruby, но затем я также буду использовать ее для создания веб-приложения с рельсами. Я напишу настольные приложения в java, но groovy позволяет мне смешивать скрипты. Даже при написании на C/С++ я нашел полезную модель для внедрения языка сценариев, специфичных для домена (например, tcl, хотя мне не очень нравится этот язык).
Фактический выбор языка - это, я думаю, религиозный выбор, хотя есть некоторые компромиссы, которые очевидны (читаемость, например, perl полезна, но слишком легко писать криптографические скрипты. В некотором смысле это "писать" "только" язык:-). Раньше я использовал bash + awk + sed, некоторые perl, ruby и т.д. И т.д.... Для одних задач это в основном зависит от того, с чем вам и остальной команде нравится. Я делаю сознательный выбор, чтобы использовать Ruby в эти дни, даже если бы я немного быстрее сделал то же самое в bash/awk/sed, но это только для того, чтобы улучшить мои рубиновые навыки, выполняя как можно больше задач.
Здесь моя иерархия:
Попробуйте использовать grep.
Если вы не можете сделать это с помощью grep, используйте sed.
Если sed недостаточно мощный, используйте awk.
Если awk недостаточно мощный (или начинает выглядеть очень неприятно), используйте C, С++ или другой полномасштабный язык программирования общего назначения по вашему выбору.
Обратите внимание, что между awk и C. нет "языка сценариев". Это специально.
Я считаю, что языки сценариев очень полезны, очевидно, когда есть конкретная задача, которая соответствует силе языка (т.е. обработка строк с помощью perl, веб-разработка с ruby или еще много чего). В частности, в языках сценариев веб-разработки есть свойство быстрее показывать результаты смены кода.
Есть случаи, когда вы смешиваете скомпилированные языки со скриптовыми языками - например, в некоторых играх. Это полезно сделать, когда вы можете выразить меньшее количество действий быстрее, чище и проще на языке сценариев, чем на скомпилированном языке. С++, например, является очень выразительным языком, но стоимость его разработки выше, чем, скажем, lua.
Я не думаю, что это правило, когда нужно использовать язык сценариев. Языки сценариев легко развиваются, но иногда они тяжело выполняют техническое обслуживание, особенно когда script должен работать на разных платформах (операционных системах).
Конечно, языки сценариев:
Контракты:
Я использую язык сценариев для обработки данных и отправлю их в базу данных как задание cron. Это проще, потому что я могу легко установить их с помощью планировщика окон или crontab в unix, и мне легче писать из-за некоторых ключевых функций, таких как regex в perl.
Плюс миллионы модулей, которые доступны для меня из CPAN...
Используйте язык сценариев, когда важна интерактивная операция, например. командной строки, или вы экспортируете функциональность для других пользователей для использования в простых операциях. (Им не нужно компилировать, скриптов достаточно)
Язык сценариев, если вы планируете либо писать один раз, либо держать его простым. Сильно типизированный язык намного лучше, когда ваш проект станет больше. Подумайте об этом, сколько времени потрачено на большой проект с инициативной разработкой по сравнению с интеграцией и обслуживанием. Вам лучше было бы поддерживать большой набор сценариев или строго типизированный язык, обеспечивающий поведение ваших типов?