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

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

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

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

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

Процесс преобразования исходного текста в двоичный код называется «компиляцией». Во время компиляции исходный текст проверяется на правдоподобность: Все ли переменные действительно определены? Соответствуют ли типы функциональных параметров функциональным определениям? Не забыл ли программист где-нибудь символ? Эта проверка выполняется по всему исходному тексту и может занять некоторое время. Двоичный код, полученный в результате компиляции, сильно оптимизируется, чтобы он выполнялся как можно быстрее и без ошибок. Поэтому компилируемые языки особенно подходят для задач с интенсивными вычислениями и больших систем.

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

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

// "Hello World" example in Java
class HelloWorld {
  static public void main( String args[] ) {
    System.out.println( "Hello World!" );
  }
}
# "Hello World" example in Python
print "Hello World!"

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

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

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

Интерактивное программирование на скриптовых языках с использованием REPL

Во многих скриптовых языках есть возможность запускать интерпретатор в интерактивном режиме. Это называется режимом REPL — сокращение от «read-eval-print-loop». Программист передает исходный текст интерпретатору, который читает и оценивает его. Затем интерпретатор возвращает результат (печать) и ждет следующей записи (цикл).

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

Определение сложных структур данных как литералов в языках сценариев

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

// Example of an object lateral in JavaScript
customer = {
    'first name': "Bob",
    'surname': "Jones",
    'age': 40,
    'active': true,
    'addresses': {
        'personal': {},
        'company': {},
    },
}
# Example of HTML generation using template lateral in JavaScript
page_title = 'What Are Scripting Languages?'
h1 = '<h1>${page_title}</h1>'
# returns "<h1>What Are Scripting Languages?</h1>"

Динамическая типизация в языках сценариев

В примерах кода, приведенных выше, вы, возможно, заметили, что там вообще не было типов типа «String», «int» или «bool». Однако для выполнения программы необходима информация о типе. Откуда же берется эта информация?

Языки сценариев обычно используют «динамическую типизацию». Интерпретатор определяет тип переменной на основе контекста. В языках сценариев тип переменной также не является фиксированным; он может меняться в зависимости от контекста. Пример:

# Example of dynamic typing in Python
# A name displayed as a list of first name, surname
name = ['Alice', 'Smith']
# The type of the variable “name” is “list”
type(name)
# We only need the first name in the following
name = name[0]
# The type of the variable “name” is now “str”
type(name)

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

Языки сценариев делятся на категории в зависимости от использования и области применения. Некоторые языки сценариев используются в командной строке для уплотнения последовательностей команд. Таким образом они помогают автоматизировать процесс. К таким языкам относятся Bash и PowerShell.

VBA и AppleScript выполняют аналогичную функцию. С помощью этих языков можно автоматизировать процессы на уровне приложений.

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

Языки сценариев также широко распространены в статистике и научных исследованиях. Здесь в основном используются языки R и Python.

Оцените статью
cdelat.ru
Добавить комментарий