Разное

Что такое сценарий в программировании: что это такое, сценарные языки в программировании

Содержание

Сценарий (программирование) Википедия

Запрос «Сценарий (программирование)» перенаправляется сюда; см. также другие значения.

Сценарный язык (язык сценариев, жарг. скриптовый язык; англ. scripting language) — высокоуровневый язык сценариев (англ. script) — кратких описаний действий, выполняемых системой. Разница между программами и сценариями довольно размыта. Сценарий — это программа, имеющая дело с готовыми программными компонентами[1].

Согласно Джону Устерхауту, автору языка Tcl, высокоуровневые языки можно разделить на языки системного программирования (англ. system programming languages) и сценарные языки (англ. scripting languages). Последние он также назвал склеивающими языками (англ. glue languages) или языками системной интеграции (англ. system integration languages). Сценарии обычно интерпретируются, а не компилируются[2], хотя сценарные языки программирования один за другим обзаводятся JIT-компиляторами[3][4][5].

В более узком смысле под скриптовым языком может пониматься специализированный язык для расширения возможностей командной оболочки или текстового редактора и средств администрирования операционных систем[6].

Классификация

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

В плане быстродействия скриптовые языки можно разделить на языки динамического разбора (sh, COMMAND.COM) и предварительно компилируемые (Perl). Языки динамического разбора считывают инструкции из файла программы минимально требующимися блоками, и исполняют эти блоки, не читая дальнейший код. Предкомпилируемые языки транслируют всю программу в байт-код и затем исполняют его. Некоторые скриптовые языки имеют возможность компиляции программы «на лету» в машинный код (т. н. JIT-компиляция).

По применению языки можно грубо разделить на три типа[7]:

  • командно-сценарные;
  • прикладные сценарные;
  • универсальные сценарные.

Командно-сценарные языки

Появились ещё в 1960-х годах для управления заданиями в операционных системах. Из языков того времени наиболее известен JCL для OS/360. В этот класс входят языки пакетной обработки (англ. batch language) и языки командных оболочек, например sh, csh для Unix. Эти языки чаще всего используются в пакетном режиме обработки[7].

Например, язык AppleScript операционной системы MacOS имеет редактор Script Editor, который позволяет записывать действия по мере их выполнения пользователем в системе в файл сценария (текстовый файл) и оформлять в виде исполняемой программы. Такой подход позволяет составлять простейшие сценарии непрограммирующим пользователем[8].

Встроенные (прикладные сценарные) языки

Сценарные языки этого типа начали появляться в 1980-е годы, когда на промышленных персональных компьютерах стало возможным интерактивное общение с ОС. В клиент-серверной архитектуре такие языки работали в клиентской части программного обеспечения[7].

Языки общего назначения

Этот тип сценарных языков наиболее известен (особенно в применении к веб-программированию). Языки этого типа стали возникать с 1990-х годов[7].

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

Критика

Создатель Java Джеймс Гослинг отвёл динамическим языкам программирования (упомянув PHP и Ruby) роль сценарных языков, генерирующих веб-страницы, но непригодных для применения в более широкой нише приложений из-за проблем с масштабируемостью и производительностью[9]. Приверженцы динамических языков не оставили критику без ответа по всем пунктам, в частности о его старании представить современные динамические языки всего лишь «сценарными»[10].

Плагины и скрипты

Для написания пользовательских расширений могут использоваться как скрипты (в терминологии некоторых программ «макросы»), так и плагины (независимые модули, написанные на компилируемых языках; в некоторых программах они могут называться «утилитами», «экспортёрами», «драйверами»).

