Jump to content

Язык сценариев

GDScript в Godot 3.4

В вычислительной технике сценарий представляет собой относительно короткий и простой набор инструкций, которые обычно автоматизируют ручной процесс. Процесс написания сценария называется сценарием . Язык сценариев или язык сценариев описывает язык программирования , который используется для написания сценариев. [1]

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

Язык сценариев может быть языком общего назначения или языком предметной области для конкретной среды. При внедрении в приложение его можно назвать языком расширения .

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

Термин «язык сценариев» иногда используется в более широком смысле для обозначения динамических высокого уровня языков программирования в целом. Некоторые из них являются строго интерпретируемыми языками , а другие используют форму компиляции. В этом контексте термин сценарий относится к небольшой программе на таком языке; обычно содержится в одном файле и содержит не более нескольких тысяч строк кода.

Область применения языков сценариев варьируется от малых до больших, от узкоспециализированных языков до языков программирования общего назначения . Язык может начинаться с небольшого и узкоспециализированного языка, а затем превратиться в переносимый язык общего назначения; и наоборот, язык общего назначения может позже развить специальные диалекты, специфичные для предметной области.

Известные языки

[ редактировать ]
  • AWK для обработки текста, обычно доступен в Unix-подобных операционных системах.
  • Groovy , Java -подобные объектно-ориентированные сценарии.
  • JavaScript (позже: ECMAScript ), изначально ограничивавшийся запуском в веб-браузере для динамического изменения веб-страницы; позже преобразован в широко переносимый язык программирования общего назначения.
  • Lisp — семейство языков общего назначения и языков расширения для приложений, включая Emacs Lisp для Emacs.
  • Lua , язык расширения, используемый многими приложениями.
  • Перл , [2] язык обработки текста, который позже превратился в язык общего назначения; также используется в качестве языка расширения для различных приложений
  • Python , язык общего назначения, а также язык расширения.
  • Rexx — язык общего назначения, работающий на многих платформах; также используется как язык расширения
  • Ruby — многопарадигмальный язык общего назначения.
  • sed для обработки текста; доступен в большинстве Unix-подобных операционных систем и портирован на другие операционные системы.
  • ТКЛ , [3] для Unix-подобных сред, популярных в 1990-х годах; может использоваться вместе с Tk для разработки приложений с графическим интерфейсом
  • TrainzScript, собственный язык расширения для Trainz. железнодорожных симуляторов
  • Wesnoth поддерживает сценарии, добавляемые пользователями.

Характеристики

[ редактировать ]

Сценарий — это субъективная характеристика, которая обычно включает следующие атрибуты.

Интерпретировано

[ редактировать ]

Сценарий обычно не компилируется – по крайней мере, в его обычном значении. Как правило, они интерпретируются непосредственно из исходного кода или из байт-кода или запускаются как собственные после своевременной компиляции . [4]

Коротко и просто

[ редактировать ]

Сценарий обычно относительно короткий и простой. Поскольку ограничений по размеру и сложности нет, сценарий является субъективным. Несколько строк кода без ветвления, вероятно, считаются сценарием. Кодовая база из нескольких файлов, которая выполняет сложный пользовательский или аппаратный интерфейс, сложные алгоритмы или мультипрограммирование , вероятно, не считается сценарием.

Автоматизирует

[ редактировать ]

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

Ограниченный язык

[ редактировать ]

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

Начинается сверху

[ редактировать ]

Обычно выполнение сценария начинается с первой строки кода, тогда как приложение обычно запускается в специальной точке кода, называемой точкой входа .

Например, Java не похож на скрипт, поскольку приложение запускается с функции с именем main которые не обязательно должны быть в верхней части кода. Следующий код начинается с main, затем звонит printHelloWorld который печатает «Hello World».

public class HelloWorld {
    public void printHelloWorld() {
        System.out.println("Hello World");
    }
    public static void main(String[] args) {
        printHelloWorld();
    }
}

