Сценарный язык

Сценарный язык

Сцена́рный язы́к или скри́птовый язы́к (англ. scripting language, в русской литературе принято название язык сценариев) — высокоуровневый язык программирования для написания сценариев — кратких описаний выполняемых системой действий. Разница между программами и сценариями довольно размыта. Сценарий — это программа, имеющая дело с готовыми программными компонентами[1].

Согласно Джону Устерхауту, автору языка Tcl, высокоуровневые языки можно разделить на языки системного программирования (англ. system programming languages) и сценарные языки(англ. scripting languages). Последние он также назвал склеивающими языками(англ. glue languages) или языками системной интеграции(англ. system integration languages). Сценарии обычно интерпретируются, а не компилируются[2], хотя сценарные языки программирования один за другим обзаводятся JIT-компиляторами[3][4][5].

В более узком смысле под скриптовым языком может пониматься специализированный язык для расширения возможностей командной оболочки или текстового редактора и средств администрирования операционных систем[6].

Содержание

Классификация

Языки программирования вообще и сценарные языки в частности могут быть классифицированы множеством различных способов. По применению языки можно грубо разделить на четыре типа[7]:

  • командно-сценарные;
  • прикладные сценарные;
  • языки разметки;
  • универсальные сценарные.

Командно-сценарные языки

Появились ещё в 1960-х годах для управления заданиями в операционных системах. Из языков того времени наиболее известен JCL для OS/360. В этот класс входят языки пакетной обработки англ. batch language и языки командных оболочек, например, sh, csh для Unix. Эти языки чаще всего используются в пакетном режиме обработки[7].

Например, язык AppleScript операционной системы MacOS имеет редактор Script Editor, который позволяет записывать действия по мере их выполнения пользователем в системе в файл сценария (текстовый файл) и оформлять в виде исполняемой программы. Такой подход позволяет составлять простейшие сценарии непрограммирующим пользователем[8].

Прикладные сценарные языки

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

К этой категории можно отнести JavaScript и его диалекты (JScript, ECMAScript)[7].

Языки разметки

Несколько особняком среди сценарных языков стоят языки разметки (тегированные языки). Главная характерная черта этих языков — встраивание специальных кодов (тегов) в обычный текст не только для целей структурирования и форматирования, но и для определения динамического поведения[7].

Родственны этим языкам Postscript и RTF[7].

Универсальные языки

Этот тип сценарных языков наиболее известен, особенно в применении к программированию для веба. Языки этого типа стали возникать с 1990-х годов[7].

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

Критика

Создатель Java Джеймс Гослинг отвёл динамическим языкам программирования (упомянув PHP и Ruby) роль сценарных языков, генерирующих веб-страницы, но непригодных для применения в более широкой нише приложений из-за проблем с масштабируемостью и производительностью[9]. Приверженцы динамических языков не оставили критику без ответа по всем пунктам, в частности о его старании представить современные динамические языки всего лишь «сценарными»[10].

Плагины и скрипты

Для написания пользовательских расширений могут использоваться как скрипты (в терминологии некоторых программ «макросы»), так и плагины (независимые модули, написанные на компилируемых языках; в некоторых программах они могут называться «утилитами», «экспортёрами», «драйверами»).

Скриптовый язык удобен в следующих случаях:

  1. Если нужно обеспечить программируемость без риска дестабилизировать систему. Так как, в отличие от плагинов, скрипты интерпретируются, а не компилируются, неправильно написанный скрипт выведет диагностическое сообщение, а не приведёт к системному краху;
  2. Если важен выразительный код. Во-первых, чем сложнее система, тем больше кода приходится писать «потому, что это нужно». Во-вторых, в скриптовом языке может быть совсем другая концепция программирования, чем в основной программе — например, игра может быть монолитным однопоточным приложением, в то время как управляющие персонажами скрипты выполняются параллельно. В-третьих, скриптовый язык имеет собственный проблемно-ориентированный набор команд, и одна строка скрипта может делать то же, что несколько десятков строк на традиционном языке. Как следствие, на скриптовом языке может писать программист очень низкой квалификации — например, геймдизайнер своими руками, не полагаясь на программистов, может корректировать правила игры;
  3. Если требуется кроссплатформенность. Хорошим примером является JavaScript — его исполняют браузеры под самыми разными ОС.

У плагинов же есть три важных преимущества.

  1. Готовые программы, оттранслированные в машинный код, выполняются значительно быстрее скриптов, которые интерпретируются из исходного кода динамически при каждом исполнении. Поэтому скриптовые языки не применяются для написания программ, требующих оптимальности и быстроты исполнения. Но из-за простоты они часто применяются для написания небольших, одноразовых («проблемных») программ.
  2. Полный доступ к любому аппаратному обеспечению или ресурсу ОС (в скриптовом языке для этого должен существовать написанный на машинном коде API). Плагины, работающие с аппаратным обеспечением, традиционно называют драйверами.
  3. Если предполагается интенсивный обмен данными между основной программой и пользовательским расширением, для плагина его обеспечить проще.

Также в плане быстродействия скриптовые языки можно разделить на языки динамического разбора (sh, command.com) и предварительно компилируемые (Perl). Языки динамического разбора считывают инструкции из файла программы минимально требующимися блоками, и исполняют эти блоки, не читая дальнейший код. Предкомпилируемые языки транслируют всю программу в байт-код и затем исполняют его. Некоторые скриптовые языки имеют возможность компиляции программы «на лету» в машинный код (т. н. JIT-компиляция).

Примечания

Литература

Ссылки



Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Полезное


Смотреть что такое "Сценарный язык" в других словарях:

  • Сценарный язык программирования — …   Википедия

  • AWL (язык программирования) — AWL (Alternative Web Language) Класс языка: мультипарадигмальный: функциональный, процедурный, объектно ориентированный Тип исполнения: интерпретируемый Появился в: 2005 г. Типизация данных: динамическая …   Википедия

  • Скрипт-язык — в Интернет интерпретируемый (объектно ориентированный) алгоритмический язык, предназначенный для генерации динамических веб страниц. Различают скрипт языки: исполняемые на стороне клиента: JavaScript и VBScript; и исполняемые на стороне сервера:… …   Финансовый словарь

  • Литературный сценарий — (ист. и спец. применяется в кинематографе)  законченное кинодраматургическое произведение. Он должен содержать полное, последовательное и конкретное описание сюжета, состоящего из разработанных сцен и эпизодов, диалоги и раскрывать образы… …   Википедия

  • Зорич, Александр — Александр Зорич Дмитрий и Яна за работой Имя при рождении: Дмитрий Гордевский, Яна Боцман Псевдонимы: Александр Зорич Дата рождения: 1973 год Место рождения: Харьков, СССР Род деятельности …   Википедия

  • Форрест Гамп — У этого термина существуют и другие значения, см. Форрест Гамп (значения). Форрест Гамп Forrest Gump …   Википедия

  • Александр Зорич — Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей …   Википедия

  • Зорич Александр — Александр Зорич Дмитрий и Яна за работой Имя при рождении: Дмитрий Гордевский, Яна Боцман Псевдонимы: Александр Зорич Дата рождения: 1973 год Место рождения: Харьков, СССР Род деятельности …   Википедия

  • Сталкер (фильм) — У этого термина существуют и другие значения, см. Сталкер. Сталкер Stalker …   Википедия

  • Володин, Александр Моисеевич — В Википедии есть статьи о других людях с такой фамилией, см. Володин. Александр Володин …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»