Язык сценариев
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( Август 2024 г. ) |
В вычислительной технике сценарий представляет собой относительно короткий и простой набор инструкций, которые обычно автоматизируют ручной процесс. Процесс написания сценария называется сценарием . Язык сценариев или язык сценариев описывает язык программирования , который используется для написания сценариев. [1]
Первоначально создание сценариев ограничивалось автоматизацией оболочки операционной системы , а языки были относительно простыми. Сегодня сценарии стали более распространенными, и некоторые языки включают в себя современные функции, которые позволяют использовать их не только для приложений создания сценариев, но и для разработки .
Обзор
[ редактировать ]Язык сценариев может быть языком общего назначения или языком предметной области для конкретной среды. При внедрении в приложение его можно назвать языком расширения .
Язык сценариев иногда называют языком программирования очень высокого уровня , если он работает на высоком уровне абстракции, или языком управления , особенно для языков управления заданиями на мэйнфреймах.
Термин «язык сценариев» иногда используется в более широком смысле для обозначения динамических высокого уровня языков программирования в целом. Некоторые из них являются строго интерпретируемыми языками , а другие используют форму компиляции. В этом контексте термин сценарий относится к небольшой программе на таком языке; обычно содержится в одном файле и содержит не более нескольких тысяч строк кода.
Область применения языков сценариев варьируется от малых до больших, от узкоспециализированных языков до языков программирования общего назначения . Язык может начинаться с небольшого и узкоспециализированного языка, а затем превратиться в переносимый язык общего назначения; и наоборот, язык общего назначения может позже развить специальные диалекты, специфичные для предметной области.
Известные языки
[ редактировать ]- AWK для обработки текста, обычно доступен в Unix-подобных операционных системах.
- Bash — интерпретируемый язык для написания сценариев для Unix и Unix-подобных операционных систем.
- JavaScript (позже: ECMAScript ), изначально ограничивавшийся запуском в веб-браузере для динамического изменения веб-страницы; позже преобразован в широко переносимый язык программирования общего назначения.
- Linden Scripting Language , пользовательский язык расширения для написания сценариев Second Life виртуального мира
- Lisp — семейство языков общего назначения и языков расширения для приложений, включая Emacs Lisp для Emacs.
- Lua , язык расширения, используемый многими приложениями.
- Перл , [2] язык обработки текста, который позже превратился в язык общего назначения; также используется в качестве языка расширения для различных приложений
- PowerShell для создания сценариев в Microsoft Windows , macOS и Linux.
- Python , язык общего назначения, а также язык расширения.
- Rexx — язык общего назначения, работающий на многих платформах; также используется как язык расширения
- Ruby — многопарадигмальный язык общего назначения.
- sed для обработки текста; доступен в большинстве Unix-подобных операционных систем и портирован на другие операционные системы.
- ТКЛ , [3] для Unix-подобных сред, популярных в 1990-х годах; может использоваться вместе с Tk для разработки приложений с графическим интерфейсом
- TrainzScript, собственный язык расширения для Trainz. железнодорожных симуляторов
- VBScript для написания сценариев для Microsoft Windows.
- Visual Basic для приложений (VBA), язык расширений, разработанный для Microsoft Office. приложений
- 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]
- Быстрая разработка приложения решения, которое в конечном итоге реализуется на другом, обычно компилируемом языке. [ нужна ссылка ]
Примеры языка клея:
- AppleScript
- КолдФьюжн
- ДКЛ
- Встраиваемый Common Lisp
- ОКУ
- Эрланг
- ИСПОЛНИТЕЛЬ , ИСПОЛНИТЕЛЬ2
- JCL
- Кофескрипт
- Юлия
- JavaScript , JScript
- Два
- м4
- Перл (5 и Раку )
- PHP
- PowerShell
- Чистый
- Питон
- Ребол
- Красный
- Рекс
- НетРекс
- Руби
- Схема
- Ткл
- Unix Скрипты Shell ( ksh , csh , bash , sh и другие)
- VBScript
- Язык рабочего процесса
- XSLT
Языки макросов , доступные компонентам операционной системы или приложений, могут служить связующими языками. К ним относятся 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++.
См. также
[ редактировать ]- Язык описания архитектуры
- Авторский язык
- Автоматизация сборки [18]
- Конфигурационный файл
- Директива интерпретатора , Шебанг (Unix)
- Язык шаблонов
Ссылки
[ редактировать ]- ^ «Спецификация языка ECMAScript 2019» . Экма Интернешнл . Проверено 2 апреля 2018 г.
- ^ Шеппард, Дуг (16 октября 2000 г.). «Введение в Perl для начинающих» . Perl.com . Проверено 8 января 2011 г.
- ^ Уолл, Ларри (12 декабря 2007 г.). «Программирование — это сложно, давайте начнем писать сценарии…» Perl.com . Архивировано из оригинала 8 декабря 2023 года.
- ^ Браун, Вики; Морен, Рич (1999). «Скриптовые языки» . МакТех . Проверено 22 июля 2009 г.
- ^ Луи, Рональд. «Похвала скриптов: настоящий прагматизм программирования» . IEEE-компьютер. Архивировано из оригинала 23 сентября 2015 г. Проверено 27 августа 2013 г.
- ^ Корпорация IBM (март 1967 г.). Язык управления заданиями операционной системы IBM System/360 (C28-6529-4) (PDF) . Архивировано (PDF) из оригинала 25 мая 2023 г. - через битсейверы.
- ^ Мурс, Кальвин (1965). «TRAC, язык описания процедур для реактивной пишущей машинки» . Фонд ПРОФ . Архивировано из оригинала 25 апреля 2001 г. Проверено 9 марта 2012 г.
- ^ Ван Флек, Томас (ред.). «Глоссарий Multitics – A — (активная функция)» . Мультикс . Проверено 9 марта 2012 г.
- ^ Вариан, Мелинда (апрель 1991 г.). «VM и сообщество VM: прошлое, настоящее и будущее» (PDF) . Архивировано из оригинала (PDF) 6 октября 2011 года . Проверено 9 марта 2012 г.
- ^ Ван Флек, Томас (ред.). «Глоссарий Multitics – R – (RUNCOM)» . Проверено 9 марта 2012 г.
- ^ «Что такое клей-код (язык клеевого кода)? — Определение с сайта WhatIs.com» . WhatIs.com . Проверено 31 января 2022 г.
- ^ Ларсон, Куинси (10 января 2020 г.). «Интерпретируемые и компилируемые языки программирования» . Лагерь бесплатного кода . Проверено 23 февраля 2022 г.
- ^ Балкис, Антон. «Сценарий есть» . Советы короля . Проверено 23 февраля 2022 г.
- ^ Аксельссон, Матс. «Шелл-скрипты — что можно изменить» . Подсказка по Linux . Проверено 23 февраля 2022 г.
- ^ «Основы управления заданиями (Справочное руководство Bash)» . ГНУ . Проверено 20 мая 2022 г.
- ^ « Oraperl — [УСТАРЕЛО Perl-доступа к базам данных Oracle для старых скриптов oraperl]», Metacpan.
- ^ « Perl », Часто задаваемые вопросы по Underground Oracle .
- ^ ван Россум, Гвидо (6–8 января 1998 г.). «Склейте все это вместе с помощью Python» . python.org. Архивировано из оригинала 19 января 2024 года.
Дальнейшее чтение
[ редактировать ]- Бэррон, Дэвид Уильям (2001). Мир скриптовых языков . Уайли. ISBN 0-471-99886-9 .
Внешние ссылки
[ редактировать ]- Шаблоны для скриптовых приложений на Wayback Machine (архивировано 10 октября 2004 г.)