Напротив, следующий код Python печатает «Hello World» без main функция или другой синтаксис, например определение класса, требуемое Java.

print("Hello World")

Один пользователь

[ редактировать ]

Сценарии часто создаются или модифицируются человеком, который их выполняет. [5] но они также часто распространяются, например, когда большие части игр написаны на языке сценариев, особенно игра Google Chrome T-rex.

Первые мейнфреймы (1950-е годы) были неинтерактивными и вместо этого использовали пакетную обработку . IBM Язык управления заданиями (JCL) — это архетип языков, используемых для управления пакетной обработкой. [6]

Первые интерактивные оболочки были разработаны в 1960-х годах для обеспечения удаленного управления первыми системами с разделением времени , и в них использовались сценарии оболочки , которые управляли запуском компьютерных программ внутри компьютерной программы, оболочки. Кэлвину Мурсу в его языке TRAC обычно приписывают изобретение подстановки команд — способности встраивать команды в сценарии, которые при интерпретации вставляют в сценарий строку символов. [7] Multics вызывает эти активные функции . [8] Луи Пузен написал первый процессор для командных сценариев под названием RUNCOM для CTSS примерно в 1964 году. Стюарт Мэдник из Массачусетского технологического института написал язык сценариев для IBM CP/CMS в 1966 году. Первоначально он назвал этот процессор COMMAND, позже названный EXEC . [9] Multics включал ответвление CTSS RUNCOM, также называемое RUNCOM. [10] EXEC в конечном итоге был заменен EXEC 2 и REXX .

Такие языки, как Tcl и Lua, были специально разработаны как языки сценариев общего назначения, которые можно было встроить в любое приложение. Другие языки, такие как Visual Basic для приложений (VBA), обеспечивали тесную интеграцию со средствами автоматизации базовой системы. Встраивание таких языков сценариев общего назначения вместо разработки нового языка для каждого приложения также имело очевидные преимущества, избавляя разработчика приложений от необходимости писать языковой переводчик с нуля и позволяя пользователю применять навыки, полученные где-то еще.

Некоторое программное обеспечение включает в себя несколько разных языков сценариев. Современные веб-браузеры обычно предоставляют язык для написания расширений самого браузера, а также несколько стандартных встроенных языков для управления браузером, включая JavaScript (диалект ECMAScript ) или XUL .

Языки сценариев можно разделить на несколько различных типов со значительной степенью совпадения между типами.

Приклеиваем языки

[ редактировать ]

Сценарии часто противопоставляют системному программированию , как в дихотомии Оустерхаута или « программировании в большом и программировании в малом ». С этой точки зрения сценарии — это связующий код , соединяющий программные компоненты , а язык, специализированный для этой цели, — это связующий язык . Конвейеры и сценарии оболочки являются архетипическими примерами связующих языков, и Perl изначально разрабатывался для выполнения той же роли. Веб-разработку можно рассматривать как использование связующих языков, обеспечивающих взаимодействие между базой данных и веб-сервером . Но если значительная часть логики написана в сценарии, ее лучше охарактеризовать как просто еще один программный компонент, а не как «клей».

Клеевые языки особенно полезны для написания и поддержки:

  • пользовательские команды для командной оболочки; [11]
  • программы меньшего размера, чем те, которые лучше реализуются на компилируемом языке; [12]
  • программы-оболочки для исполняемых файлов, такие как пакетный файл, который перемещает файлы или манипулирует ими, а также выполняет другие действия с операционной системой до или после запуска приложения, такого как текстовый процессор, электронная таблица, база данных, ассемблер, компилятор и т. д.; [13]
  • сценарии, которые могут меняться; [14]
  • Быстрая разработка приложения решения, которое в конечном итоге реализуется на другом, обычно компилируемом языке. [ нужна ссылка ]

Примеры языка клея:

