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

В статье описываются особенности и приводятся примеры популярных языков сценариев
Ошибка базы данных: Table ‘a111530_forumnew.rlf1_users’ doesn’t exist

Языки сценариев: что это такое и для чего они нужны?

Оригинал: Scripting Languages: What and Why?

Автор: Juliet Kemp

Дата публикации: 14 декабря 2016 г.

Перевод: А.Панин

Дата перевода: 8 января 2017 г.

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

Для чего это нужно?

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

Языки сценариев на сегодняшний день используются чуть ли не повсеместно; но чем они являются на самом деле? По сути, язык сценариев отличается от традиционного языка программирования не функциями, а назначением: он предназначен для создания и последующего исполнения сценариев (или, грубо говоря, автоматизированного исполнения последовательностей команд).

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

Как правило, языки сценариев проектируются с целью достижения максимальной скорости изучения и разработки. Однако, ввиду того, что данные языки являются интерпретируемыми (это утверждение справедливо в большинстве случаев, но имеются и исключения, такие, как язык Ruby, который может быть как интерпретируемым, так и компилируемым в зависимости от реализации), созданные с их использованием сценарии зачастую исполняются медленнее, чем бинарные программы, созданные с использованием компилируемых языков программирования. Постоянно растущая популярность этих языков напрямую связана с постоянным повышением производительности доступного аппаратного обеспечения. Чем быстрее работает компьютер, тем меньшее значение будет иметь разница в скорости между интерпретируемыми и компилируемыми программами; при этом решающее значение будет иметь скорость процесса разработки. Пропуск этапа компиляции значительно упрощает цикл разработки и отлично сочетается с такими современными практиками программирования, как экстремальное программирования. При этом по мере увеличения объема кода и сложности программного обеспечения может появиться смысл в возврате к использованию компилируемого языка программирования.

На сегодняшний день в мире языков сценариев доминируют высокоуровневые динамические языки программирования общего назначения, обычно рассматриваемые как «связующие» языки, объединяющие несколько программных компонентов. Другие языки сценариев, такие, как Sed, Awk или (являющийся более современным) JavaScript являются предметно-ориентированными. JavaScript является встраиваемым языком, который используется исключительно в рамках определенных приложений или наборов приложений. Emacs Lisp является еще одним специфичным для приложения языком сценариев, при этом во многих играх используются собственные реализации языков сценариев или особые диалекты существующих языков сценариев. Наконец, языки для управления задачами и языки командных интерпретаторов, таких, как Bash, являются еще одной формой языков сценариев и обычно используются в качестве «связующих» языков для интерпретаторов и утилит с интерфейсом командной строки.

История развития языков сценариев

Первые мэйнфреймы не поддерживали широкого спектра механизмов (или вообще не поддерживали механизмов) взаимодействия с пользователями; вместо них использовались очереди задач. Для упрощения процесса обработки задач были разработаны различные языки, включая язык Job Control Language, созданный специалистами компании IBM.

В 1960 году на смену языкам обработки задач пришли интерактивные командные оболочки и сценарии, позволяющие автоматизировать запуск программ. Они позволили задействовать дополнительные удобные функции благодаря работе множества программистов. Язык TRAC, созданный Калвином Муерсом, принес идеи подстановки команд в сценариях, а также использования вывода этих команд в рамках этих же сценариев — этот механизм напоминает оператор обратных кавычек в современных командных оболочках.

Стьюарт Мадник из MIT разработал язык сценариев CMS EXEC (в оригинале имевший имя COMMAND) для IBM VM/CMS OS в конце 60-х годов прошлого века. Он поддерживал управляющие выражения различных типов (включая условные инструкции и циклы), а также несколько встроенных функций. Очевидно, что именно с данного момента началось развитие современных языков сценариев.

Множество Мандельброта

Множество Мандельброта определено на плоскости комплексных чисел (представленной, как система координат (x,y)). Для каждого комплексного числа c должна существовать ограниченная последовательность:

zk+1 = zk2 + c

Если для числа c последовательность является ограниченной, это число находится в множестве Мандельброта. Если же последовательность является неограниченной, число c не находится в множестве Мандельброта.

При расчете мы будем осуществлять 50-кратную итерацию в рамках последовательности и в том случае, если значение zk + 1 будет покидать окружность радиусом 2 вокруг значения c, мы будем делать вывод о том, что число c не находится в рассматриваемом множестве.

Наша система координат будет иметь ось x с координатами от -2 до 1 и ось y с координатами от -1 до 1. Мы будем отображать ее с помощью ASCII-символов начиная с верхнего левого угла (с координатами x=-2, y=1), причем вывод результатов будет заключаться в последовательном выводе строк по оси y. Каждый ASCII-символ (пробел или *) будет соответствовать сдвигу на 0.05 по оси координат. Вы сможете самостоятельно заменить жестко заданные значения для того, чтобы оценить полученные в результате изменения или добавить поддержку цветов для того, чтобы визуально усложнить вывод.

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

