Скриптинг

Что такое скриптинг

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

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

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

awk

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

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

В целом awk является чрезвычайно полезным инструментом для решения простых повседневных задач, связанных с текстовой обработкой. Несмотря на популярность языка я не нашел в сети достаточно подробного его описания на русском — все найденные описания раскрывали только малую долю возможностей awk. Сам я постоянно использую язык awk для написания скриптов обработки текстов и я подробно изучил описание программы gawk (наиболее популярная реализация языка awk). По ссылке можно найти несколько расширенный вариант записей, котоорые я вел, читая руководство по gawk.

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

В Живом Журнале функционирует сообщество [http://community.livejournal.com/ru_awk], посвященное использованию языка awk.

Lua

Сейчас доступно несколько десятков скриптовых языков, среди котоорых наибольшей популярностью пользуются такие языки как Perl, Lua, Ruby и Python. Выбор скриптового языка в основном определяется решаемыми задачами.

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

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

От использования языка Perl я отказался из-за его сложности и эклектичности, а от Ruby — из-за сложности и «изощренности». Python оказался ближе всего к оптимальному решению, но и он показался мне слишком тяжеловесным и не без синтаксических странностей. В результате я остановился на языке Lua, который изначально ориентирован на встраивание в приложения.

Краткое введение в Lua (язык)
Краткое введение в Lua (библиотека)

В Живом Журнале функционирует сообщество [http://community.livejournal.com/ru_lua], посвященное использованию языка lua.

page_revision: 25, last_edited: 1207113663|%e %b %Y, %H:%M %Z (%O ago)
Unless stated otherwise Content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License