Языки макросов , доступные компонентам операционной системы или приложений, могут служить связующими языками. К ним относятся Visual Basic для приложений , WordBasic , LotusScript , CorelScript , Hummingbird Basic, QuickScript, Rexx, SaxBasic и WinWrap Basic. Другие инструменты, такие как AWK, также можно считать связующими языками, как и любой язык, реализованный движком Windows Script Host (VBScript, JScript и VBA по умолчанию в Windows и сторонних движках, включая реализации Rexx, Perl, Tcl, Python, XSLT, Ruby, Modern Pascal, Delphi и C). Большинство приложений могут получать доступ к компонентам операционной системы и использовать их через объектные модели или собственные функции.

Другие устройства, такие как программируемые калькуляторы, также могут иметь связующие языки; операционные системы КПК, такие как Windows CE, могут иметь доступные собственные или сторонние инструменты макросов, которые объединяют приложения, в дополнение к реализациям общих языков связующего программирования, включая Windows NT , DOS и некоторые оболочки Unix , Rexx, Modern Pascal, PHP. и Перл. В зависимости от версии ОС доступны WSH и механизмы сценариев по умолчанию (VBScript и JScript).

Программируемые калькуляторы можно запрограммировать на связных языках тремя способами. Например, Texas Instruments TI-92 по умолчанию может быть запрограммирован с использованием языка командных сценариев. Включение языка сценариев и связующего языка Lua в серию калькуляторов TI-NSpire можно рассматривать как преемника этого. Основные встроенные языки программирования высокого уровня большинства графических калькуляторов (чаще всего варианты Basic, иногда производные от Lisp и, что реже, производные от C) во многих случаях могут объединять функции калькулятора, такие как графики, списки, матрицы и т. д. Доступны сторонние реализации более полной базовой версии, которые могут быть ближе к вариантам, перечисленным в качестве связующих языков в этой статье, а также упоминаются попытки реализовать Perl, Rexx или различные оболочки операционных систем на графических калькуляторах TI и HP. C на базе ПК Кросс-компиляторы для некоторых машин TI и HP, используемые с инструментами, которые преобразуют C и Perl, Rexx, AWK и сценарии оболочки в Perl, Modern Pascal, VBScript в Perl и обратно, позволяют писать программы. на связующем языке для возможной реализации (в виде скомпилированной программы) на калькуляторе. [ нужна ссылка ]

Языки редактора

[ редактировать ]

Ряд текстовых редакторов поддерживают макросы, написанные либо с использованием языка макросов, встроенного в редактор, например, The SemWare Editor (TSE), vi Improved (VIM), либо с использованием внешней реализации, например, XEDIT , или того и другого, например, KEDIT . Иногда текстовые редакторы и макросы редактирования используются скрытно для обеспечения других приложений, например FILELIST и RDRLIST в CMS .

Языки и оболочки управления заданиями

[ редактировать ]

Основной класс языков сценариев вырос из автоматизации управления заданиями , которая связана с запуском и контролем поведения системных программ. [15] (в этом смысле оболочки можно рассматривать как потомков IBM JCL, или языка управления заданиями , который использовался именно для этой цели). Многие из интерпретаторов этих языков выполняют функции интерпретаторов командной строки, таких как оболочка Unix или MS-DOS. COMMAND.COM. Другие, такие как AppleScript, предлагают использовать английские команды для создания сценариев.

Скрипты графического интерфейса

[ редактировать ]

С появлением графических пользовательских интерфейсов появился специализированный язык сценариев для управления компьютером. Эти языки взаимодействуют с теми же графическими окнами, меню, кнопками и т. д., что и пользователь-человек. Они делают это, моделируя действия пользователя. Эти языки обычно используются для автоматизации действий пользователя. Такие языки также называются « макросами », когда управление осуществляется посредством имитации нажатия клавиш или щелчков мыши, а также касания или нажатия на сенсорном экране.

