Что такое скрипт и скриптовый язык
Скрипт (script с англ. сценарий) — это небольшая программа, которая последовательно выполняет список однотипных задач. Простыми словами, скрипт - это автоматизация какого-то рутинного процесса: заменить в статье дефисы на тире, кавычки лапки (“”) на ёлочки («») или подготовка файлы сайта для загрузки на сервер.
Написать скрипт можно на любом языке, если он поддерживает описание инструкций в виде последовательности действий, то есть алгоритмов:
- Открыть сайт X.
- Нажать кнопку Y.
- Подождать N секунд.
- Закрыть сайт и так далее.
По похожим сценариям работают актеры, повара, заводы. Каждый из них выполняет последовательность действий, будь то рецепт блюда или технология по эксплуатации станка. Эту последовательность действий можно описать в подавляющем большинстве языков программирования.
Вот только называть язык скриптовым только потому, что на нем можно писать сценарии, нельзя. Есть и другие критерии:
- Чаще интерпретируется, а не компилируется — переводится на машинный язык во время запуска, а не предварительно.
- Типизация обычно динамическая: тип данных может в любой момент меняться, и не определяться во время компиляции.
- Он более высокоуровневый — больше понятен человеку, чем компьютеру.
Сейчас будет моё личное мнение:
Сложно выделить, что делает язык скриптовым. Например, Java таковым не считается, хотя он подходит по всем критериям:
- На нем можно писать инструкции для компьютера, которые будут выполняться как сценарий.
- Java компилируется в байт-код, который во время запуска интерпретируется в машинный язык.
- В нем допустима динамическая типизация, благодаря дженерикам.
- У него достаточно высокий уровень абстракции — то же объектно-ориентированное программирование.
Дженерик (обобщение) — такое описание данных при написании алгоритма или функции, которое позволяет использовать разные типы данных, не переписывая алгоритм.
На мой взгляд, есть всего один корректный критерий классификации: язык должен быть создан специально для того, чтобы выполнять сценарии внутри какой-либо программы. Например, VBA, на котором пишут макросы для Excel, или WitcherScript для игр The Witcher 3 и CyberPunk 2077, а также sh для терминалов.
Какие бывают типы скриптов
Скрипты и языки для их написания можно разделить на следующие типы:
- Консольные или командные — Bash, PowerShell.
- Расширяющие или встраиваемые — JavaScript, Lua, VBA.
- Макросы или скрипты графического интерфейса — зависит от программы.
- Универсальные — Python, PHP, JavaScript.
На каких языках нельзя писать скрипты
Существуют языки, созданные для решения конкретных задач и не предполагающие написания алгоритмов (разве что математических). Например, язык для аналитики данных R.
Рассмотрим возможности двух языков на примере анализа данных:
Таблица выше показывает, насколько ограничен узкоспециализированный R по сравнению с языком общего назначения Python.
Скрипты нельзя писать на:
- R — он используется только для аналитики данных.
- SQL — предназначен только для запросов к базам данных.
- MATLAB — только для математических вычислений.
- Solidity — для написания смарт-контрактов.
Эти языки задумывались для решения конкретных задач и в них просто нет возможностей для написания скриптов. Иначе ничего бы не помешало использовать и их. Как говорится, любой инструмент — это молоток.
Плохо ли это? Наоборот, создатели узкоспециализированных языков могут позволить себе сосредоточиться на главных возможностях своего языка и сделать их действительно мощными и удобными. И в зависимости от сложности задачи программист решает — использовать ли отдельный язык или достаточно будет языка общего назначения.
Где и кем используются скриптовые языки
Языки, поддерживающие написание скриптов, используются во всех сферах и для решения всех задач:
- Разработка под iOS или OS X — Swift.
- Разработка под Android — Java или Kotlin.
- Создание игр — C# или C++.
- Веб-разработка — PHP, Python, JavaScript.
- Аналитика — Python, Java, JavaScript.
- Программирование устройств — Python, C++.
Формальных ограничений на использование тех или иных языков в разных сферах нет — просто могут быть некоторые сложности. Например, можно создать приложение для OS X хоть на Python, просто оно будет медленно работать. Можно создать интерфейс сайта хоть на ассемблере — но тут уже медленно работать будете вы.
Что же касается сценарных языков, их используют в специальных случаях, например:
- WitcherScript или Lua для написания квеста для игры.
- VBA для создания макроса для бухгалтерской таблицы.
Также не стоит забывать и про скрипты — их тоже может писать кто и угодно и для чего угодно. Например, чтобы улучшить позиции сайта в поисковой выдаче.
Как скрипты помогают в SEO
С помощью кода можно решить любую задачу, если соблюдены три условия:
- Это теоретически возможно.
- Есть достаточно времени на написание кода.
- Есть достаточно времени на выполнение кода.
Теоретически возможно предсказывать будущее, если рассчитать движение всех частиц во Вселенной. Вот только на сбор данных, написание кода и запуск такой программы уйдет слишком много времени. Поэтому, к сожалению, демон Лапласа не поможет угадать ключи, которые со 100 % вероятностью продвинут сайт в топ за один час.
А вот заставить скрипт проанализировать тексты на сайте, просмотреть конкурентов, изучить поисковую выдачу, чтобы он предложил несколько подходящих ключей — вполне возможно.
Вот ещё несколько полезных примеров:
- мониторинг онлайна сайта;
- анализ текстов на количество ключей, их актуальность, на ошибки и прочее;
- проверка скорости загрузки;
- проверка оптимизации для людей с ограниченными возможностями;
- анализ безопасности;
- ведение статистики;
- автопостинг по разным площадкам;
- анализ поведенческих факторов;
- сбор данных о пользователях;
- сбор данных о конкурентах и так далее.
И все эти скрипты уже кем-то написаны и давно используются в индустрии. Например, с помощью PageSpeed от Google можно проверить скорость загрузки сайта, узнать о возможных причинах торможения и понять, что можно исправить и улучшить. Яндекс.Метрика позволяет вести статистику посещений и следить за активностью пользователей.
В зависимости от вашего знания предметной области и вашей фантазии вы можете придумать еще какие-то скрипты, написать их или заказать их разработку. Это может быть что-то новое, а может быть и объединением нескольких других скриптов. Например, можно взять готовый скрипт мониторинга и добавить в него отправку уведомлений в Телеграм или запуск каких-нибудь служб восстановления.
Преимущества и недостатки скриптов
Преимущества скриптов делают их идеальным инструментом для задач, для которых они используются:
- Их легко написать, что экономит время. Они небольшие, поэтому можно особо не переживать из-за чистоты кода или правильной архитектуры.
- Их не нужно встраивать в целую систему, чтобы выполнить какие-то действия.
- Не нужно беспокоиться о кроссплатформенности кода — скрипты пишутся под определенные задачи и запускаются сразу на целевых платформах.
- Гибкость — можно добавить в программу любые действия и параметры. А в случае необходимости скрипт легко переписывается.
Есть и недостатки, но в контексте требований к скриптам они не имеют значения. Например, чуть более медленная скорость выполнения. Условно говоря, с помощью скрипта, который работает одну секунду, вы экономите час своего времени. Но вместо того, чтобы удовлетвориться этим, вы решаете потратить еще десять часов, чтобы скрипт выполнялся за полсекунды.
Как научиться использовать сценарные языки
Первый шаг — определиться, зачем вы хотите этому учиться. Чтобы автоматизировать небольшие процессы или писать моды к играм, парсить данные или создавать мобильные приложения? Зная ответ на этот вопрос, вы можете подобрать подходящий язык и попробовать его изучить.
Важно! Язык — это инструмент. Подбирайте подходящий для ваших задач — список был в разделе выше.
Если сомневаетесь, выбирайте JavaScript или Python. Это очень популярные языки, которые быстро развиваются, по ним много обучающих материалов и много вакансий для программистов. Также они легки для освоения.
Второй шаг — изучите основные принципы программирования. Их не так много и они общие (но не всегда идентичные) для большинства языков. И если через несколько месяцев вы поймете, что ошиблись с выбором, сможете быстро перестроиться под новый язык.
Третий шаг — придумайте несколько небольших проектов и реализуйте их на своем языке. Чем меньше у вас опыта — тем меньше должен быть проект. Не нужно строить Бурдж-Халифа, если вы ни одного гвоздя в жизни не забили. Второй и третий шаги можно совмещать.
Практиковаться нужно как можно больше, а начинать — как можно раньше. Теория важна, но без практики ничего не стоит, потому что программирование — это про решение проблем, а не про алгоритмы, структуры, парадигмы и другие умные слова.
Если не можете придумать интересные проекты, можете погуглить идеи для новичков — их полно для любого языка и уровня владения им.