Сценарна мова
Сценарна мова(мова сценаріїв, жарг.скриптова мова; англ. 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] .
Для написання користувацьких розширень можуть використовуватися як скрипти (у термінології деяких програм «макроси»), так і плагіни (незалежні модулі, написані компілюваними мовами; в деяких програмах вони можуть називатися «утилітами», «експортерами», «драйверами»).
Скриптова мова зручна у таких випадках:
Плагіни також мають важливі переваги.
- Готові програми, відтрансльовані в машинний код, виконуються значно швидше за скрипти, які інтерпретуються з вихідного коду динамічно при кожному виконанні. Більшість програм переносяться на рівні вихідного коду і можуть бути виконані інтерпретатором відповідної мови подібно до скриптів. Використання ж байт-коду (Java, C#, llvm) дозволяє зберігати, переносити та виконувати програми більш ефективним чином, ніж скрипти.
- Повний доступ до будь-якого апаратного забезпечення або ресурсу ОС (у скриптовій мові для цього повинен існувати спеціальний API, написаний мовою, що компілюється). Плагіни, що працюють з апаратним забезпеченням,Зазвичай називають драйверами.
- Якщо передбачається інтенсивний обмін даними між основною програмою і розширенням користувача, для плагіна його забезпечити простіше.
- Якщо мови програмування створені у різний час й у різних цілей, їх порівняння з виразної сили некоректно. Цілком природно, що, наприклад, алголоподібні мови (створювалися в 60-х та 70-х) будуть менш виразними, ніж сучасні скриптові мови загального призначення. У порівнянні з "ровесниками" скрипти виглядають вже набагато менш вигідно.
- Для компілюваних мов програмування характерне використання сильної статичної системи типів, що дозволяє ефективно відловлювати помилки. Використання ж у сучасних скриптах динамічної типізації обумовлено скоріше технічними особливостями реалізації.