Эти языки в принципе можно использовать для управления любым приложением с графическим интерфейсом; но на практике их использование ограничено, поскольку для их использования требуется поддержка со стороны приложения и операционной системы . Из этого ограничения есть несколько исключений. их экрана Некоторые языки сценариев GUI основаны на распознавании графических объектов по пикселям . Эти языки сценариев графического пользовательского интерфейса не зависят от поддержки со стороны операционной системы или приложения.

Когда графический интерфейс предоставляет соответствующие интерфейсы, как в IBM Workplace Shell , для написания сценариев графического пользовательского интерфейса можно использовать общий язык сценариев, например OREXX .

Языки, специфичные для приложения

[ редактировать ]

Языки, специфичные для приложения, можно разделить на множество различных категорий, т.е. языки автономных приложений (исполняемые файлы) или языки, специфичные для внутренних приложений (postscript, xml, gscript, как некоторые из широко распространенных сценариев, реализованных соответственно Adobe, MS и Google), среди прочего включают в себя идиоматический язык сценариев, адаптированный к потребностям пользователя приложения. Аналогичным образом, многие компьютерные игровые системы используют собственный язык сценариев для выражения запрограммированных действий неигровых персонажей и игровой среды. Языки такого типа предназначены для одного приложения; и, хотя внешне они могут напоминать конкретный язык общего назначения (например, QuakeC , созданный по образцу C), у них есть специальные особенности, которые их отличают. Emacs Lisp , хотя и является полностью сформированным и работоспособным диалектом Lisp , содержит множество специальных функций, которые делают его наиболее полезным для расширения функций редактирования Emacs. Язык сценариев, специфичный для приложения, можно рассматривать как язык программирования, специфичный для предметной области. специализированный для одного приложения.

Расширение/встраиваемые языки

[ редактировать ]

Ряд языков был разработан с целью замены языков сценариев для конкретных приложений путем встраивания в прикладные программы. Программист приложения (работающий на C или другом системном языке) включает в себя «крючки», с помощью которых язык сценариев может управлять приложением. Эти языки могут быть технически эквивалентны языку расширения, специфичному для приложения, но когда приложение встраивает «общий» язык, пользователь получает преимущество, заключающееся в возможности передавать навыки из приложения в приложение. Более общая альтернатива — просто предоставить библиотеку (часто библиотеку C), которую язык общего назначения может использовать для управления приложением без изменения языка для конкретной предметной области.

JavaScript зародился как язык сценариев внутри веб-браузеров и в основном до сих пор остается им ; однако стандартизация языка как ECMAScript сделала его популярным как встраиваемый язык общего назначения. В частности, в Mozilla реализация SpiderMonkey встроена в несколько сред, таких как Yahoo! Движок виджетов . Другие приложения, включающие реализации ECMAScript, включают Adobe продукты Adobe Flash ( ActionScript ) и Adobe Acrobat (для создания сценариев PDF- файлов).

Tcl был создан как язык расширения, но стал чаще использоваться как язык общего назначения в ролях, подобных Python , Perl и Ruby . С другой стороны, Rexx изначально создавался как язык управления заданиями, но широко используется как язык расширения, а также язык общего назначения. Perl — это язык общего назначения, но он имел диалект Oraperl (1990), состоящий из двоичного файла Perl 4 со скомпилированным интерфейсом вызовов Oracle . Однако с тех пор он был заменен библиотекой (модуль Perl) DBD::Oracle . [16] [17]

Другие сложные и ориентированные на задачи приложения могут включать и предоставлять встроенный язык программирования, чтобы предоставить пользователям больше контроля и предоставить им больше функциональности, чем может быть доступно через пользовательский интерфейс, каким бы сложным он ни был. Например, инструменты разработки Autodesk Maya 3D включают встроенный язык Maya или Blender , который использует Python для выполнения этой роли.

Некоторые другие типы приложений, которым требуется более быстрое добавление функций или циклы настройки и запуска (например, игровые движки ), также используют встроенный язык. В ходе разработки это позволяет им быстрее создавать прототипы функций и более свободно настраивать их, без необходимости для пользователя иметь глубокие знания о внутренней работе приложения или перестраивать его после каждой настройки (что может занять значительное количество времени). . Языки сценариев, используемые для этой цели, варьируются от более распространенных и известных Lua и Python до менее известных, таких как AngelScript и Squirrel .