Скриптовый язык удобен в следующих случаях:

  • Если нужно обеспечить программируемость без риска дестабилизировать систему. Так как, в отличие от плагинов, скрипты интерпретируются, а не компилируются, неправильно написанный скрипт выведет диагностическое сообщение, а не приведёт к системному краху. Контрпримером могут служить, например, JVM и CLR, причём если первая была разработана из соображений переносимости кода (безопасность — побочный эффект), то вторая — именно из соображений безопасности.
  • Если важен выразительный код.
    • Во-первых, чем сложнее система, тем больше кода приходится писать «потому, что это нужно». Скрипт может перенести часть подобного шаблонного кода (инициализация, уничтожение, межпоточная синхронизация и т.д.) в среду исполнения скриптов.
    • Во-вторых, в скриптовом языке может быть совсем другая концепция программирования, чем в основной программе — например, игра может быть монолитным однопоточным приложением, в то время как управляющие персонажами скрипты выполняются параллельно или как сопрограммы. Такой подход хорош с точки зрения масштабируемости системы (сценарии не зависят от реализации процедур, пишутся гораздо быстрее и легче отлаживаются), но не очень хорош с точки зрения качества кода, поскольку неизбежно приводит к его дублированию.
      • Гораздо более рациональным подходом является создание файлов ресурсов (как вариант, xml-файлов, структур, баз данных), описывающих поведение «по существу» (в декларативном стиле), как это делается с другими свойствами внутриигровых объектов (текстуры, модели, эффекты, звуки).
    • В-третьих, скриптовый язык имеет собственный проблемно-ориентированный набор команд, и одна строка скрипта может делать то же, что несколько десятков строк на традиционном языке. Однако стоит заметить, что бо́льшая выразительность кода на сценарных языках является следствием их ограниченности и/или новизны и сравнивать C (1970-е) и PHP (1990-е) и/или Fortran (1950-е) и Python (1990-е) неуместно.
  • Скрипты известны низким порогом вхождения, на скриптовом языке может писать даже низкоквалифицированный программист. Это одновременно и плюс, и минус. С одной стороны, это позволяет нанимать дешёвую рабочую силу (освобождать специалистов от рутинной работы и повышать скорость разработки экстенсивно), а с другой критически снижает производительность и надёжность (из-за ориентированности обучения таким языкам на решение конкретных задач, а не на понимание сущности производимых действий).
    • Проблема высокого порога вхождения возникает, в основном, в языках с избыточным синтаксисом (C++, C#) и может быть полностью решена лишь отказом от них в пользу более удачных (что, разумеется, далеко не всегда возможно). В этом случае скрипты выполняют роль паллиатива. Собственно, они и возникли когда масштабируемость Си-подобных языков стала недостаточной для повседневной работы и порог вхождения новичков в отрасль резко возрос.
    • Проблема большого количества рутины, вообще говоря, неразрешима, но в большинстве случаев может быть сглажена более надёжными дополнительными средствами, например, автоматической кодогенерацией.
  • Если требуется кроссплатформенность. Например, JavaScript — его исполняют браузеры под самыми разными ОС.
    • Проблема с кроссплатформенностью напрямую вытекает из стандарта языка: стандарт Си, например, указывает «sizeOf (short) <= sizeOf (int) <= sizeOf (long)», но не указывает какую именно разрядность они должны иметь (эту проблему решают прикладные библиотеки, например, Glib). Современные не-сценарные языки (Java, C#, Haskell) этой проблемы полностью лишены именно по причине хорошей стандартизации.
  • Скриптовые языки применяются для написания программ, не требующих оптимальности и быстроты исполнения. Из-за простоты на них часто пишутся небольшие одноразовые («проблемные») программы.
    • Многие скриптовые языки общего назначения работают достаточно медленно, поэтому их часто используют только в сочетании со сторонними библиотеками (например, NumPy в сочетании с Python).
      • Это не очень хороший пример, поскольку NumPy основывается на старой фортрановской библиотеке MATHLAB, код которой, хоть и проверен временем, начинает неизбежно «гнить» — писался он под крайне примитивные однопоточные компьютеры с другими узкими местами (и хотя это компенсируется оптимизирующими компиляторами и распараллеливанием на уровне ОС, производительность постепенно снижается).
    • Более правильный пример: язык Lua является классическим встраиваемым языком сценариев общего назначения, для его работы достаточно минимальной реализации Си (везде, где есть Си, может работать и Lua).
    • Также скриптовые языки хороши для визуализации данных: создания сложных графиков и презентаций, а также простых программ (например, Python используется в графических оболочках Gnome и Cinnamon для создания апплетов и небольших настроечных утилит).

У плагинов также есть важные преимущества.

  • Готовые программы, оттранслированные в машинный код, выполняются значительно быстрее скриптов, которые интерпретируются из исходного кода динамически при каждом исполнении. Большинство программ переносимы на уровне исходного кода и могут быть выполнены интерпретатором соответствующего языка подобно скриптам. Использование же байт-кода (Java, C#, LLVM) позволяет хранить, переносить и исполнять программы более эффективным образом, нежели скрипты.
    • JIT-компиляция также позволяет оптимизировать общий код под конкретную платформу (в перспективе, под конкретное семейство процессоров и имеющееся оборудование).
  • Полный доступ к любому аппаратному обеспечению или ресурсу ОС (в скриптовом языке для этого должен существовать специальный API, написанный на компилируемом языке). Плагины, работающие с аппаратным обеспечением, традиционно называют драйверами.
  • Если предполагается интенсивный обмен данными между основной программой и пользовательским расширением, для плагина его обеспечить проще.
  • Для компилируемых языков программирования характерно использование сильной статической системы типов, которая позволяет эффективно отлавливать ошибки и лучше оптимизировать код. Использование же в современных скриптах динамической типизации обусловлено скорее техническими особенностями реализации и историческими причинами. Также у статически типизированных языков есть потенциал для роста, а именно, переход с традиционной мономорфной типизации на полиморфную. Расширения мономорфизма в современных Си-подобных языках (перегрузка, ad-hoc-полиморфизм) и полиморфизм подтипов, а также параметрический полиморфизм и классы типов в экспериментальных языках (например, Haskell) сценарным языкам недоступен (статическая типизация во время исполнения скрипта приведёт к существенной потере производительности).

Примечания

  1. ↑ Сузи Р. Сценарные языки: Python. «Мир ПК», 9, 2001
  2. ↑ Ousterhout, 1998.
  3. ↑ LuaJIT
  4. ↑ PyPy
  5. ↑ Joab Jackson (IDG News Service), Facebook releases a PHP just-in-time compiler
  6. ↑ Денисов Ю. А., Программирование для гуманитариев, 12. Лекция: Представление грамматик, интуит.ру
  7. 1 2 3 4 5 6 7 Богатырев, 2001.
  8. ↑ Трофимов, Трофимова, 1997.
  9. ↑ James Gosling: «Java Is Under No Serious Threat From PHP, Ruby or C#»
  10. ↑ Ryan Tomayko, Gosling Didn’t Get The Memo

Литература

Ссылки

Язык сценариев: что это такое

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

Скрипты используют для раскрутки сайта в следующих целях:

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

Преимущества

Для создания пользовательских расширений язык сценариев удобен в ряде случаев:

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

Классификация

В зависимости от быстродействия различают языки сценариев предварительно компилируемые (например, широко используемый для создания и продвижения сайтов Perl) и динамического разбора (command.com, sh). Первые транслируют программу в байт-код, который затем исполняют. Языки динамического разбора считывают инструкции из файла программы минимально необходимыми блоками, которые исполняют, не читая, дальнейший код.

Выделяют следующие типы скриптовых языков:

  • универсальные: Forth, AngelScript, Perl, PHP, Python, Tcl (Tool command language), Squirrel, REBOL, Ruby, AutoIt, Lua;
  • встроенные в прикладные программы: VBA, UnrealScript, AutoLISP, Emacs Lisp, Game Maker Language, MQL4 script, ERM;
  • командные оболочки: sh, AppleScript, bash, csh, ksh, JCL, cmd.exe, command.com, REXX, Visual Basic Script;
  • встраиваемые: Guile, Script.NET, ActionScript, Lingo (используется в редакторе Director), Sleep, браузерные Jscript и JavaScript.

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

К скриптам также относят многие консольные утилиты, которые поддерживают выполнение записанной в файл последовательности команд.

Теги термина


Голосов 6, рейтинг 4.33

Скриптовые языки программирования: задачи, особенности и преимущества

В 1950 году появился первый язык программирования — ассемблер. ЭВМ тогда были еще несмышлеными детьми по сравнению с современными ПК. Согласно законам дарвинизма машины росли, набирались ума и производительности. Вместе с ними эволюционировали и языки программирования. Из низкоуровневых они превратились в высокоуровневые, объектно-ориентированные. Сейчас мы имеем сценарные, или скриптовые языки.

Что собой представляют языки сценариев

Высокоуровневые языки программирования для написания последовательности операций, или сценариев называются скриптовыми, сценарными или интерпретируемыми языками. К ним относятся:

  • JavaScript;
  • ActionScript;
  • Perl;
  • Python;
  • Scala;
  • R;
  • Ruby;
  • PHP.

Программные языки, например C#, C или Pascal используют для создания алгоритмов, процедур, новых данных. Скриптовые предназначены для соединения уже существующих инструментов. За счет этого минимизируется количество кода.

Для того чтобы написать простейшую программу Hello, World! на ассемблер требуется 14 строк кода. C++ заставит написать 8. Почти в два раза меньше, но все равно долго. Придется подключить заголовочный файл, библиотеки, указать функцию, а потом еще и компилировать. То же самое на Python помещается в одну фразу — print Hello, World!. Одинаковый результат за меньшие усилия, при этом никаких компиляторов.

Скорость обработки

С появлением скриптовых языков, в сообществах кодеров часто звучат предположения о скорой кончине C++. Все больше недовольных ропщут на трудный синтаксис и сложность компиляции. Защитники процедурного программирования утверждают, что коду на Python далеко по скорости до C. А Perl – язык для детей, непригодный для «настоящего» программирования. Но это миф.

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

Кому и для каких целей нужны языки сценариев

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

Классическое ООП безмерно гордится наследованием реализации кода. Это главный аргумент мирового господства ООП в будущем, но и существенный недостаток. При повторном использовании части кода или отельного подкласса, нельзя отделаться от влияния и методов его суперкласса. Зато это возможно с JavaScript. Скриптовые языки обеспечивают безболезненное повторное использование, посредством встраивания отдельных компонентов в общий код.

JavaScript

Согласно барометру популярности JavaScript стоит на первом месте. Используется для веб-программирования, создания клиентских приложений и интерактивной работы. Интерпретаторы JS встроены в каждый уважающий себя браузер, а с появлением Node, JavaScript стал использоваться для программирования серверов.

На сегодняшний день JavaScript – скриптовый язык, который используется на каждом сайте. Так как работает он прямо в браузере, не нужно загружать дополнительное ПО, достаточно текстового редактора. Это гибкий язык с простым синтаксисом, поэтому его часто рекомендуют для начинающих кодеров.

Python

Популярность этого языка неумолимо набирает обороты. Python – это высокоуровневый серверный скриптовый язык для веб-сайтов и мобильных приложений. Обладает компактным синтаксисом, его удобно читать и легко с ним работать. Скептики утверждают, что пригоден Python только для работы с web, а создавался он в целях оживить статичный HTML. Но это не так.

На Python пишут не только плагины и модули. Его применяют в гейм-разработке. Игры Frets On Fire, MMORPG EVE и Online Sims 4 (продано 1 миллион экземпляров) были созданы на Python. Его используют Instagram, Pinterest, Rdio, Google, Yahoo и даже НАСА. У Python низкий порог вхождения, он быстро усваивается и запоминается. Выучить его можно абсолютно бесплатно на интерактивных площадках Codecademy, сервисах Udacity и Coursera.

PHP

Серверный язык сценариев, предназначенный для динамических веб-сайтов и разработки приложений. Может быть непосредственно встроен в исходный HTML-документ, а не во внешний файл. На PHP построено и работает более 200 миллионов веб-сайтов, включая Digg, Facebook и платформы WordPress, Joomla, Drupal.

На сегодняшний день самыми востребованными скриптовыми языками являются JavaScript, Python, PHP. Постепенно завоевывают любовь программистов Ruby, Scala и R.

  1. Ruby – сценарный язык, созданный в 1995 году Юкихиро Мацумото. До 2004 года о нем никто не слышал, пока не появился фреймворк Ruby on Rails. Сейчас Ruby уверенно догоняет Python.
  2. Увеличивается интерес к Scala. Это функциональный язык, использующийся серверами Foursquare и Twitter. На нем можно писать как веб, так и Android-приложения.
  3. R – инструмент для сбора статистических данных, работы с графикой и мощный скриптовый язык. Представляет собой коллекцию классических скриптовых функций, заимствованных из Лиспа и математики, с набором подпрограмм для анализа.

Выводы

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

Что такое сценарий в программировании?

Никак.

Даже на ассемблере это сделать невозможно. Более того, только на ассемблере или C++ (с помощью встроенного ассемблера) можно написать программу, которая будет менять свой код во время выполнения. Я когда-то так делал, когда писал на ассемблере программу, в которой получились подпрограммы, отличающиеся друг от друга парой тройкой операторов. Сделал одну такую, и перед вызовом её менял коды операторов на требуемые.

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

Но файл программы при этом не меняется.

Дело в том, что пока программа работает, записать что-то в её файл не получается, т.к. он уже открыт. Вирусы меняют коды программ перед их запуском. Т.е., именно они и дают команду на запуск программы.

Но это можно обойти, создав другой файл. Куда будет записано изначально требуемое изменение, и при запуске программы она сначала считает этот файл, а потом уже произведёт требуемые изначально кусочки кода. Но опять опять-таки — в языке программирования требуется поддержка ассемблера.

Но можно сделать и ход конём. Тут есть два способа. Оба предполагают использование вспомогательного файла. Данных или скрипта. Простой и сложный способы:

  1. Простой. Изменения по условиям. Создаётся другой файл, в который записываются определённые условия (или данные), на основании которых написанная программа, скрипт, будут работать определённым способом. И те условия можно будет каждый раз изменять. Сама программа или скрипт при этом останутся неизменными.
  2. Сложный. Для программ — тут надо точно знать, где и что менять в файле с двоичным кодом программы. Изменение скрипта попроще, ибо он в текстовом виде хранится. Тут надо другой скрипт, который нужно будет запускать перед завершением основного с передачей вспомогательному параметров о требуемых изменений первого. После завершения первого второй на основе переданных ему параметров произведёт изменения текста основного скрипта.

Толстый учебник по MaxScript: http://books.google.ru/books/about/3ds_Max_MAXScript_Essentials.html?id=XyK7WLYA­9qAC&redir_esc=y (на английском).

Тут тоже все описано: http://www.kxcad.net/autodesk/Autodesk_MAXScript_Reference_9/ (как «создавать функции» и т.п. точно).

И тут тоже: http://wiki.cgsociety.org/index.php/MAXScript

Но не так глобально он отличается от других языков программирования. Я думаю, не стоит лезть в какой-то язык, ниразу не подходящий для обучения и пытаться писать на нем первые программы. Возьми любой другой язык с нормальным отладчиком и учебниками. Набей шишек и вернись к MaxScript.

Это языки семейства си-подобных. Изначально был создан язык Си, более его развитая форма C++, этот язык уже основан на ООП (объектно-ориентированном программировании). Самая свежая и наиболее мощная версия язык C# (произносится Си Шарп), этот язык напоминает немного Java, он тоже основан на классах и они как бы конкуренты. Это, если говорить простым и понятным языком

У вас приведён фрагмент HTML-кода, а обработку загруженных файлов производит PHP. Необходимо проверить, разрешена ли в принципе загрузка файлов в вашем интерпретаторе PHP (переменная file_uploads). Также нужно убедиться, что папка, в которую предварительно загружаются файлы (переменная upload_tmp_dir) доступна для записи пользователю, от имени которого запущен Web-сервер или PHP. Кроме того, права на запись у пользователя PHP должны быть также и для папки /img/mesbox в корневом каталоге вашего сайта.

Быстро просмотреть все настройки PHP можно с помощью вот такого php-файла:

Сохраните этот код в PHP-файл в корневом каталоге сайта и откройте через браузер.

Но правильней будет заглянуть в логи PHP, если вы их, конечно, включили (настраивается в php.ini) — там наверняка найдётся подробная информация об ошибке при загрузке файла. Если у вас нет доступа к настройкам PHP — обратитесь к вашему системному администратору.

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

Сценарный язык — Википедия

Материал из Википедии — свободной энциклопедии

Запрос «Сценарий (программирование)» перенаправляется сюда; см. также другие значения.

Сценарный язык (язык сценариев, жарг. скриптовый язык; англ. scripting language) — высокоуровневый язык сценариев (англ. script) — кратких описаний действий, выполняемых системой. Разница между программами и сценариями довольно размыта. Сценарий — это программа, имеющая дело с готовыми программными компонентами[1].

Согласно Джону Устерхауту, автору языка Tcl, высокоуровневые языки можно разделить на языки системного программирования (англ. system programming languages) и сценарные языки (англ. scripting languages). Последние он также назвал склеивающими языками (англ. glue languages) или языками системной интеграции (англ. system integration languages). Сценарии обычно интерпретируются, а не компилируются[2], хотя сценарные языки программирования один за другим обзаводятся JIT-компиляторами[3][4][5].

В более узком смысле под скриптовым языком может пониматься специализированный язык для расширения возможностей командной оболочки или текстового редактора и средств администрирования операционных систем[6].

Классификация

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

В плане быстродействия скриптовые языки можно разделить на языки динамического разбора (sh, COMMAND.COM) и предварительно компилируемые (Perl). Языки динамического разбора считывают инструкции из файла программы минимально требующимися блоками, и исполняют эти блоки, не читая дальнейший код. Предкомпилируемые языки транслируют всю программу в байт-код и затем исполняют его. Некоторые скриптовые языки имеют возможность компиляции программы «на лету» в машинный код (т. н. JIT-компиляция).

По применению языки можно грубо разделить на три типа[7]:

  • командно-сценарные;
  • прикладные сценарные;
  • универсальные сценарные.

Командно-сценарные языки

Появились ещё в 1960-х годах для управления заданиями в операционных системах. Из языков того времени наиболее известен JCL для OS/360. В этот класс входят языки пакетной обработки (англ. batch language) и языки командных оболочек, например sh, csh для Unix. Эти языки чаще всего используются в пакетном режиме обработки[7].

Например, язык AppleScript операционной системы MacOS имеет редактор Script Editor, который позволяет записывать действия по мере их выполнения пользователем в системе в файл сценария (текстовый файл) и оформлять в виде исполняемой программы. Такой подход позволяет составлять простейшие сценарии непрограммирующим пользователем[8].

Встроенные (прикладные сценарные) языки

Сценарные языки этого типа начали появляться в 1980-е годы, когда на промышленных персональных компьютерах стало возможным интерактивное общение с ОС. В клиент-серверной архитектуре такие языки работали в клиентской части программного обеспечения[7].

Языки общего назначения

Этот тип сценарных языков наиболее известен (особенно в применении к веб-программированию). Языки этого типа стали возникать с 1990-х годов[7].

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

Критика

Создатель Java Джеймс Гослинг отвёл динамическим языкам программирования (упомянув PHP и Ruby) роль сценарных языков, генерирующих веб-страницы, но непригодных для применения в более широкой нише приложений из-за проблем с масштабируемостью и производительностью[9]. Приверженцы динамических языков не оставили критику без ответа по всем пунктам, в частности о его старании представить современные динамические языки всего лишь «сценарными»[10].

Плагины и скрипты

Для написания пользовательских расширений могут использоваться как скрипты (в терминологии некоторых программ «макросы»), так и плагины (независимые модули, написанные на компилируемых языках; в некоторых программах они могут называться «утилитами», «экспортёрами», «драйверами»).

Скриптовый язык удобен в следующих случаях:

  1. Если нужно обеспечить программируемость без риска дестабилизировать систему. Так как, в отличие от плагинов, скрипты интерпретируются, а не компилируются, неправильно написанный скрипт выведет диагностическое сообщение, а не приведёт к системному краху;
  2. Если важен выразительный код. Во-первых, чем сложнее система, тем больше кода приходится писать «потому, что это нужно». Во-вторых, в скриптовом языке может быть совсем другая концепция программирования, чем в основной программе — например, игра может быть монолитным однопоточным приложением, в то время как управляющие персонажами скрипты выполняются параллельно или как сопрограммы. В-третьих, скриптовый язык имеет собственный проблемно-ориентированный набор команд, и одна строка скрипта может делать то же, что несколько десятков строк на традиционном языке.
  3. Скрипты известны низким порогом вхождения. На скриптовом языке может писать даже низкоквалифицированный программист.
  4. Если требуется кроссплатформенность. Например, JavaScript — его исполняют браузеры под самыми разными ОС.
  5. Скриптовые языки не применяются для написания программ, требующих оптимальности и быстроты исполнения. Но из-за простоты на них часто пишутся небольшие одноразовые («проблемные») программы. Многие скриптовые языки общего назначения работают достаточно медленно, поэтому их часто используют только в сочетании со сторонними библиотеками (например, NumPy в сочетании с Python).

У плагинов также есть важные преимущества.

  1. Готовые программы, оттранслированные в машинный код, выполняются значительно быстрее скриптов, которые интерпретируются из исходного кода динамически при каждом исполнении. Большинство программ переносимы на уровне исходного кода и могут быть выполнены интерпретатором соответствующего языка подобно скриптам. Использование же байт-кода (Java, C#, llwm) позволяет хранить, переносить и исполнять программы более эффективным образом, нежели скрипты.
  2. Полный доступ к любому аппаратному обеспечению или ресурсу ОС (в скриптовом языке для этого должен существовать специальный API, написанный на компилируемом языке). Плагины, работающие с аппаратным обеспечением, традиционно называют драйверами.
  3. Если предполагается интенсивный обмен данными между основной программой и пользовательским расширением, для плагина его обеспечить проще.
  4. Если языки программирования созданы в разное время и для разных целей, их сравнение по выразительной силе некорректно. Совершенно естественно, что, например, алголоподобные языки (создавались в 60-х и 70-х) будут менее выразительны, чем современные скриптовые языки общего назначения. В сравнении же с «ровесниками» скрипты выглядят уже гораздо менее выгодно.
  5. Для компилируемых языков программирования характерно использование сильной статической системы типов, которая позволяет эффективно отлавливать ошибки. Использование же в современных скриптах динамической типизации обусловлено скорее техническими особенностями реализации.

Примечания

  1. ↑ Сузи Р. Сценарные языки: Python. «Мир ПК», 9, 2001
  2. ↑ Ousterhout, 1998.
  3. ↑ LuaJIT
  4. ↑ PyPy
  5. ↑ Joab Jackson (IDG News Service), Facebook releases a PHP just-in-time compiler
  6. ↑ Денисов Ю. А., Программирование для гуманитариев, 12. Лекция: Представление грамматик, интуит.ру
  7. 1 2 3 4 5 6 7 Богатырев, 2001.
  8. ↑ Трофимов, Трофимова, 1997.
  9. ↑ James Gosling: «Java Is Under No Serious Threat From PHP, Ruby or C#»
  10. ↑ Ryan Tomayko, Gosling Didn’t Get The Memo

Литература

Ссылки

Язык сценариев — это… Что такое Язык сценариев?



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

Скри́птовый язы́к (англ. scripting language, в русскоязычной литературе принято название язык сценариев) — язык программирования, разработанный для записи «сценариев», последовательностей операций, которые пользователь может выполнять на компьютере. Простые скриптовые языки раньше часто называли языками пакетной обработки (batch languages или job control languages). Сценарии обычно интерпретируются, а не компилируются (хотя часто сценарии

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

Плагины или скрипты?

Для написания пользовательских расширений могут использоваться как скрипты (в терминологии некоторых программ «макросы»), так и плагины (независимые модули, написанные на компилируемых языках; в некоторых программах они могут называться «утилитами», «экспортёрами», «драйверами»). Скриптовый язык предпочтительнее в таких случаях:

  1. Если нужно обеспечить программируемость без риска дестабилизировать систему. Так как, в отличие от плагинов, скрипты интерпретируются, а не компилируются, неправильно написанный скрипт выведет диагностическое сообщение, а не приведёт систему к краху;
  2. Если важен выразительный код. Во-первых, чем сложнее система, тем больше кода приходится писать «потому, что это нужно» — см., например, Hello World#Маргинальные примеры. Во-вторых, в скриптовом языке может быть совсем другая концепция программирования, чем в основной программе — например, игра может быть монолитным однопоточным приложением, в то время как управляющие персонажами скрипты выполняются параллельно. В-третьих, скриптовый язык имеет собственный проблемно-ориентированный набор команд, и одна строка скрипта может делать то же, что несколько десятков строк на традиционном языке. Как следствие, на скриптовом языке может писать программист очень низкой квалификации — например, геймдизайнер своими руками, не полагаясь на программистов, может корректировать правила игры;
  3. Если требуется кроссплатформенность. Хорошим примером является

У плагинов же есть три важных преимущества.

  1. Готовые программы, оттранслированные в машинный код, выполняются значительно быстрее скриптов, которые интерпретируются из исходного кода динамически при каждом исполнении. Поэтому скриптовые языки не применяются для написания программ, требующих оптимальности и быстроты исполнения. Но из-за простоты они часто применяются для написания небольших, одноразовых («проблемных») программ.
  2. Полный доступ к любому аппаратному обеспечению или ресурсу ОС (в скриптовом языке для этого должен существовать написанный на машинном коде API). Плагины, работающие с аппаратным обеспечением, традиционно называют драйверами.
  3. Если предполагается интенсивный обмен данными между основной программой и пользовательским расширением, для плагина его обеспечить проще.

Также в плане быстродействия скриптовые языки можно разделить на языки динамического разбора (command.com) и предварительно компилируемые (байт-код и затем исполняют его. Некоторые скриптовые языки имеют возможность компиляции программы «на лету» в машинный код (см.

Типы скриптовых языков

Универсальные скриптовые языки

Wikimedia Foundation.
2010.

  • Язык сиу
  • Язык синтетический

Смотреть что такое «Язык сценариев» в других словарях:

  • ЯЗЫК СЦЕНАРИЕВ — См. СКРИПТОВЫЙ ЯЗЫК Словарь бизнес терминов. Академик.ру. 2001 …   Словарь бизнес-терминов

  • язык сценариев — — [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN script language …   Справочник технического переводчика

  • Сценарный язык — Сюда перенаправляется запрос «скрипт». На эту тему нужна отдельная статья. Сценарный язык или скриптовый язык (англ. scripting language, в русской литературе принято название язык сценариев)  высокоуровневый язык программирования для… …   Википедия

  • Скриптовый язык — (англ. scripting language, в русской литературе принято название язык сценариев)  язык программирования, разработанный для записи «сценариев», последовательностей операций, которые пользователь может выполнять на компьютере. Простые… …   Википедия

  • СКРИПТОВЫЙ ЯЗЫК — Язык программирования, разработанный для записи сценариев , последовательностей операций, которые пользователь может выполнять на компьютере (англ. scripting language, в русскоязычной литературе принято название язык сценариев) Словарь бизнес… …   Словарь бизнес-терминов

  • Скрипт-язык — в Интернет интерпретируемый (объектно ориентированный) алгоритмический язык, предназначенный для генерации динамических веб страниц. Различают скрипт языки: исполняемые на стороне клиента: JavaScript и VBScript; и исполняемые на стороне сервера:… …   Финансовый словарь

  • AWL (язык программирования) — AWL (Alternative Web Language) Класс языка: мультипарадигмальный: функциональный, процедурный, объектно ориентированный Тип исполнения: интерпретируемый Появился в: 2005 г. Типизация данных: динамическая …   Википедия

  • Скретч (язык программирования) — У этого термина существуют и другие значения, см. Scratch. Скретч Семантика: событийно ориентированная Класс языка: графический, учебный Тип исполнения …   Википедия

  • JAVASCRIPT — язык сценариев, созданный компанией Netscape. Первоначальное название LiveScript. Включается в документы на HTML, никакого отношения к языку Java не имеет …   Словарь электронного бизнеса

  • Windows PowerShell — Windows PowerShell …   Википедия

Книги

  • Практический курс французского языка. В 2-х ч. Учебник для институтов и факультетов иностранных язык, Потушанская Людмила Львовна, Котова Галина Михайловна, Шкунаева Инна Дмитриевна. Данный учебник предназначен для лиц, продолжающих изучать французский язык. Он имеет коммуникативную направленность. Наряду с текстами описательного характера использованы тексты, содержащие… Подробнее  Купить за 801 грн (только Украина)
  • Язык VRML. Практическое руководство, О. Д. Авраамова. Эта книга посвящена практическому программированию на языке VRML, позволяющем создавать интерактивные трехмерные миры в Интернете. Шаг за шагом, от простого — к более сложному, читатель… Подробнее  Купить за 343 руб
  • Русский язык. 1 класс. Методические рекомендации к учебнику Г. Г. Граник, Т. Ш. Крюковой. ФГОС, Гвинджилия Ольга Витальевна, Иванова Светлана Васильевна. Методические рекомендации адресованы учителю русского языка, работающему по учебно-методическому комплекту под редакцией академика РАО Г. Г. Граник. В книге подробно освещен широкий круг… Подробнее  Купить за 334 руб

Другие книги по запросу «Язык сценариев» >>

Язык сценариев vs язык программирования

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

первоначально были языки программирования, которые были написаны для создания программ, таких как excel, word, браузеры, игры и т. д. Эти программы были построены с такими языками, как c и java. Сверхурочные, эти программы нуждались в способе для пользователей, чтобы создать новую функциональность, поэтому они должны были предоставить интерфейс для их байт-кода и, следовательно родились скриптовые языки.

язык сценариев обычно не компилируется, поэтому может запускаться, как только вы напишете что-то значимое. Следовательно, excel может быть построен с использованием C++, но он предоставляет пользователям язык сценариев VBA для определения функциональности. Аналогично браузеры могут быть построены с C++ / Java, но они предоставляют язык сценариев javascript (никак не связанный с java). Игры, как правило, построены на C++, но предоставляют пользователям язык Lua для определения пользовательских функциональность.

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

хотя языки сценариев могут иметь меньший доступ и медленнее, они могут быть очень мощный инструмент. Одним из факторов, объясняющих успех скриптовых языков, является простота обновления. Вы помните дни Java-апплетов в интернете, это пример запуска языка программирования (java) против запуска языка сценариев (javascript). В то время компьютеры не были такими мощными, а javascript не был таким зрелым, поэтому Java-апплеты доминировали в сценах. Но Java-апплеты были раздражающими, они требовали от пользователя сортировки загрузки и компиляции языка. Перенесемся на сегодня, Java-апплеты почти вымерли, и Javascript доминирует на сцене. Javascript очень быстро загружается, так как большинство компонентов браузера уже установлены.

наконец, языки сценариев также считаются языками программирования (хотя некоторые люди отказываются принимать это) — термин, который мы должны использовать здесь, — это языки сценариев против скомпилированных языков.

Язык сценариев против языка программирования

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

Загрузка…

.

новейших вопросов о языке сценариев — qaru

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

Загрузка…

.

Добавить комментарий

Ваш адрес email не будет опубликован.