Во-первых, скриптовые языки обычно НЕ компилируются . Это большая часть того, что обычно определяет их как языки сценариев. Они часто вместо этого «интерпретируются». По существу это означает, что есть другой язык (один , который будет составлен, чаще , чем нет) , что читает в тексте, в режиме реального времени, а также выполнение операций, строка за строкой.
Разница между этим и другими языками заключается в том, что языки сценариев, как правило, проще (обычно их называют «более высокий уровень»). Однако они также, как правило, немного медленнее, поскольку компиляторы стремятся оптимизировать многие проблемы, связанные с «человеческим элементом» кодирования, и получающийся в результате двоичный файл имеет тенденцию быть меньше и быстрее считываться для машины. Кроме того, требуется меньше накладных расходов от другой программы, которую нужно запускать для чтения выполняемого кода, с откомпилированными программами.
Теперь вы можете подумать: «Ну, я понимаю, что это немного проще, но с какой стати кто-то отказался бы от всей этой производительности ради немного большей простоты использования?»
Вы не будете одиноки в этом предположении, однако тот уровень легкости, с которым вы склонны работать с языками сценариев, в зависимости от того, что вы делаете с ними, может стоить потери в производительности.
В основном: для случаев, когда скорость разработки важнее скорости запуска программы, используйте язык сценариев. Подобных ситуаций в разработке игр множество. Особенно, когда речь идет о тривиальных вещах, таких как обработка событий высокого уровня.
Редактировать: Причина, по которой lua имеет тенденцию быть довольно популярной в разработке игр, заключается в том, что, возможно, это один из самых быстрых (если не самых быстрых) общедоступных языков сценариев в мире. Однако, с этой дополнительной скоростью, он пожертвовал некоторыми из своих удобств. Тем не менее, это все еще возможно более удобно, чем работать с прямым C или C ++.
Важное редактирование: После дальнейших исследований я обнаружил, что существует намного больше противоречий по поводу определения языка сценариев (см . Дихотомию Оустерхаута ). Основная критика определения языка как «языка сценариев» заключается в том, что он не имеет никакого значения ни для синтаксиса, ни для семантики языка, который он интерпретирует или компилирует.
В то время как языки, которые обычно считаются «языками сценариев», обычно интерпретируются, а не компилируются, длинный и короткий смысл их определения как «языков сценариев» действительно зависит от того, как люди их видят и как их создатели определяли их.
Вообще говоря, язык можно легко считать языком сценариев (при условии, что вы согласны с дихотомией Оустерхаута), если он удовлетворяет следующим критериям (в соответствии со статьей выше):
- Они набираются динамически
- У них мало или вообще нет условий для сложных структур данных
- Программы в них (скрипты) интерпретируются
Кроме того, часто считается, что язык является языком сценариев, если он предназначен для взаимодействия и функционирования наряду с другим языком программирования (обычно языком, который не считается языком сценариев).