Множество Мандельброта

Perl

Ларри Уолл выпустил версию 1.0 интерпретатора языка Perl в 1987 году. Его цель заключалась в создании языка сценариев общего назначения для Unix, максимально упрощающего процесс обработки отчетов. Повышение производительности доступного аппаратного обеспечения ознаменовало эпоху, в которой эффективность практик программирования приобрела большую важность по сравнению с производительностью кода, а Ларри Уолл, в свою очередь, не преминул подтвердить данный тезис на практике. Предшественниками языка Perl были языки Awk (представленный в 1977 году) и Unix shell sh (представленный в 1978 году), причем сам этот язык опередил появление ядра Linux (первая версия которого была представлена в 1991 году) на несколько лет. (Обратитесь к странице, расположенной по адресу http://history.perl.org/PerlTimeline.html, если вас интересует шкала времени с указанием различных этапов развития Unix/Linux и выдержками из соответствующих новостных групп.)

Версии 2 (1988 года) и 3 (1989 года) интерпретатора Perl были представлены общественности спустя непродолжительное время. Версия 4 интерпретатора Perl была выпущена лишь для того, чтобы четко увязать ее с каноническим руководством по программированию на языке Perl, изданным под названием «Программирование на Perl» (в оригинале «Programming Perl» или «Camel Book»).

Код версии 5 интерпретатора Perl (1994 года) был частично переписан и позволял использовать ряд новых сущностей, включая объекты и модули. Поддержка этих сущностей, в свою очередь, ознаменовала расцвет ресурса CPAN (Comprehensive Perl Archive Network), являющегося репозиторием компонентов интерпретатора и модулей Perl, в 1995 году. Хотя CPAN и является крайне полезным ресурсом, на нем несложно потеряться; на момент написания статьи на нем было опубликовано 157742 модуля, причем качество этих модулей значительно отличается и в некоторых случаях на нем крайне сложно найти модуль высокого качества для выполнения той или иной задачи. (Проект MetaCPAN и модуль Task::Kensho от Enlightened Perl Organisation были созданы специально для решения описанной проблемы.)

Версия 6 интерпретатора Perl находится в стадии активной разработки и на сегодняшний день рассматривается разработчиками как отдельная реализация языка программирования; обратная совместимость с классическим языком Perl не является их целью, тем не менее, в будущем Perl 6 должен стать «эталонной реализацией языка Perl». Изменения в язык вносятся главным образом с целью упорядочивания его синтаксиса. Разработка данной версии интерпретатора началась в 2000 году и продолжается до сих пор.

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

Совет: несмотря на то, что языки Sed и Awk являются предметно-ориентированными, вы сможете найти и код общего назначения на этих языках, обратившись к веб-сайту Rosetta Code!

Дополнительная информация: неофициальной расшифровкой названия языка Perl является «Practical Extraction and Reporting Language» («практический язык для извлечения данных и составления отчетов»), но Ларри Уолл предпочитает использовать свой шуточный вариант «Pathalogically Eclectic Rubbish Lister» («паталогически эклектичный перечислитель мусора»).

Код на Perl

Интерпретатор Perl поставляется в составе практически всех современных дистрибутивов Linux; если он не установлен в вашей системе, вам придется воспользоваться менеджером пакетов дистрибутива для его установки. А это код программы «Hello World»:

#!/usr/bin/perl -w
print "Hello Worldn";

Последовательность символов #! является последовательностью шебанг, сообщающей системе о том, что остальную часть строки следует считать путем к исполняемому файлу интерпретатора, причем при запуске интерпретатора нужно передать ему путь к открытому файлу сценария. Таким образом, при запуске сценария hello.pl первая его строка сообщает системе о том, что следует исполнить бинарный файл /usr/bin/perl и передать ему путь к файлу сценария hello.pl для интерпретации. Интерпретаторы языков сценариев обычно игнорируют последовательность символов шебанг либо из-за того, что символ # является индикатором строки комментария, либо из-за того, что эта последовательность символов известна интерпретатору и игнорируется им.

Параметр -w позволяет активировать механизм вывода сообщений об ошибках, который является весьма полезным на практике. (Вы также можете добавить в свой сценарий строку use strict; сразу же после первой строки для того, чтобы заранее получать информацию об определенных ошибках времени компиляции и исполнения.) Вы наверняка заметили, что все инструкции языка Perl заканчиваются символом ;. Теперь следует сделать файл сценария исполняемым и запустить его с помощью команды ./hello.pl.

А это гораздо более интересный код, отображающий множество Мандельброта в окне вашего эмулятора терминала:

Как видно из кода, функции/подпрограммы идентифицируются с помощью ключевого слова sub. Параметры передаются в них в виде списков и могут извлекаться по одному путем специальной операции сдвига. При этом параметры не должны каким-либо образом описываться рядом с именами функций. Наша подпрограмма возвращает ненулевое значение в том случае, если значение не входит в множество Мандельброта и нулевое значение в противном случае.

Циклы for используют по три значения: for (начальное_значение; конечное_значение; приращение) {..}. Вы можете как увеличивать, так и уменьшать значение переменной в рамках цикла for, кроме того, никто не запрещает вам использовать вложенные циклы таким же образом, как в примере выше.

Использованный в коде выше оператор ? является сокращенным вариантом условной инструкции it-then-else. В том случае, если функция возвращает истинное логическое значение true (обозначающее, что значение находится за пределами множества), мы выводим символ пробела; в противном случае мы выводим символ звездочки.

Исполнение сценария на языке Perl

Исполнение сценария на языке Perl

Python

Язык Python является чуть ли не ровесником языка Perl; Гвидо ван Россум (великодушный пожизненный диктатор сообщества разработчиков Python) начал работу над реализацией первой версии его интерпретатора под номером 0.9.0 в 1989 году и выпустил ее в 1991 году. На тот момент интерпретатор уже позволял использовать классы и механизм их наследования, а также функции, основные типы данных и модули. В 1994 году наконец была выпущена версия 1.0 данного интерпретатора, поддерживающая функции lambda, map, filter и reduce, хорошо знакомые разработчикам, использующим язык Lisp. Изначально логичный и простой синтаксис языка Python прорабатывался главным образом с целью привлечения к разработке программных продуктов не-программистов; на сегодняшний день он все еще дорабатывается с целью достижения максимальной логичности и простоты синтаксических конструкций, но не-программисты уже не рассматриваются в качестве его целевой аудитории.

Функции языка Python могут свободно расширяться, причем модули могут разрабатываться как с использованием языка Python, так и с использованием языка C; это означает, что коллеги Гвидо ван Россума, привыкшие к языку C, могли начинать работу с новым для них языком Python без дополнительной подготовки. Одна из целей автора языка заключалась в создании своеобразного моста между языком командной оболочки и языком C; другими словами, он создавал второй язык для разработчиков, постоянно использующих языки C и C++, который мог бы применяться в тех случаях, когда использование языка C или C++ нецелесообразно. В основу языка Python были положены идеи, заимствованные из таких языков программирования, как ABC (язык программирования для не-программистов), C, Bash, Lisp, Perl и Java.

В версию интерпретатора 2.0, выпущенную в 2000 году, была добавлена абстракция списков, предназначенная для упрощения методики создания и обработки различных списков и основывающаяся на идее, заимствованной из функциональных языков программирования. Версия интерпретатора 3.0 была выпущена в 2008 году и содержала огромное количество изменений, направленных главным образом на сокращение избыточности, накопленной в процессе разработки предыдущих версий интерпретатора Python (с неизбежным нарушением обратной совместимости). В отличие от подхода разработчиков интерпретатора Perl, у разработчиков версии 3.0 интерпретатора Python был следующий девиз: «Должен существовать один, а еще лучше единственный очевидный способ выполнения конкретной задачи». При этом была сохранена мультипарадигменность, присущая языкам сценариев общего назначения; в результате вы можете использовать язык Python для написания объектно-ориентированного, структурного, функционального кода и так далее. Подобная гибкость хотя и является полезной, но нередко также становится причиной возникновения сложностей при разборе кода других людей особенно начинающими разработчиками.

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

Прекрасное интервью Гвидо ван Россума об истоках языка программирования Python доступно по ссылке www.artima.com/intv/pythonP.html.

Код на языке Python

В вашей системе наверняка также установлен интерпретатор языка Python (если это не так, вам следует воспользоваться менеджером пакетов вашего дистрибутива для его установки). А это код программы «Hello World»:

#!/usr/bin/python
print "Hello World"

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

А это код на языке Python, визуализирующий множество Мандельброта:

Как и в случае языка программирования Perl, мы импортируем библиотеку (в данном случае это библиотека math) для работы с комплексными числами. В Python x + yi является аналогом x + y * 1j.

Функции обозначаются с помощью ключевого слова def. В рамках циклов for используется ключевое слово range. В рамках диапазонов, объявляемых с помощью ключевого слова ranage, должны использоваться целочисленные значения, но, как и в данном случае, при необходимости использования цикла с нецелочисленными значениями, вы можете умножить целочисленное значение из диапазона на нецелочисленное и использовать результат в рамках цикла.

Так как интерпретатор Python автоматически добавляет символ новой строки при использовании функции print, для получения вывода без символов новой строки нам придется использовать метод объекта строки join. Обратите внимание на циклы for в рамках инструкции print/join, а также методику использования условной инструкции if not ... else. В данном случае для сохранения результатов работы функции mandelbrot и объединения их в рамках списка используется абстракция списков.

Исполнение сценария на языке Python

Исполнение сценария на языке Python

JavaScript

Как известно, язык JavaScript был разработан Бренданом Эйхом, работавшим компании Netscape, за 10 дней в 1995 году. В то время компания Netscape предлагала клиентам серверное решение с переносимой версией виртуальной машины Java для исполнения апплетов на стороне сервера и нуждалась в более простом интерпретируемом и доступном для не-программистов языке программирования для взаимодействия с ними. Изначально этот язык носил имя LiveScript и был интегрирован в состав веб-браузера Netscape Navigator в 1995 году, но через некоторое время он был переименован в JavaScript одновременно с добавлением поддержки апплетов Java в этот веб-браузер, что, вероятно, являлось очередным маркетинговым ходом. Это интерпретируемый язык программирования для разработки сценариев, исполняющихся на стороне клиента непосредственно в веб-браузере.

Впоследствии специалисты компании Microsoft осуществили обратный инжениринг JavaScript с целью создания языка JScript, поддержка которого была добавлена в веб-браузер IE3 и веб-сервер IIS в 1996 году. Различия между двумя упомянутыми реализациями языка программирования затрудняли разработку интерактивных веб-сайтов, корректно работающих в обоих веб-браузерах, причем всю вину за это положение вещей начали возлагать именно на JavaScript. По этой причине компания Netscape связалась с организацией по международным стандартам ECMA, в результате чего в 1997 году был опубликован официальный стандарт ECMAScript. Язык JavaScript является лучшей известной реализацией данного стандарта; ActionScript 3 является еще одной его реализацией.

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

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

Однако, по мере роста популярности веб-приложений и в результате создания технологии Ajax (Asynchronous JavaScript and XML: механизм асинхронного взаимодействия с веб-сервером для обновления состояния элементов веб-страницы без ее полной перезагрузки, позволяющий повысить пользовательские качества веб-приложений), репутация JavaScript начала улучшаться, а сам язык стал все чаще использоваться профессионалами. Сегодня язык JavaScript активно используется для создания динамических веб-приложений и веб-страниц — без него практически не обойтись, если необходимо создать современную веб-страницу. Фреймворк Node.js наконец позволил использовать JavaScript не только на стороне клиента, но и на стороне сервера, а API HTML 5 позволяют размещать на страницах множество новых управляющих элементов, улучшая их пользовательские качества — разумеется, не в ущерб безопасности.

Код на языке JavaScript

Вы не сможете инициировать исполнение сценария на языке JavaScript с помощью команды в терминале; для того, чтобы испытать сценарий в работе вам придется открыть с помощью веб-браузера файл hello.html со следующим содержимым:

<!DOCTYPE HTML>
<html>
<head></head>
<body>

<script>
alert("Hello World")
document.write("Hello World")
</script>

</body>
</html>

Это минималистичная HTML-страница, предназначенная исключительно для исполнения сценария, код которого расположен в рамках тэга <script>. Фактически данный сценарий осуществляет двукратный вывод строки «Hello world»: вызов alert позволяет вывести всплывающее предупреждение (с автоматически добавленной кнопкой OK); вызов document.write позволяет вывести упомянутую строку в рамках тела документа HTML. Как и язык Python, язык JavaScript в общем случае не требует наличия символа точки с запятой после каждой инструкции (но позволяет использовать его), причем по поводу того, стоит ли использовать этот символ после каждой из инструкций или все же не стоит, не существует единого устоявшегося мнения. Вы также можете создать отдельный файл сценария с именем file.js и подключить его к HTML-странице:

А это код сценария для работы с множеством Мандельброта:

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

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

Как и в Python, в JavaScript переменные не должны иметь четко указанных типов, но при этом они должны объявляться с помощью ключевого слова var перед использованием (хотя это и не обязательно).

Циклы for работают практически так же, как и в двух описанных выше языках сценариев. Так как в JavaScript нет библиотеки для работы с комплексными числами, нам придется обрабатывать их действительные и мнимые части по отдельности. Инструкция document.write не позволяет выводить символы пробелов, поэтому вместо них в данном сценарии осуществляется вывод символов обратных кавычек.

Если вам хочется использовать все возможности HTML для вывода более привлекательной версии фрактала (не на основе ASCII-символов), вы также можете поискать соотвествующий код на веб-сайте Rosetta Code (rosettacode.org). И, как в случае с языками Perl и Python, существует огромное количество сетевых ресурсов с информацией, необходимой для изучения дополнительных возможностей JavaScript.

Процесс отладки сценариев на языке JavaScript может оказаться достаточно сложным из-за того, что сообщения об ошибках не выводятся в теле отображаемого документа; для отладки подобных сценариев может использоваться как ресурс JSLint (www.jslint.com), так и консоль JavaScript вашего веб-браузера

Процесс отладки сценариев на языке JavaScript может оказаться достаточно сложным из-за того, что сообщения об ошибках не выводятся в теле отображаемого документа; для отладки подобных сценариев может использоваться как ресурс JSLint (www.jslint.com), так и консоль JavaScript вашего веб-браузера

Bash

Bash значительно отличается от Perl, Python и JavaScript, так как является в первую очередь языком для управления задачами и исполнения команд. Но при этом он не перестает быть полноценным языком, который, тем не менее, не очень-то подходит для написания более чем одной-двух страниц кода.

Командная оболочка Bourne shell или sh была выпущена в 1977 году в составе UNIX Version 7 в качестве стандартного интерпретатора команд с поддержкой языка сценариев. Впоследствии она стала стандартной командной оболочкой UNIX и использовалась для выполнения широкого спектра задач, связанных с обслуживанием системы.

Проекту GNU, в рамках которого была начата разработка полностью свободного набора системного программного обеспечения, требовалась свободная полнофункциональная замена командной оболочки sh. В результате в 1989 году Брайн Фокс при финансовой поддержке Фонда Свободного Программного Обеспечения выпустил бета-версию командной оболочки Bash (Bourne-again shell). С того времени она стала стандартной командной оболочкой Linux (при этом такие командные оболочки, как tcsh и zsh также пользуются популярностью). Для того, чтобы узнать название используемой в данной момент командной оболочки вы можете просто выполнить команду echo $SHELL. Если в вашей системе используется какая-либо из альтернативных командных оболочек, вам будет достаточно выполнить команду /bin/bash для того, чтобы воспользоваться Bash.

Bash может исполнять отдельные инструкции, вводимые пользователем:

$ echo "Hello World"

Кроме того, она может исполнять файлы сценариев:

#!/bin/bash
echo "Hello World"

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

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

И это еще не все…

Преимущество языков сценариев заключается в высокой скорости разработки программных продуктов, которая достигается главным образом за счет поддержки динамической типизации. Исходя из этого, популярность языков сценариев, вероятнее всего, тесно связана с появлением механизмов модульного тестирования в инструментарии современных разработчиков; модульное тестирование позволяет снизить ценность строгой типизации, так как оно способно (или, по крайней мере, должно…) выявить как связанные с типами данных, так и некоторые другие ошибки. Разработчики быстрее пишут код на динамических языках программирования, отсутствие затрат времени на компиляцию также положительно сказывается на скорости разработки программных продуктов, а скорость аппаратного обеспечения современных компьютеров нивелирует значение скорости исполнения сценариев (которая, разумеется, ниже, чем у бинарных программ). Конечно же, это всего лишь теоретические измышления; они в принципе не могут быть применимы к каждому из существующих проектов.

Статистические данные, собранные на ресурсах GitHub и StackOverflow в начале 2005 года, говорят о том, что языки JavaScript, Python, Ruby и PHP находятся в первой десятке популярных языков программирования, достойно конкурируя с такими популярными языками, как Java и C/C++. При изучении рынка вакансий также несложно прийти к аналогичным выводам. (Статистические данные доступны по ссылкам www.sitepoint.com/whats-best-programming-language-learn-2015 и www.codingdojo.com/blog/8-most-in-demand-programming-languages-of-2015.) Web 2.0 ассоциируется с развитием новых технологий, активным использованием языков сценариев, а также такими новыми языками, как Lua, чрезвычайно легким и адаптируемым встраиваемым языком программирования с динамической типизацией. Конечно же, несмотря на мнения некоторых экспертов, языки сценариев не захватят мир программирования, но по прошествии 30 лет они, безусловно, начали играть более важную роль и предоставили разработчикам возможность использования более гибких синтаксических конструкций.


Если вам понравилась статья, поделитесь ею с друзьями:


Средняя оценка 1 при 1 голосовавших

Комментарии

На чтение 5 мин Просмотров 1.6к. Опубликовано 10.09.2020

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

Язык сценариев — это язык программирования, который интерпретируется, то есть переводится в машинный код при запуске кода, а не заранее. Языки сценариев часто используются для коротких сценариев над полными компьютерными программами. JavaScript, Python и Ruby — всё это примеры языков сценариев.

Вы можете быть удивлены, узнав, что за всю историю компьютеров было изобретено более 700 языков программирования . Это не так много, как у нас есть 6900 человеческих языков, но выучить любой новый язык — нелёгкое дело.

Язык сценариев (также известный как сценарии или сценарий) чётко определяется как серия команд, которые могут выполняться без необходимости компиляции . Хотя все языки сценариев являются языками программирования, не все языки программирования являются языками сценариев. PHP, Perl и Python — распространённые примеры языков сценариев.

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

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

Содержание

  1. Интерпретируемые и компилируемые языки программирования
  2. Серверные сценарии против клиентских сценариев
  3. Примеры языков сценариев на стороне сервера
  4. Примеры языков сценариев на стороне клиента
  5. Приложения языков сценариев
  6. Плюсы и минусы языков сценариев
  7. Плюсы
  8. Минусы
  9. Вывод

Интерпретируемые и компилируемые языки программирования

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

В компилируемых языках программирования программа компилятора переводит код, написанный на языке программирования высокого уровня, на язык более низкого уровня, чтобы программа могла выполняться. Программы C или Java обычно должны быть сначала скомпилированы для запуска. Два хорошо известных компилятора — это Eclipse для Java и gcc для C и C ++.

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

Серверные сценарии против клиентских сценариев

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

Языки сценариев на стороне сервера работают на веб-сервере. Когда клиент отправляет запрос, сервер отвечает, отправляя контент через HTTP. Напротив, языки сценариев на стороне клиента работают на стороне клиента — в их веб-браузерах.

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

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

Примеры языков сценариев на стороне сервера

Ниже приведены примеры языков сценариев на стороне сервера.

Язык Комментарии
PHP Самый популярный серверный язык, используемый в интернете.
ASP.NET Фреймворк веб-приложений, разработанный Microsoft.
Node.js Может работать на множестве платформ, включая Windows, Linux, Unix, Mac и т. Д.
Java Используется во всём, от Bluetooth в автомобильной стереосистеме до приложений НАСА.
Ruby Динамический. Особое внимание уделяется простоте.
Perl Немного мэшапа между C, сценарием оболочки, AWK и sed.
Python Отлично подходит для обучения новичков. Использует более короткий код.

Примеры языков сценариев на стороне клиента

Ниже приведены примеры языков сценариев на стороне клиента.

Язык Комментарии
HTML Основа веб-разработки.
CSS Улучшает внешний вид и графику на страницах в вашем веб-браузере.
JavaScript Хотя обычно на стороне клиента, иногда может использоваться и на стороне сервера.

Приложения языков сценариев

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

Языки сценариев также используются во многих играх и мультимедиа. Например, в модах Minecraft используется Java, чтобы пользователи могли создавать собственные миры и предметы в игре. Кроме того, Second Life , Trainz и Wesnoth позволяют пользователям создавать расширения для игр.

Подобно расширениям, используемым в играх, расширения в других программах, таких как расширения браузера Google Chrome, все запускаются с использованием языков сценариев.

Плюсы и минусы языков сценариев

Плюсы

Использование языков сценариев даёт много преимуществ перед другими языками программирования. Они с открытым исходным кодом. Это позволяет пользователям со всего мира присоединиться к процессу улучшения. Другие плюсы включают:

  • Не требует компиляции, хотя иногда это необходимо.
  • Легко переносить между операционными системами.
  • Языки сценариев делают веб-страницы удобными.
  • Легче учиться и писать.
  • Скрипты можно использовать в качестве прототипа программ, что позволяет сэкономить время на тестовых проектах.

Минусы

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

Вывод

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

Языки сценариев – полезные инструменты для расширения возможностей вашего приложения или веб-сайта.

При создании онлайн-приложения или просто добавлении какой-либо дополнительной динамики на веб-сайт вам понадобится специальный ресурс: языки сценариев.

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

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

Вы, наверное, уже слышали о PHP, Python, JavaScript и jQuery.

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

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

Вам интересно узнать больше об этих компьютерных языках и их преимуществах? Вот все, что вы увидите в этой статье:

  • Что такое скриптовые языки?
  • В чем преимущества использования языков сценариев?
  • Каковы недостатки использования языков сценариев?
  • Каковы наиболее распространенные варианты использования языков сценариев?

Читай дальше!

Что такое скриптовые языки?

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

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

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

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

Примеры языков сценариев

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

Ниже вы узнаете больше о каждом из этих типов языков сценариев и некоторых примерах.

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

Термин «серверный язык сценариев» относится к тем языкам, которые работают с веб-сервера. Поскольку он выполняется с внутренней стороны, скрипт не виден посетителю. Из-за этого это более безопасный подход.

Они часто используются для создания динамических веб-сайтов и платформ, обработки пользовательских запросов, генерации и предоставления данных и прочего. Известный пример серверных сценариев – использование PHP в WordPress.

Примеры: PHP, Python, Node.js, Perl и Ruby.

Клиентский язык сценариев

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

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

Примеры: HTML, CSS, jQuery и JavaScript.

В чем преимущества использования языков сценариев?

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

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

Легко изучить и использовать

Их часто называют отличной отправной точкой для тех, кто интересуется программированием.

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

С открытым исходным кодом и бесплатно

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

Это также способствует безопасности систем, которые их используют.

Портативный и кроссплатформенный

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

Меньшие требования к памяти

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

Каковы недостатки использования языков сценариев?

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

Ниже приведены наиболее заметные недостатки использования языков сценариев в вашем бизнесе.

Отсутствие оптимизаций

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

Медленное исполнение

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

Требования к организации

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

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

Принятие сроков обновления

Чтобы ваши скрипты продолжали нормально работать, их необходимо регулярно обновлять.

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

Каковы наиболее распространенные варианты использования языков сценариев?

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

Наиболее распространенные приложения для этих языков различаются в зависимости от их типа.

Например, языки сценариев командной строки, такие как Bush и PowerShell, используются для сжатия последовательностей команд. Между тем автоматизация процессов на уровне приложений может быть выполнена с помощью VBA и AppleScript.

Кроме того, языки сценариев, такие как PHP, Python, Perl и JavaScript, используются на уровне веб-сервера для поддержки динамических веб-сайтов и приложений.

Наконец, инициативы в области исследования данных и статистики часто используют этот тип языка для расширения своих процессов. В этих случаях наиболее распространены R и Python.

Вот несколько примеров приложений для языков сценариев. Проверь их!

Автоматизация задач локально или удаленно

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

Короткие сценарии для начинающих

Использование языков сценариев не требует одновременного использования более сложных языков программирования. Таким образом, они удобны для новичков, особенно когда имеешь дело с таким, как Python. Несмотря на это, он поддерживает такие платформы для совместной работы, как Instagram, Pinterest и даже Google.

Создание и управление динамическим контентом

Языки сценариев помогают сделать Интернет более динамичным, чем его традиционные статические страницы. Это случай отображения разных данных в зависимости от решений, принятых посетителем, таким образом настраивая опыт. Примером этого является WordPress, который использует PHP, встроенный с кодом HTML, для обслуживания контента, размещенного в его базах данных.

Back-end программирование для сложных систем

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

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

Самыми
распространёнными языками сценариев
являются PHP
и Perl,
поэтому они и будут сравниваться для
нахождения оптимального варианта
реализации проекта интернет-магазина.

Таблица
1.34. Сравнительный анализ языков сценария

Аналоги

Критерии
сравнения

Весовой
коэффициент

Perl

(Practical
Extraction and Report Language)

PHP

(Personal
Home Pages)

Простота
и удобство в использовании

0,2

4

5

Поддержка
хостинг-провайдерами

0,2

4

5

Решение
административных задача в ОС Windows

0,2

5

4

Быстрота

0,2

4

5

Для
работы с MySQL

0,2

Модули
DBI, Msql-Mysql-modules, Data-Dumper, Data-ShowTable

Модуль

php5-mysql

Итого

1

4,2

4,8

PHP
— язык программирования, созданный для
генерации HTML-страниц на веб-сервере и
работы с базами данных. Входит в LAMP —
«стандартный» набор для создания
веб-сайтов (Linux, Apache, MySQL, PHP).

Область
применения PHP сфокусирована на написании
скриптов, работающих на стороне сервера;
таким образом, PHP способен выполнять
то, что выполняет любая другая программа
CGI, например, обрабатывать данные форм,
генерировать динамические страницы
или отсылать и принимать cookies.

В
результате проведённого сравнения было
принято решение использовать для
реализации проекта язык PHP.

  1. Технологическая часть

    1. Задание входных/выходных данных

Входными
данными является информация, вводимая
в систему администратором системы,
врачами, пациентами, медсёстрами и
санитарами посредством клавиатуры и
манипулятора мыши в специальные формы
для ввода.

Информация,
вводимая администратором:

  • Логин
    и пароль;

  • Личные
    данные врача:

    • ФИО;

    • Должность;

    • Расписание
      работы;

    • Год
      рождения;

  • Личные
    данные пациента:

    • ФИО;

    • Год
      рождения;

    • Данные
      полиса.

Информация,
вводимая врачом:

  • Логин
    и пароль;

  • Запись
    в карте пациента (данные о приёме);

  • Соответствующие
    поля направлений на анализы и процедуры;

  • Соответствующие
    поля направлений к другим врачам и в
    другие реабилитационные центры;

  • Выписка
    рецепта на лекарства.

Информация,
вводимая пациентом:

  • Логин
    и пароль;

  • Дата
    и время записи к врачу на приём.

Информация,
вводимая медсестрой кабинета приёма
анализов:

  • Логин
    и пароль;

  • Отметка
    о приёме анализа;

  • Выбор
    лаборатории, в которую направляется
    анализ для исследований.

Информация,
вводимая медсестрой процедурного
кабинета:

  • Логин
    и пароль;

  • Отметка
    о прохождении процедуры.

Информация,
вводимая работником лаборатории:

  • Логин
    и пароль;

  • Данные
    о результате анализа.

    1. Разработка графа диалога

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

В
состав основного меню для пользователя
«Врач» входят следующие пункты:

  1. Пациенты.
    В этом окне врач просматривает всех
    пациентов, записавшихся к нему на
    выбранную им дату. Когда определённый
    пациент приходит на приём, врач обращается
    к диалоговому окну «Приём».

    1. Приём.
      Данное окно предоставляет врачу
      следующие возможности:

      1. Запись
        в карте. Врач производит запись данных
        о приёме в карте пациента.

      2. Направление
        на анализ. Врач выдаёт пациенту
        направления на анализы.

      3. Направление
        на процедуру. Врач выдаёт пациенту
        направления на процедуры.

      4. Направление
        к другому врачу. Врач выдаёт пациенту
        направления к другому врачу (к которому
        пациент не имеет возможности записаться
        самостоятельно).

      5. Выписка
        рецептов. Врач выписывает пациенту
        рецепт на лекарство.

  2. Расписание.
    Врач может просматривать своё расписание
    на текущее время.

В
состав основного меню для пользователя
«Пациент» входят следующие пункты:

  1. Записи
    к врачам. Пациент может просматривать
    все свои записи к врачам, в число которых
    входят как уже пройденные врачи, так и
    те, которых ещё предстоит пройти. Пациент
    имеет следующие возможности:

    1. Запись
      в карте. Пациент имеет возможность
      просмотреть записи врачей в своей
      карте.

    2. Запись
      к врачу. Пациент может записаться к
      нужному ему врачу на определённую дату
      и время.

  2. Процедуры.
    Пациент может просмотреть все назначенные
    ему процедуры.

    1. Процедурный
      лист. Пациент имеет возможность
      посмотреть, какое количество процедур
      он посетил и сколько ему ещё осталось.

  1. Анализы.
    Пациент может просмотреть все назначенные
    ему анализы.

    1. Результат.
      Пациент имеет возможность посмотреть
      результат сданного анализа.

В
состав основного меню пользователя
«Администратор» входят следующие
пункты:

  1. Врачи.
    Администратор видит всех врачей,
    зарегистрированных в данной системе.

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

    2. Сгенерировать
      логин и пароль. Логин и пароль
      автоматически генерируется для
      выбранного врача.

    3. Составить
      расписание. Администратор вводит
      расписание врача, дни и часы его работы.

  2. Пациенты.
    Администратор видит всех пациентов,
    зарегистрированных в данной системе.

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

    2. Сгенерировать
      логин и пароль. Логин и пароль
      автоматически генерируется для
      выбранного пациента.

В
состав основного меню пользователя
«Медсестра кабинета анализов» входят
следующие пункты:

  1. Приём
    анализа. Пользователь вводит данные
    приёма анализов и сохраняет их. Дальнейшие
    действия производят сотрудники
    лаборатории.

В
состав основного меню пользователя
«Сотрудник лаборатории» входят следующие
пункты:

  1. Результат
    анализа. Пользователь вводит данные о
    результате сданного анализа.

В
состав основного меню пользователя
«Медсестра процедурного кабинета»
входят следующие пункты:

  1. Процедура.
    Пользователь ставит отметку о прохождении
    или пропуске пациентом процедуры.

Рис
2.1. Граф диалога

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

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

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

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

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

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

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

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

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

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

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

  • AutoHotkey
  • JCL
  • sh
    • bash
    • csh
    • ksh
  • Pilot
  • REXX
  • AppleScript
  • COMMAND.COM и cmd.exe
  • VBScript
  • PowerShell
  • AutoIt

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

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

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

  • AutoLISP
  • ECMAScript и его диалекты (JScript, JavaScript, ActionScript)
  • Emacs Lisp
  • ERM
  • Game Maker Language
  • LotusScript
  • Lua
  • MQL4 script
  • UnrealScript
  • VBA
  • Встроенный язык программирования 1С:Предприятие

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

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

  • Tcl (Tool command language)
  • Lua
  • Perl
  • PHP
  • Python
  • REBOL
  • Ruby
  • JavaScript

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

Критика

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

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

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

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

  • Если нужно обеспечить программируемость без риска дестабилизировать систему. Так как, в отличие от плагинов, скрипты интерпретируются, а не компилируются, неправильно написанный скрипт выведет диагностическое сообщение, а не приведёт к системному краху. Контрпримером могут служить, например, 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) сценарным языкам недоступен (статическая типизация во время исполнения скрипта приведёт к существенной потере производительности).

Комментариев пока еще нет. Вы можете стать первым!

Понравилась статья? Поделить с друзьями:
  • Языческий праздник зимнего солнцестояния
  • Языки сценариев или скриптов
  • Языческий праздник дьылгаяк
  • Языки описания сценариев это
  • Языческий праздник день осеннего равноденствия