Сценарна мова

Сценарна мова(мова сценаріїв, жарг.скриптова мова; англ. scripting language) — високорівнева мова сценаріїв (англ. script) — коротких описів дій, які виконує система. Різниця між програмами та сценаріями досить розмита. Сценарій - це програма, що має справу з готовими програмними компонентами [1] .

Зміст

Мови програмування взагалі та сценарні мови зокрема можуть бути класифіковані безліччю різних способів.

У плані швидкодії скриптові мови можна розділити на мовидинамічного розбору(sh, COMMAND.COM) іпопередньо компілювані(Perl). Мови динамічного аналізу зчитують інструкції з файлу програми мінімально потрібними блоками, і виконують ці блоки, не читаючи подальший код. Передкомпілювані мови транслюють усю програму в байт-код і потім виконують його. Деякі скриптові мови мають можливість компіляції програми "на льоту" в машинний код (т.з. JIT-компіляція).

Застосування мови можна грубо розділити на три типи [7] :

  • командно-сценарні;
  • прикладні сценарні;
  • Універсальні сценарні.

Командно-сценарні мови

З'явилися ще у 1960-х роках для керування завданнями в операційних системах. З мов на той час найбільш відомий JCL для OS/360. У цей клас входять мови пакетної обробки (bach language) і мови командних оболонок, наприклад sh, csh для Unix. Ці мови найчастіше використовують у пакетному режимі обробки [7] .

Вбудовані (прикладні сценарні) мови

Сценарні мови цього типу почали з'являтися у 1980-ті роки, коли на промислових персональних комп'ютерах стало можливим інтерактивне спілкування з ОС. У клієнт-серверній архітектурітакі мови працювали у клієнтській частині програмного забезпечення [7] .

Мови загального призначення

Цей тип сценарних мов найбільш відомий (особливо у застосуванні до веб-програмування). Мови цього стали виникати з 1990-х [7] .

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

Для написання користувацьких розширень можуть використовуватися як скрипти (у термінології деяких програм «макроси»), так і плагіни (незалежні модулі, написані компілюваними мовами; в деяких програмах вони можуть називатися «утилітами», «експортерами», «драйверами»).

Скриптова мова зручна у таких випадках:

Плагіни також мають важливі переваги.

  1. Готові програми, відтрансльовані в машинний код, виконуються значно швидше за скрипти, які інтерпретуються з вихідного коду динамічно при кожному виконанні. Більшість програм переносяться на рівні вихідного коду і можуть бути виконані інтерпретатором відповідної мови подібно до скриптів. Використання ж байт-коду (Java, C#, llvm) дозволяє зберігати, переносити та виконувати програми більш ефективним чином, ніж скрипти.
  2. Повний доступ до будь-якого апаратного забезпечення або ресурсу ОС (у скриптовій мові для цього повинен існувати спеціальний API, написаний мовою, що компілюється). Плагіни, що працюють з апаратним забезпеченням,Зазвичай називають драйверами.
  3. Якщо передбачається інтенсивний обмін даними між основною програмою і розширенням користувача, для плагіна його забезпечити простіше.
  4. Якщо мови програмування створені у різний час й у різних цілей, їх порівняння з виразної сили некоректно. Цілком природно, що, наприклад, алголоподібні мови (створювалися в 60-х та 70-х) будуть менш виразними, ніж сучасні скриптові мови загального призначення. У порівнянні з "ровесниками" скрипти виглядають вже набагато менш вигідно.
  5. Для компілюваних мов програмування характерне використання сильної статичної системи типів, що дозволяє ефективно відловлювати помилки. Використання ж у сучасних скриптах динамічної типізації обумовлено скоріше технічними особливостями реалізації.