Уже давно подтверждено практикой, что наиболее популярные языки программирования создаются не рабочими группами, а специалистами-одиночками. Это, впрочем, касается всех сфер деятельности, которые можно трактовать как искусство, а не как ремесло. Так было, в частности, с Си (Д. Ритчи) и Паскалем (Н. Вирт). В 80-х годах Ларри Уолл (Larry Wall) разработал язык Perl (Practical Extraction and Report Language). Первоначально Perl задумывался как средство эффективной обработки больших текстовых файлов, генерации текстовых отчетов и управления задачами. Одна из первых реализаций Perl-интерпретатора прекрасно проявила себя под Unix, где этот язык использовался в качестве командного. А сегодня вообще трудно представить Unix без Perl. Конечно, для Perl написано немало компиляторов, которые удобны для создания многократно используемых утилит, однако для большинства задач по-прежнему применяются интерпретаторы  -  они очень просты и позволяют использовать всю мощь операционной среды, под управлением которой работают. За это, однако, приходится расплачиваться производительностью.

 

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

 

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

 

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

 

Благодаря наличию в Perl мощных встроенных средств обработки данных этот язык легко осваивают начинающие пользователи. Если человек знает Си, то перейти на Perl ему не составит никакого труда. В то же время в погоне за мощностью этот язык сделал и без того ненаглядный процесс программирования на Си еще более сложным. Иногда нелегко понять, что делает программа, уместившаяся в трех строчках. С учетом этих особенностей Perl обычно не используется для коллективной разработки больших программ, да он и не предназначался для этого. Скорее Perl подходит для создания всевозможных утилит и особенно Web-скриптов. Популярность этого языка резко скакнула вверх, когда Internet стала быстро опутываться “Всемирной паутиной”. Текстовый язык HTML идеально подходит для анализа и генерации Web-страниц с помощью Perl. Эти особенности языка в сочетании с поддержкой передачи данных в Сети с помощью связи через гнезда (sockets) и возможностью обращения к функциям операционной системы сделали Perl одним из самых популярных языков программирования для Internet. Сегодня на Perl написаны тысячи скриптов, которые активно используются во всем мире. В частности, всевозможные счетчики, формы запросов с произвольной структурой управляющих элементов или утилиты поиска на Web-узле страниц с заданными ключевыми словами занимают всего несколько сотен (до 500) строчек кода. Поэтому многие провайдеры поддерживают Perl, правда, обычно требуя, чтобы пользователи предварительно отдавали свои скрипты Web-мастеру на тестирование.

 

Имеются реализации Perl в виде script-языка, вставляемого в исходном виде в html-код наподобие JavaScript. Здесь надо отметить принципиальное отличие обычной Perl-программы, которая хоть и распространяется только в исходных текстах, но выполняется целиком на сервере, от PerlScript  -  его интерпретацию берет на себя клиентская машина.

 

Интересно, что многие Perl-программисты считают Java, “раскрученный” язык программирования для Сети, бесперспективным, на изучение более мощного Perl требуется на порядкок меньше времени. Если же необходимо написать большую программу для Сети, можно использовать более знакомый Си++. Конечно, Java имеет и ряд преимуществ, но как конкурент она языку Perl абсолютно не угрожает, занимая совершенно другую нишу. Дело в том, что программы на Java представляют собой двоичный интерпретируемый код. На Java можно написать, например, сетевую игрушку, но все государственные организации, особенно имеющие отношение к национальной безопасности, никогда не запустят на своей сети непроверенный двоичный Java-код, так как “дыры” есть в любой компьютерной системе. А программы на Perl распространяются в исходных текстах  -  таково требование создателя языка, и протестировать их для профессиональных программистов не представляет труда.

 

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

 

Распространялся и распространяется Perl только бесплатно (так пожелал его автор), причем этот язык уже давно перерос рамки проекта GNU (свободнораспространяемое ПО для UNIX), в составе которого первоначально создавался. Поддержку пользователей, разработку новых версий интерпретаторов и компиляторов для своего любимого языка Perl-программисты осуществляют также бесплатно. Недавно вышла пятая версия Perl. Реализация этого языка была полностью пересмотрена. Изменился синтаксис Perl  -  в него добавились конструкции, повышающие читабельность исходного кода. Значительно информативнее стали предупреждения и сообщения об ошибках. Описание грамматики Perl 5.х сократилось в два раза. Почти на 2/3 уменьшилось количество ключевых слов. При этом, конечно, сохраняется полная совместимость синтаксиса со старыми версиями языка.

 

В пятой версии Perl сделана попытка сориентировать этот язык на создание более-менее крупных программ. В язык введено понятие пакета для поддержки модульной структуры. Пакеты могут трактоваться как классы со своими виртуальными методами  -  в языке реализованы основные понятия объектно-ориентированного программирования. Расширен список баз данных, к которым в Perl организован встроенный доступ. С помощью документированного Perl-интерфейса можно части кода на этом языке встраивать в программы на Си/Си++ и наоборот, подключать Си-библиотеки к Perl-программам.

 

Недавно вышла версия языка Perl 5.004 Beta 1. Она работает под управлением UNIX, VMS, OS/2, AmigaOS и др. В версии Beta 2 будет встроена поддержка Windows 95 и NT, при этом Perl-компилятор сможет работать совместно с Microsoft Visual C++.

 

Имеется несколько независимых реализаций чуть более ранних версий Perl для Windows. Компания ActiveWare               ( http://www.activeware.com ) распространяет продукт Perl for Win32, работающий под управлением Windwos 95 и NT. Также предлагается Perl for ISAPI, позволяющий выполнять Perl-скрипты на Web-серверах Microsoft Internet Information Server.

 

Получить подробную информацию о Perl можно по адресу: http://www.perl.org. Там же находится немало ссылок на узлы, откуда можно скачать последние версии языка.    

 

Сергей Бобровский

 

Адрес автора статьи:  softart@postman.ru.

Версия для печати