A язык сценариев или язык сценариев - это язык программирования для специального среда выполнения, автоматизирующая выполнение задач; В качестве альтернативы задачи могут выполняться по очереди человеком-оператором. Языки сценариев часто интерпретируются, а не компилируются..
Примитивы обычно являются элементарными задачами или вызовами API, и язык позволяет объединять их в большее количество программ. Среды, которые можно автоматизировать с помощью сценариев, включают программное обеспечение приложения, веб-страницы в веб-браузере, использование оболочек из работающих системы (ОС), встроенные системы, а также многочисленные игры. Язык сценариев можно рассматривать как предметно-ориентированный язык для конкретной среды; в случае написания сценария приложения он также известен как язык расширения . Языки сценариев также иногда называют языками программирования очень высокого уровня, поскольку они работают на высоком уровне абстракции, или языками управления, особенно для языков управления заданиями на мэйнфреймах.
Термин «язык сценариев» также используется в широком смысле для обозначения динамических высокоуровневых языков общего назначения интерпретируемых языков, например Perl, PowerShell, Python и Tcl. с термином «сценарий», который часто используется для небольших программ (до нескольких тысяч строк кода) на таких языках или на предметно-ориентированных языках, таких как языки обработки текста sed и AWK. Некоторые из этих языков изначально были разработаны для использования в определенной среде, а затем были преобразованы в переносимые предметно-ориентированные языки или языки общего назначения. И наоборот, многие языки общего назначения имеют диалекты, которые используются в качестве языков сценариев. В этой статье обсуждаются языки сценариев в узком смысле языков для конкретной среды.
Спектр языков сценариев варьируется от очень маленьких и очень предметно-ориентированных языков до языков программирования общего назначения, используемых для написания сценариев. Стандартные примеры языков сценариев для конкретных сред включают: Bash для операционных систем Unix или Unix-like ; ECMAScript (JavaScript ) для веб-браузеров; и Visual Basic для приложений для приложений Microsoft Office. Lua - это язык, разработанный и широко используемый в качестве языка расширения. Python - это язык общего назначения, который также обычно используется в качестве языка расширения, в то время как ECMAScript по-прежнему в основном является языком сценариев для веб-браузеров, но также используется как язык общего назначения. Диалект Emacs Lisp для Lisp (для редактора Emacs ) и диалект Visual Basic для приложений в Visual Basic являются примерами написания сценариев. языковые диалекты языков общего назначения. Функциональность некоторых игровых систем, в частности виртуального мира Second Life и франшизы симуляторов железной дороги Trainz, была значительно расширена с помощью скриптовых расширений (Linden Scripting Язык и TrainzScript). В других играх, таких как Веснот, множество реальных игр, в которые играют игроки, представляют собой сценарии, написанные другими пользователями.
Предусмотрены типовые языки сценариев быть очень быстрым для изучения и записи либо в виде коротких файлов исходного кода, либо в интерактивном режиме в цикле чтение – оценка – печать (REPL, языковая оболочка). Обычно это подразумевает относительно простой синтаксис и семантику ; обычно «сценарий» (код, написанный на языке сценариев) выполняется от начала до конца, как «сценарий», без явной точки входа .
Например, не принято характеризовать Java в качестве языка сценариев из-за его длинного синтаксиса и правил о том, какие классы существуют в каких файлах, и невозможно напрямую выполнять Java в интерактивном режиме, поскольку исходные файлы могут содержать только определения, которые должны быть вызваны извне с помощью или средство запуска приложений.
открытый класс HelloWorld {public void printHelloWorld () {System.out.println ("Hello World"); }}
Этот фрагмент кода, предназначенный для печати «Hello World», ничего не делает, поскольку main () не объявлен в классе HelloWorld, хотя приведенный ниже был бы полезен.
открытый класс HelloWorld {public void printHelloWorld () {System.out.println ("Hello World"); } public static void main (String args) {printHelloWorld (); }}
В приведенном выше примере определен main, поэтому он может быть вызван программой запуска, хотя это все еще не может выполняться в интерактивном режиме. Напротив, Python позволяет определять некоторые функции в одном файле или полностью избегать функций и использовать стиль императивного программирования или даже использовать его в интерактивном режиме.
print ("Hello World") print "Hello World" # Python 2.7 или более ранней версии
Эта одна строка кода Python выводит "Hello World"; здесь не требуется декларативного утверждения типа main ().
Язык сценариев обычно интерпретируется из исходного кода или байт-кода. Напротив, программная среда (интерпретатор), для которой написаны сценарии, обычно пишется на компилируемом языке и распространяется в форме машинного кода.
Языки сценариев могут быть разработаны для использования конечными пользователями программы - разработка конечных пользователей - или могут быть только для внутреннего использования разработчиками, чтобы они могли писать части программы на язык сценариев. Языки сценариев обычно используют абстракцию, форму сокрытия информации, чтобы избавить пользователей от деталей о типах внутренних переменных, хранении данных и управлении памятью.
Часто создаются сценарии или изменяются лицом, выполняющим их, но они также часто распространяются, например, когда большие части игр написаны на языке сценариев, особенно в игре Google Chrome T-rex.
Ранние мэйнфреймы (в 1950-е годы) были неинтерактивными, вместо этого использовалась пакетная обработка. Язык управления заданиями (JCL) IBM - это архетип языков, используемых для управления пакетной обработкой.
Первые интерактивные оболочки были разработаны в 1960-х годах для обеспечения удаленной работы первые системы с разделением времени, и они использовали сценарии оболочки, которые управляли запуском компьютерных программ в компьютерной программе, оболочке. Кэлвину Мурсу в его языке TRAC обычно приписывают изобретение подстановки команд, способность встраивать команды в сценарии, которые при интерпретации вставляют строку символов в сценарий. Multics вызывает эти активные функции. Луи Пузен написал ранний процессор для командных сценариев под названием RUNCOM для CTSS примерно в 1964 году. Стюарт Мэдник из Массачусетского технологического института написал язык сценариев для IBM. CP / CMS в 1966 году. Первоначально он называл этот процессор COMMAND, позже названный EXEC. Multics включала ответвление CTSS RUNCOM, также называемое RUNCOM. EXEC в конечном итоге был заменен на EXEC 2 и REXX.
, такие как Tcl и Lua были специально разработаны как языки сценариев общего назначения, которые могут быть встроены в любое приложение. Другие языки, такие как Visual Basic для приложений (VBA), обеспечивали тесную интеграцию со средствами автоматизации базовой системы. Внедрение таких универсальных языков сценариев вместо разработки нового языка для каждого приложения также имело очевидные преимущества, избавляя разработчика приложений от необходимости кодировать языковой переводчик с нуля и позволяя пользователю применять навыки, полученные в других местах.
Некоторое программное обеспечение включает несколько разных языков сценариев. Современные веб-браузеры обычно предоставляют язык для написания расширений для самого браузера и несколько стандартных встроенных языков для управления браузером, включая JavaScript (диалект ECMAScript ) или XUL.
Языки сценариев можно разделить на несколько различных типов со значительной степенью перекрытия между типами.
Сценарии часто противопоставляются системному программированию, как в дихотомии Оустерхаута или «программирование в целом и программирование в малый ". В этом представлении сценарии - это связующий код, соединяющий программные компоненты, а язык, специализированный для этой цели, является связующим языком. Конвейеры и сценарии оболочки являются архетипическими примерами связующих языков, и Perl изначально был разработан для выполнения той же роли. Веб-разработка может рассматриваться как использование связующих языков, обеспечивающих взаимодействие между базой данных и веб-сервером. Но если значительный объем логики написан в сценарии, его лучше охарактеризовать как просто еще один программный компонент, а не как «клей».
Связующие языки особенно полезны для написания и сопровождения:
Примеры связующего языка:
Macro языков, доступных для работы компоненты системы или приложения могут служить связующими языками. К ним относятся Visual Basic для приложений, WordBasic, LotusScript, CorelScript, Hummingbird Basic, QuickScript, Rexx, SaxBasic <128.>и WinWrap Basic. Другие инструменты, такие как AWK, также могут считаться связующими языками, как и любой язык, реализованный движком Windows Script Host (VBScript, JScript и VBA по умолчанию в Windows и сторонних движках, включая реализации Rexx, Perl, Tcl, Python, XSLT, Ruby, Modern Pascal, Delphi и C). Большинство приложений могут обращаться к компонентам операционной системы и использовать их через объектные модели или свои собственные функции.
Другие устройства, такие как программируемые калькуляторы, также могут иметь языки склейки; операционные системы КПК, такие как Windows CE, могут иметь доступные собственные или сторонние инструменты макросов, которые склеивают приложения вместе, в дополнение к реализациям общих языков склейки, включая Windows NT, MS-DOS и некоторые оболочки Unix, Rexx, Modern Pascal, PHP и Perl. В зависимости от версии ОС доступны WSH и механизмы сценариев по умолчанию (VBScript и JScript).
Программируемые калькуляторы можно программировать на связующих языках тремя способами. Например, Texas Instruments TI-92 по умолчанию может быть запрограммирован на языке командных сценариев. Включение языка сценариев и связующего языка Lua в серию калькуляторов можно рассматривать как преемника этого. Первичные встроенные языки программирования высокого уровня большинства графических калькуляторов (чаще всего базовые варианты, иногда производные от Lisp и, что реже, производные на языке C) во многих случаях могут объединять функции калькулятора, такие как графики, списки, матрицы и т. Д. Доступны сторонние реализации более полной базовой версии, которые могут быть ближе к вариантам, перечисленным в качестве связующих языков в этой статье, а также упоминаются попытки реализовать Perl, Rexx или различные оболочки операционных систем на графических калькуляторах TI и HP. Кросс-компиляторы C на базе ПК для некоторых машин TI и HP, используемые вместе с инструментами, которые конвертируют C и Perl, Rexx, AWK, а также сценарии оболочки в Perl, Modern Pascal, VBScript to и из Perl позволяют писать программу на связующем языке для возможной реализации (в виде скомпилированной программы) на калькуляторе.
Ряд текстовых редакторов поддерживают макросы, написанные с использованием макроязыка, встроенного в редактор, например, The SemWare Editor (TSE), (VIM), или с использованием внешней реализации, например, XEDIT, или того и другого, например, KEDIT. Иногда текстовые редакторы и макросы редактирования используются для предоставления других приложений, например, FILELIST и RDRLIST в CMS.
Основной класс языков сценариев вырос из автоматизация управления заданиями, относящаяся к запуску и контролю поведения системных программ. (В этом смысле можно подумать о оболочках как о потомках IBM JCL или языка управления заданиями, который использовался именно для этой цели.) Многие из интерпретаторов этих языков дублируются как command- интерпретаторы строк, такие как оболочка 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 и Руби. С другой стороны, Rexx изначально создавался как язык управления заданиями, но широко используется как язык расширения, а также как язык общего назначения. Perl - это язык общего назначения, но имел диалект Oraperl (1990), состоящий из двоичного файла Perl 4 со скомпилированным Oracle Call Interface. Однако с тех пор он был заменен библиотека (модуль Perl), DBD :: Oracle.
Другие сложные и ориентированные на задачи приложения могут включать и предоставлять доступ к встроенному языку программирования, чтобы предоставить своим пользователям больший контроль и предоставить им больше функций, чем может быть доступно через пользовательский интерфейс, каким бы сложным он ни был. Например, Autodesk Maya инструменты 3D-авторинга включают Maya Embedded Language или Blender, который использует Python для выполнения этой роли.
Некоторые другие типы приложений, которым требуется более быстрое добавление функций или циклы настройки и запуска (например, игровые движки ), также используют встроенный язык. Во время разработки это позволяет им быстрее создавать прототипы функций и более свободно настраивать их, без необходимости для пользователя иметь глубокие знания о внутренней работе приложения или перестраивать его после каждой настройки (что может занять значительное время).. Языки сценариев, используемые для этой цели, варьируются от более распространенных и более известных Lua и Python до менее известных, таких как AngelScript и Squirrel.
Ch - это еще один вариант сценариев, совместимый с C, для встраивания в прикладные программы C / C ++ в отрасли.
Викискладе есть носители, относящиеся к языкам сценариев. |