Ch — еще один вариант сценариев, совместимый с C, который можно встроить в прикладные программы C/C++.

См. также

[ редактировать ]
  1. ^ «Спецификация языка ECMAScript 2019» . Экма Интернешнл . Проверено 2 апреля 2018 г.
  2. ^ Шеппард, Дуг (16 октября 2000 г.). «Введение в Perl для начинающих» . Perl.com . Проверено 8 января 2011 г.
  3. ^ Уолл, Ларри (12 декабря 2007 г.). «Программирование — это сложно, давайте начнем писать сценарии…» Perl.com . Архивировано из оригинала 8 декабря 2023 года.
  4. ^ Браун, Вики; Морен, Рич (1999). «Скриптовые языки» . МакТех . Проверено 22 июля 2009 г.
  5. ^ Луи, Рональд. «Похвала скриптов: настоящий прагматизм программирования» . IEEE-компьютер. Архивировано из оригинала 23 сентября 2015 г. Проверено 27 августа 2013 г.
  6. ^ Корпорация IBM (март 1967 г.). Язык управления заданиями операционной системы IBM System/360 (C28-6529-4) (PDF) . Архивировано (PDF) из оригинала 25 мая 2023 г. - через битсейверы.
  7. ^ Мурс, Кальвин (1965). «TRAC, язык описания процедур для реактивной пишущей машинки» . Фонд ПРОФ . Архивировано из оригинала 25 апреля 2001 г. Проверено 9 марта 2012 г.
  8. ^ Ван Флек, Томас (ред.). «Глоссарий Multitics – A — (активная функция)» . Мультикс . Проверено 9 марта 2012 г.
  9. ^ Вариан, Мелинда (апрель 1991 г.). «VM и сообщество VM: прошлое, настоящее и будущее» (PDF) . Архивировано из оригинала (PDF) 6 октября 2011 года . Проверено 9 марта 2012 г.
  10. ^ Ван Флек, Томас (ред.). «Глоссарий Multitics – R – (RUNCOM)» . Проверено 9 марта 2012 г.
  11. ^ «Что такое клей-код (язык клеевого кода)? — Определение с сайта WhatIs.com» . WhatIs.com . Проверено 31 января 2022 г.
  12. ^ Ларсон, Куинси (10 января 2020 г.). «Интерпретируемые и компилируемые языки программирования» . Лагерь бесплатного кода . Проверено 23 февраля 2022 г.
  13. ^ Балкис, Антон. «Сценарий есть» . Советы короля . Проверено 23 февраля 2022 г.
  14. ^ Аксельссон, Матс. «Шелл-скрипты — что можно изменить» . Подсказка по Linux . Проверено 23 февраля 2022 г.
  15. ^ «Основы управления заданиями (Справочное руководство Bash)» . ГНУ . Проверено 20 мая 2022 г.
  16. ^ « Oraperl — [УСТАРЕЛО Perl-доступа к базам данных Oracle для старых скриптов oraperl]», Metacpan.
  17. ^ « Perl », Часто задаваемые вопросы по Underground Oracle .
  18. ^ ван Россум, Гвидо (6–8 января 1998 г.). «Склейте все это вместе с помощью Python» . python.org. Архивировано из оригинала 19 января 2024 года.

Дальнейшее чтение

[ редактировать ]
  • Бэррон, Дэвид Уильям (2001). Мир скриптовых языков . Уайли. ISBN  0-471-99886-9 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e2540d5406256ea35c116bceac2bab0f__1722703620
URL1:https://arc.ask3.ru/arc/aa/e2/0f/e2540d5406256ea35c116bceac2bab0f.html
Заголовок, (Title) документа по адресу, URL1:
Scripting language - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)