Веб-разработка / Web фреймворки на Perl: краткий обзор

в 17:22, , рубрики: perl, фреймфорк, метки: ,

В сети не так много информации о web разработке на perl вообще, а про фреймворки написано и вовсе очень мало. Поэтому я возьму на себя такую ответственность и напишу пару слов обо всём этом.
На полноту не претендую, но некоторые, на мой взгляд наиболее интересные фреймворки я опишу.

Невероятно, но факт: некогда популярный у веб-разработчиков язык — perl, теперь всё реже рассматривается нашими начинающими коллегами как достойный инструмент. Мне кажется, что это несправедливо, потому что нет ни одной объективной причины для этого. Критики, безусловно, найдут много недостатков и в самом языке, и во фреймворках на нём, но не будем забывать — мало что вокруг нас идеально, а недостатки, что ж, они есть у всех — и у RoR, и у Zend, и у, не побоюсь этого слова, Django.

Raw CGI/FCGI/mod_perl
Давным давно, а далекой далекой галактике...
Эээ, когда-то, когда Web был маленький и глупый, веб-разработчики писали приложения в редких случаях, когда по каким-то причинам нельзя было ограничиться статическим html — это были счётчики, баннеры, простейшие гостевые книги, etc.
Был придуман довольно примитивный протокол обмена информацией между веб-сервером и приложением — CGI (Common Gateway Protocol). Со своими задачами приложения справлялись, всё было чудно. Как раз тогда появилсяAmazon, софт на котором был написан на Perl.
Время шло, нагрузка росла, появился FastCGI и mod_perl для Apache, но концепция разработки кардинальных изменений не претерпевала. Кстати, для кого-то это будет сюрпризом, но PHP в те дни был набором CGI скриптов на Perl.
Кто-то мешал в кучу код и данные, кто-то делал шаблоны, но в целом приложения были простыми, обработка данных примитивной и шло бы оно всё так и дальше, но…
Случился Web 2.0

Приложения как-то очень быстро стали толстеть, все чаще требовалось взаимодействие с пользователями и значительно усложнились веб-формы, которые передавались для обработки на сервер.Аксиома: если что-то где-то усложняется — значит появляется инструмент для упрощения этого чего-то.
И инструменты стали появляться один за другим. Из неудовлетворенности вырастали всходы будущих популярных фреймворков, да и, что греха таить, целых новых языков. Появились Ruby, PHP, Ruby On Rails, etc.
Perl на их фоне как-то терялся, доля его в разработке размывалась и, что любопытно, на самом perl никаких фреймворков не появлялось. Да, были инструменты для упрощения работы с формами, но ничего похожего на удобство того же RoR не было. Так perl потерял веб, во многом благодаря тому, что был недружественен к новичкам, а старички были и так довольны всем. Так что те крикуны, которые закапывают perl и говорят о его непригодности для веб-разработки, это просто неофиты, которые не постигли дзен и взяли себе инструменты с меньшим порогом вхождения.
Разумеется, такая ситуация не могла длиться вечно, веб-фреймворки на perl появились и о них то я сейчас и напишу.
Catalyst

Маститый MVC фреймворк, авторы пилят его давно, за это время он оброс плагинами, поклонниками, фанатами, ненавистниками, словом — всем тем, чем и положено обрасти известному продукту.
На мой вкус, порог вхождения несколько высоковат, хотя документация в порядке и quick start можно очень даже быстренько исполнить. Полон (хоть и менее, чем Django) магии и оттого после старта продолжать становится уже не так быстро.
Mojolicious

Вырос из неудовлетворенности Catalyst-ом. Ребята выкинули магию и сделали довольно простой, но, в то же время мощный, MVC инструмент. Словом, он прекрасен. Как поставить, пользоваться и получать удовольствие и профит — читать здесь.
Dancer

Простой, как валенок, мощный фреймворк, в чем-то напоминающий RoR. Его любят, как написал один падаван, «старые дядьки, за 30». Я от лица «старых» дядек позволю себе с ним не согласиться, хоть и люблю Dancer:) Но не в силу излишней консервативности или, я бы даже сказал, заскорузлости взглядов, а просто потому что он простой, как валенок и в то же время удовлетворяющий 95% моих обычных запросов к фреймворку. Ещё вот что, это не вполне MVC, поскольку реализацию M, строго говоря, вы можете выбрать любую или вовсе не использовать, а C — может включать куски V. Дядькам, которые не парятся по поводу каноничности(тм) на эти особенности наплевать. Рекомендую для небольших и средних проектов, без особых запросов, типа парсинга html и обработки dom дерева.
Все эти фреймворки отлично подходят для создания современных, высокопроизводительных приложений, все умеют PSGI и показывают хорошие показатели скорости разработки и скорости исполнения.
Есть ещё пучок фреймворков на perl, про которые я не написал, поскольку, как мне кажется, они совсем не mainstream. Google легко найдет их для вас, буде вы захотите узнать больше о вопросе. Надеюсь, я не разочаровал вас, мои дорогие читатели, столь неполным обзором, без графиков, замеров производительности и прочих атрибутов серьезных исследований. Я верю, что вы понимаете насколько эта тема обширна и почему невозможно впихнуть невпихуемое в рамки одной статьи на Хабре. Искренне надеюсь, что смог заронить в вас интерес к perl и разработке на нем, и что последующий путь воина perl вы пройдете самостоятельно, с высоко поднятой головой :)

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js