Я думаю, ви в принципі правильні. Виконання мови - це вже повністю гнучка система, керована даними. Він займає один фрагмент даних (програма) і використовує їх для визначення того, як він повинен діяти на інші дані. Можливо, навіть є багатокористувацька схема для зберігання коду для повторного використання іншими програмами (починаючи від шляху включення до правильного управління встановленням).
"Мова сценаріїв", грубо кажучи, є мовою виконання, коли цей вхід коду читається людиною. Компілятор розміщує додатковий крок між користувачем та програмою. Мови "жарту", такі як Malbolge та APL, не повинні читатись у будь-якій формі. Але все це одне й те саме на одному рівні, і в будь-якому випадку читабельне для людини не означає, що всі потенційні користувачі мають навички його читати чи писати, або можна очікувати їх розвитку.
Є вагомі причини, чому ви зазвичай не піддаєте мовленнєвому виконанню безпосередньо кінцевим користувачам. Основним є те, що видалення гнучкості збільшує зручність.
Якщо я хочу ввести повідомлення SO, я просто хочу ввести його. Я цілком здатний замість цього написати програму C ++, щоб вивести її, але я б не використовував веб-браузер, який відкривав редактор програм C ++ замість звичайного текстового поля. Люди, які не знають C ++, не тільки не використовували б браузер, вони не могли.
Якщо я хочу налаштувати певні параметри бізнесу, то я не обов'язково хочу це робити за допомогою мови специфікації повного Тюрінга, і навіть якщо я це зробив , мабуть, це не відрізняється від "жорсткого кодування" тих самих бізнес-параметрів у будь-якому іншому програмуванні мова. Вам ще потрібно врахувати, чи означає те, що ви пишете, те, що ви хочете. Вам все-таки потрібно перевірити правильність змін. Тобто, вам все ще потрібні навички програмування для будь-яких завдань , які не є тривіальними і не ганьблять кого - то , хто дійсно є навички програмування , які підготували спеціальну підсистему ( «додаток») для вас налаштувати ( «використання»).
Отож, якщо ви збираєтеся взяти участь у 100% керованій даними системі, яка може зробити все, що задається потрібними даними, у вас є два запитання:
- Ми займаємось винаходом мов програмування чи ми повинні бути ними?
- Чи буде наша нова мова програмування кращою (для наших цілей), ніж ті, які ми вже маємо, і чи будемо ми підтримувати та розвивати її як потрібно?
Іноді відповіді - так, і ви пишете якусь доменну мову. Або навіть справжню мову програмування загального призначення, якщо ви Sun / Microsoft / Stroustrup / van Rossum / багато інших. Іноді відповіді - ні, і у вас є ефект "внутрішньої платформи" - після великих зусиль, спроб і помилок ви щось закінчите. Якщо вам пощастило, він лише трохи поступається мові програмування, якою ви написали, і не простіший у використанні.
Деякі мови більш складні або простіші, ніж інші, зокрема, якщо вони спеціалізовані для такої мети, як R, то деякі користувачі знайдуть їх набагато простіше. Можливо, те, що ви, мабуть, не зробите, - це істотно спростити програмування загальних програм. У будь-який час, мабуть, у світі є декілька людей / організацій, які мають можливість зробити це, але ваш начальник / компанія має чесно розглянути питання про те, включає його чи ви.
Для ігор часто використовується хитрість, яка полягає в тому, щоб викрити прив’язки Луа до ігрового двигуна. Це дозволяє дизайнерам програмувати на відносно легкій мові, але все ж залучати "справжнього" програміста там, де це необхідно для роботи або отримати доступ до певної функціональності двигуна чи платформи. Отримані скрипти Lua - це "дані", що стосується двигуна. Їм не все потрібно включати велику частину того, що ви називали б "логікою", на відміну від конфігураційних даних, і часто вони в значній мірі визначають весь сюжет і середовище, але не весь геймплей. Це не 100% керування даними, і це, звичайно, не 100% без помилок, але це цікавий практичний компроміс.