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

Содержание

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

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

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

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

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

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

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

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

Другие термины на букву «Я»

Все термины SEO-Википедии

Теги термина

Чем отличаются языки программирования, разметки и скриптовые языки?

Перевод статьи Аншита Шармы «Difference Between Programming, Markup and Scripting Languages».

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

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

Есть три типа языков: языки программирования ( C++, Visual Basic, Java, C#), языки разметки (HTML, XML, CSS) и скриптовые языки (JavaScript, PHP, Python). Все они обладают своим собственным функционалом, несходным с другими. Но в этой статье мы попробуем сравнить их, чтобы понять разницу.

Языки программирования

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

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

Языки разметки

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

При этом HTML используется для определения данных, а задача CSS – представить эти данные в красивом макете. Так что, если вы увлечены дизайном веб-сайтов (фронтенд-разработкой), то начинать вам нужно с языков разметки.

Скриптовые языки

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

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

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

Таковы основные отличия языков программирования, разметки и скриптовых языков.



Скриптовый язык против языка программирования

Скриптовые языки программирования языки, а языки сценариев. Это’ы искусственного категории, Без четкой границы, и где каждое предложенное правило имеет исключение.

Классические правила говорят, что язык-это язык сценариев, характеризующий, а не определение. Если язык удовлетворяет нескольким правилам, есть хороший шанс, что это’ов является скриптовый язык. Если нет, там’ы хороший шанс, что это’s не. Правила обычно включают:

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

Я бы добавил:

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

То есть, это может быть интерпретируемый язык.

Если язык программирования имеет существенное то «во время» поведение, где он анализирует код и сообщает об ошибках без выполнения программы, как тип ошибки из C, Java или C#, то это’ы, скорее всего, не является скриптовый язык.

Традиционно много скриптовых языках интерпретируются непосредственно из источника, но более популярны из них получили более производительным, внедрение предварительной компиляции кода, вроде Python’ы `.файлы ЧКД, или оптимизация JavaScript-движка, которые компилируются в машинный код перед запуском.

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

Если язык предоставляет полезную статической семантики, которая помогает обнаруживать ошибки (не синтаксические ошибки) без необходимости запуска программы, она’s наверное не скриптовый язык.

Всегда есть исключения, как правило, основывается на традиции вокруг языка больше, чем любое фактическое правило. Основной является, как правило, не считают, что «скриптовый язык» и, хотя он удовлетворяет почти всем критериям, которые когда-либо использовались человеком. Что’s, почему в Visual Basic скрипт, пришлось добавить в «скрипт» на имя, чтобы отличить себя от визуального основной, а «Реал» и язык программирования, предназначенный для больших программ.

Basic-это старый язык программирования, таких как КОБОЛ и Фортран, от людей ожидается, что статический анализ с языка, и в принципе до «и скриптовых языков» в них было что-то.

задачи, специфические особенности и преимущества

В 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 позволяют писать компактный и лаконичный код с наименьшим числом ошибок. Простой и понятный синтаксис дает возможность любому желающему освоить их и начать заниматься разработкой.

Скриптовые языки программирования (Python). № УД-4201/уч.


Please use this identifier to cite or link to this item:

https://elib.bsu.by/handle/123456789/182916

Title: Скриптовые языки программирования (Python). № УД-4201/уч.
Other Titles: Учебная программа учреждения высшего образования по учебной дисциплине для специальности второй ступени высшего образования (магистратуры) с углубленной подготовкой специалиста
Authors: Косицин, Д. Ю.
Keywords: ЭБ БГУ::ОБЩЕСТВЕННЫЕ НАУКИ::Информатика
Issue Date: 2017
Publisher: БГУ
Abstract: Учебная программа по учебной дисциплине «Скриптовые языки программирования (Python)» разработана в соответствии с типовыми учебными планами и образовательными стандартами второй ступени высшего образования (магистратуры) с углубленной подготовкой специалиста по специальности 1-31 81 09 «Алгоритмы и системы обработки больших объемов информации» и относится к циклу дисциплин вузовского компонента. Учебная дисциплина «Скриптовые языки программирования (Python)» дает представление о программировании на языке высокого уровня Python, а также дает обзор различных подходов к программированию: процедурного, функционального и объектно-ориентированного. Основой для изучения учебной дисциплины являются следующие учебные дисциплины первой ступени высшего образования: «Программирование», «Операционные системы», «Архитектура компьютеров», «Компьютерные сети».
URI: http://elib.bsu.by/handle/123456789/182916
Appears in Collections:Алгоритмы и системы обработки больших объемов информации

Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.

Скрипт (script) – что это такое: язык сценариев в программировании

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

Например, для функционирования какого-нибудь сервиса, инструмента на сайте.

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

Чтобы происходило действие (сообщение появлялось под публикацией), необходимо прописать соответствующий script. При выполнении условий (в данном случае нажатие кнопки «Отправить») он будет запускаться. После чего пользователь увидит результат своих действий.

Также можно написать еще один скрипт (или дополнить предыдущий новыми условиями), чтобы система оповещала пользователя об успешной или неуспешной отправке. Если все условия были выполнены правильно, пользователь увидит сообщение: «Комментарий отправлен». Если что-то было сделано неверно, он увидит: «Заполните все поля корректно», «Заполните поля, отмеченные *» и т. д.

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

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

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

  • JavaScript;

  • JScript;

  • PHP;

  • Python;

  • Perl.

Они имеют разный синтаксис, различные возможности и области применения. В веб-разработке наиболее часто используется JavaScript и PHP.

Как установить скрипт на сайт

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

После необходимо сделать следующее:

  1. Загрузить все файлы скрипта через ftp.

  2. Разграничить права доступа.

  3. Запустить инсталлятор, который сам создаст конфигурационные файлы.

  4. Заполнить все необходимые данные (например, доступ к базе MySQL).

  5. Осуществить настройку в панели управления.

Иногда настройка происходит не в ПУ, а предварительно в файлах конфигурации.

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

Как это работает

Ниже описана схема срабатывания и работы скрипта.

  1. Выполняется некоторое условие на сайте.

  2. Эта информация поступает на веб-сервер.

  3. После на сервере запускается файл скрипта.

  4. Далее происходит обработка данных и выбор ответа в соответствии с прописанным сценарием.

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

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

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

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

Преимущества и задачи

Главная задача любого скрипта на сайте — выполнение заданной функции. В веб-разработке их используют:

  • для расширения функционала ресурса, добавления уникальных инструментов;

  • сбора статистики о посещениях и посетителях;

  • поисковой оптимизации;

  • упрощения кода веб-страницы;

  • добавления динамических элементов дизайна и т. д.

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

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

Другие пользователи могут даже не подозревать, что это не реальный человек, а заскриптованный алгоритм.

Использование скриптов обладает рядом преимуществ.

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

  2. Упрощение. Для работы некоторых сценариев достаточно написать одну строчку кода, при этом на обычном языке потребовалось бы написать десятки строк.

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

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

  5. Расширенная функциональность. Script способен расширить функционал сайта, дать ему новые инструменты и возможности для взаимодействия с посетителями.

Роль скриптов в СЕО

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

Дело в том, что каждый скрипт — это определенная нагрузка на сервер (если он выполняется в браузере — на браузер). Чрезмерное их количество может привести к тому, что сайт будет зависать и тормозить. Это негативно скажется на поведении посетителей. А, как известно, поведенческие факторы играют одну из главных ролей при ранжировании страниц в поисковой выдаче. Чтобы не портить поведенческие факторы своей площадки, необходимо убрать все лишние скрипты. Оставлять стоит только самые «нужные». Именно поэтому все специалисты в области СЕО рекомендуют не использовать совсем или использовать по минимуму анимационные и динамические элементы. Да, это красиво, но неэффективно с точки зрения производительности.

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

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

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

СЕО — это многогранный процесс, состоящий из множества «мелких» деталей. Поэтому каждой из них нужно уделять достаточно внимания, в том числе и скриптам сайта.

Встраиваемые языки: почему Lua? / Хабр

Этот материал продолжает серию публикаций, основанных на докладах, которые мы сделали на конференции Games Gathering 2017 в декабре прошлого года. В одном из

докладов

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



Что такое и зачем нужны скриптовые языки

Как уже упоминалось в

предыдущем посте нашего блога

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

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

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

Ещё одно преимущество скриптовых языков в том, что скрипты в проекте могут быть как кодом, так и ресурсом. И, соответственно, обновлять скриптовую часть игры можно не только вместе с кодом, то есть в ходе обычных обновлений через механизмы магазинов приложений. Но и вместе с ресурсами — то есть вместе с графическими и прочими материалами, с использованием CDN.

Требования к идеальному скриптовому языку

Сформулируем требования к идеальному скриптовому языку.

  • Динамический. В нашем понимании идеальный скриптовый язык должен быть динамическим.
  • Популярность. Под популярностью языка мы понимаем наличие у него достаточно большого сообщества, готового отвечать на вопросы на специализированных ресурсах наподобие StackOverflow.
  • Пологая кривая обучения. Мы хотим взять, условно говоря, практически любого человека, и быстро обучить его до уровня, который позволит этому человеку продуктивно работать над нашими задачами.
  • Широкие возможности. Язык должен быть мощным и обладать достаточно широкими возможностями, должен поддерживать разные парадигмы программирования. Профессиональный программист, которому предложат писать на таком языке, сможет делать это с комфортом и с удовольствием.
  • Высокая производительность. Производительность — это один из краеугольных камней игровой индустрии.
  • Большое количество библиотек. Очень часто мы, в ходе решения встающих перед нами задач, не создаём принципиально новый код, а пользуемся тем, что уже кто-то написал. Чем больше стабильных, хорошо поддерживаемых библиотек мы можем задействовать, применяя некий язык — тем лучше.
  • Лёгкость встраивания. Речь идёт о встраиваемых языках, поэтому при выборе скриптового языка возможность его встраивания играет важную роль.

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

Python

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

Python обладает широкими возможностями, отличается хорошей производительностью. Его проблемой является неконсистентная система библиотек. Ещё одна его проблема, которая играет для нас важную роль, заключается в том, что он, на самом деле, не является встраиваемым языком. Это язык, из которого удобно вызывать библиотеки, написанные на C или C++.

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

В итоге можно сказать, что Python, при всех его сильных сторонах, нам не подходит. Теперь рассмотрим JavaScript.

JavaScript

JavaScript — это, без преувеличений, великий язык, который буквально захватил мир.

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

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

В компании SocialQuantum есть собственный интерпретатор JavaScript, который проходит 98% тестов, мы планируем перевести этот проект в разряд опенсорсных.

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

Haxe

Тут надо отметить, что когда заходит разговор о JavaScript, следующим обычно вспоминают Haxe. Но, на самом деле, о возможности использования этого языка в качестве встраиваемого говорить нет смысла, так как Haxe, по сути, является не столько языком, сколько транс-компилятором в другие языки. А это не то, что нам нужно.

Может быть, нас устроит ActionScript или какой-нибудь другой скриптовый язык?

ActionScript

Если формально проанализировать ActionScript на соответствие вышеозначенным требованиям, то может показаться, что идеальный скриптовый язык найден. На его стороне динамическая природа, популярность, лёгкость изучения, хорошие возможности, производительность, наличие библиотек, лёгкость встраивания. Этот язык любят и помнят в игровой индустрии, на нём написано огромное количество замечательных Flash-игр. Главная проблема ActionScript заключается в том, что язык этот почти мёртв. Поэтому нас он тоже не устраивает.

AngelScript, Squirrel и другие

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

Как видно, идеального встраиваемого языка мы пока не нашли. Что если создать собственный язык?

Создание собственного языка

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

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

Рассмотрев существующие языки программирования, претендующие на роль встраиваемых и обсудив идею разработки собственного языка, перейдём к Lua.

Lua — встраиваемый язык, который выбрали мы

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

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

Например, вот как выглядит наша рабочая среда на основе IDE CLion от JetBrains. Здесь можно видеть созданный нами механизм автодополнения для Lua, который планируется сделать опенсорсным. Опенсорсным мы собираемся сделать и отладчик.



Рабочая среда

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

Возражения по поводу использования Lua


Lua предназначен для C а не для С++

Никто не спорит с тем, что Lua — отличный встраиваемый язык. Главное, что считают его минусом, заключается в том, что он создан для использования с языком C, а не C++. Из-за этого, пытаясь применить в Lua что-то такое, что есть в C++ и нет в C, мы сталкиваемся с проблемами. Однако тут надо понимать, что проблемы эти решало множество довольно умных людей. Среди средств, решающих проблемы встраивания Lua в C++-проекты, можно отметить такие, как Luabind, Luabridge, toLua++, SQLuaHost. Это — далеко не полный список. Они обладают разными достоинствами и недостатками, но, тем не менее, скорее всего, всё, что вам может потребоваться, уже реализовано в одном из этих решений.

Рассмотрим, например SQLuaHost. Это — биндинг, который сделан внутри компании SocialQuantum, и который планируется сделать опенсорсным. Это решение представляет наше видение того, как должен биндиться Lua. Поэтому, вполне возможно, что если вы не нашли то, что вам нужно в существующих биндерах, вы найдёте это в SQLuaHost.

Lua — это медленно

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

function myGame:onUpdate()
    local tex = Texture::new(name)
    self.background:setTexture(tex)
end

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

Lua подходит только для маленьких проектов

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

При этом зачастую на Lua какие-то маленькие модули пишутся быстро, а в игровой индустрии «быстрее» — значит «дешевле».

Другие аргументы против Lua

Критикуя Lua, говорят о том, что язык это древний, что он, что называется, «из коробки», не поддерживает ООП, что нумерация элементов в его таблицах начинается не с 0, как можно было бы ожидать от любого приличного языка, а с 1.

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

Итоги

Подведём итоги. Если ваша задача — с минимальными усилиями обзавестись встраиваемым языком — возьмите Lua. В то же время, если у вас есть время и ресурсы на разработку собственного языка или собственных биндингов — опять же — обратите внимание на Lua. Почему и в первом и во втором случаях мы рекомендуем Lua?

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

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

Что такое язык сценариев? Полное руководство

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

Найди свой матч на тренировочном лагере