Интерпретируемый язык программирования Perl появился в декабре 1987 года. Его создатель Larry Wall — лингвист по образованию. Это язык общего назначения, однако его основное предназначение — обработка текстов и администрирование. Поскольку любое веб-строительство — это, главным образом, и есть обработка текстов и администрирование, Perl как нельзя лучше вписался в набор основных инструментов веб-разработки. Мощь и удобство языка по достоинству оценили миллионы программистов, использовав его в том числе в разработке таких мегапроектов, как Yahoo и Amazon.
Среди языков программирования, входящих в десятку самых популярных, этот, пожалуй, самый неординарный. Неординарность Perl проявляется и в оценке его преимуществ и недостатков, поскольку одни и те же свойства языка являются бесспорным преимуществом для одних и столь же очевидным недостатком для других.
В чем же секрет популярности?
- Свободно распространяемый язык программирования. Интерпретаторы Perl распространяются в соответствии c артистической лицензией GNU: и двоичные дистрибутивы, и исходные коды дистрибутивов могут использоваться без каких-либо ограничений.
- Интерпретируемый язык. Скрипты на Perl могут выполняться как на персональном компьютере, так и на вебсервере. Большинство хостинг-провайдеров поддерживают выполнение скриптов на Perl 5 наряду с PHP и Python.
Perl — основоположник технологии регулярных выражений для обработки текстов. Эта технология позволяет, записав всего несколько строк, организовать анализ, редактирование и переформатирование объемных текстов. Реализация этих же функций на языках, подобных Си, требует написания сотен строк с кодированием множества циклов и итераторов. Для людей, не знакомых с синтаксисом Perl, эти могучие команды с использованием регулярных выражений выглядят как бессмысленный набор символов, для опытных же перловских программистов — это возможность многократно сократить время на разработку приложения.
Perl предоставляет программистам полную свободу выбора стиля программирования. Философия Перл — каждая задача должна иметь несколько вариантов решения. Практически свобода выбора выражается не столько в выборе встроенных функций для решения прикладной задачи, сколько в выборе собственных правил кодирования.
Например, по умолчанию переменные в Perl — глобальные в пределах модуля. Использование собственных правил уникализации имен переменных позволяет не задумываться о передаче переменных между подпрограммами, опять же ускоряя процесс кодирования. Использование «my» перед описанием переменной ограничивает область ее действия подпрограммой, где она используется. В этом случае необходимо передавать параметры подпрограммам, и Perl становится похожим на процедурные языки.
Язык предъявляет минимум требований к использованию переменных и оформлению команд: никаких обязательных объявлений и описаний типов и форматов переменных, в том числе передаваемых в подпрограммы и возвращаемых из них.
Не требуется и предварительное объявление ни размерности, ни размера, ни типа массивов. Нет необходимости выделять память под массивы для обработки до нескольких тысяч знаков, как это делается в Си, если реально будет обработана всего одна строка. По мере поступления данных они просто добавляются в массив, размер которого соответственно увеличивается.
Преимущества Perl для начинающих
Чтобы начать писать работающий код на Perl, даже элементарных знаний процедурного программирования более, чем достаточно. Нужно посмотреть в справочнике краткое описание нужной функции и простейший пример ее использования, практически без какого-либо оформления просто вбить в текст скрипта и подставить нужные данные. Почти наверняка код будет работать.
Часто говорят, что Perl очень труден для изучения. Здесь необходимо учитывать два обстоятельства.
Во-первых, Perl — очень мощный язык, и изучение всех его возможностей — действительно трудоемкая задача. Вместе с тем, если сравнивать изучение встроенных возможностей Perl с изучением библиотек для других языков программирования, необходимых для решения тех же задач, которые язык решает с помощью внутренних функций, то изучение собственно Perl ничуть не сложнее.
Во-вторых, благодаря практически отсутствию требований по объявлениям и оформлению Perl имеет практически нулевой порог, чтобы программист, ничего ранее не знавший про него, уже в первый день написал работающий скрипт. Для решения узкого класса задач совсем не требуется знания всех возможностей языка. Поэтому Perl удобен в качестве второго языка для написания небольших скриптов утилит, выполняющих конкретные функции, например, скрипта для отправки SMS с компьютера.
Недостатки
Основной недостаток Perl — в том же, что составляет его достоинства. Он предоставляет полную свободу стиля и многовариантность реализации, а сложнейшие команды обработки текста записываются в одну строку, похожую на набор символов. Поэтому код, написанный одним программистом, трудно читаем или совершенно непонятен другим. В результате затруднена корпоративная разработка проектов и техническая поддержка кода.
Можно договориться о взаимодействии Perl-программистов в команде, а также выработать собственные и внутрикорпоративные правила для стиля кодирования, оформления и комментирования кода. Это позволяет решить вопросы и совместной разработки, и технической поддержки в слаженной команде.
Однако в реальной жизни программисты регулярно уходят из одних проектов в другие, а соблюдение внутрикорпоративных правил иногда вызывает неприятие. В результате оставшимся членам команды приходится поддерживать чужой код, написанный без соблюдения каких-либо правил. В Perl чаще всего проще и быстрее написать новый код, чем заниматься своеобразной криптографией.
Другим существенным недостатком является отсутствие синтаксиса для объектно-ориентированного программирования. Реализация инкапсуляции (скрытия данных и методов), наследования и полиморфизма (перегрузки) осуществляется на уровне модулей, однако это ограничивает гибкость применения объектно-ориентированного подхода.
Наконец, недостаток, который станет существенным в ближайшем будущем — неопределенность с перспективами Perl. В настоящее время в рабочем режиме используется и поддерживается вебсерверами Perl5. Уже более 10 лет идет работа над разработкой Perl6.
Кроме того, что сам по себе срок разработки достаточно большой, уже в существующем виде 6ка является другим языком программирования, а не очередной версией языка. Код, написанный на 5-ке, интерпретаторами Perl6 не поддерживается, и требуется не доработка, а переписывание кода. Очевидно, если Perl 6 заменит Perl 5, многие программисты перепишут текст не на 6-ке, а на языках достаточно успешных и также свободно распространяемых конкурентов PHP и Python.
Что в итоге?
Несмотря на указанные недостатки Perl 5 остается в тройке лидеров среди используемых интерпретируемых языков. Такая популярность обусловлена фактической мощью этого языка. Эмблема Perl — верблюд. И для многочисленных приверженцев Perl реальная сила языка несравнимо ценнее его внешней непривлекательности.