recoder: (Default)

В освободившееся время решил посмотреть, что творится в перловом мире, как там продвигается Перловый Ренессанс. Шестой perl всё ещё пишется, Modern::Perl тоже идёт своим путём. Зато веб-фреймворки расцвели пышным цветом. После големоподобного Catalyst'a народ двинулся назад, к корням, к простоте. Написали универсальный Plack и начали ваять: Gantry, Dancer, Mojo...

Сел поиграться немного с Mojo - ощущения смешаные. С одной стороны - всё красиво задумано и правильно выстроено, а с другой стороны - опять минимальная документация, опять надо курить исходники до полного просветления. Но по сравнению с Catalyst'ом - всё равно проще. А по сравнению с Рельсами - всё равно не так изящно. Зато Perl.

Думаю, следующий свой микро-проектик попробую сделать на Mojolicious, сам пройдусь по всем граблям, наберусь нужного опыта. Тогда будет ясно - давать ли перловым фреймворкам второй шанс или уже не оглядываясь переходить на Ruby...

» buzz perl

Modern Perl

May. 2nd, 2009 11:08 pm
recoder: (Default)

Провёл праздники в перловых пучинах, выбираюсь оттуда просветлённый. Дальше - только про Perl )

perl

recoder: (Default)

Поэкспериментировав на праздниках с Perl'ом и Catalyst'ом, испытал чувство глубокого удовлетворения. После прокуривания всех мануалов и сырцов всё пишется быстро, код получается компактный и мощный. Как завещал дедушка Ленин - буквам тесно, а мыслям просторно! Любая типичная задача уже решена на CPAN'е, причём обычно несколькими способами, так что приходится концентрироваться только на своих собственных проблемах. И это чертовски приятно.

А потом подумалось, что как это не прискорбно, perl никогда не станет распространённой enterprise platform. Нет, на нём конечно создавались и будут создаваться большие проекты типа del.icio.us, LiveJournal или Amazon. Но это будут оставаться проекты небольших групп увлечённых разработчков, а не традиционных корпоративных команд. С обычным корпоративным духом perl, увы, не совместим, причём по многим причинам:

  • Enterprise Software - это не технологии, это религия. Религия большого, дорогого и сложного. Требующего больших бюджетов, сложных процессов, множества сейлзов, менеджеров, консультантов и IT-инженеров. Perl с его мощностью и лаконичностью сюда вписывается плохо.
  • Perl умеет выражать мощные задачи в крайне компактной форме, что привносит сложности в процесс менеджмента, делая последнюю понятную метрику LoC совсем бесполезной.
  • Perl и его TMTOWTDI (плавно переходящее в TAFTMWTDI) не позволяют решать задачи методом "больших батальонов". То есть набирать толпу народа на проект и добавлять свежее мясо по мере роста потребностей или увольнений утомившихся.
  • Признаемся - Perl спокойно даёт любому программисту даже не пистолет для простреливания ноги, а огромный арсенал вплоть до ядерных боеголовок. (В отличие от Java, дающей каждому по игрушечному пистолету с войлочными пульками.) Так что пускать к разработке кого попало - это верный путь к полному развалу.
  • Наверное, его open-source'ная натура тоже плохо совместима с традиционными корпоративными концепциями

Отсюда наверное можно сделать любопытный вывод: где успешно используют perl - там не просто ещё одна большая корпорация, а что-то заслуживающее внимания.

coding perl

Part2: кстати - с LISP'ом всё должно быть примерно так же...

recoder: (Default)

Намедни прочитал отличный текст "If programming languages were religions...", в котором расклад по языкам и религиям получился такой:

  • C — Judaism
  • Java — Fundamentalist Christianity
  • PHP — Cafeteria Christianity
  • C++ — Islam
  • C# — Mormonism
  • Lisp — Zen Buddhism
  • Haskell — Taoism
  • Erlang — Hinduism
  • Perl — Voodoo
  • Lua — Wicca
  • Ruby — Neo-Paganism
  • Python — Humanism
  • COBOL — Ancient Paganism
  • APL — Scientology
  • LOLCODE — Pastafarianism
  • Visual Basic — Satanism

Попрограммировав пару вечеров на Perl могу заявить, что так оно и есть! Разрабатывая на Перле - реально чувствуешь себя магом voodoo. Пишешь много непонятных закорючек страшной силы, похожих на заклинания. Иногда они срабатывают, иногда нет... Периодически обращаешься к Великому Божеству CPAN'a - и он иногда тебе помогает, а иногда и нет. Но рано или поздно ты собираешь все нужные ингридиенты для вызова финального заклинания - и оно собирается и работает.

И это прекрасно!!! Ради этого и стоит программировать!..

coding perl

Perl 20!

Dec. 18th, 2007 07:17 pm
recoder: (Default)

Оказывается сегодня исполняется 20 лет лучшему языку программирования - Perl. Двадцать лет назад усатый дядька Larry Wall выложил самую первую версию PERL (Practical Extraction and Report Language). И понеслось...

За прошедшие 20 лет язык оброс фичами, обзавёлся самым большим репозиторием библиотек CPAN и сотнями фреймворков. На нём было написано туча огромных проектов и бесчисленное количество мелких. Кстати - и сам LiveJournal написан на перле.

Ну а кроме того, писать на нём удобно и приятно - как мелкие скрипты под сиюминутные задачи, так и проекты побольше. А вот когда мы наконец-то дождёмся Perl6 - и вовсе наступит полное и всеобщее счастье...

Не вижу повода не выпить!

perl

recoder: (Default)

Для домашнего проекта поставил себе задачку: по форматной строке вида "Я [сразу|немедленно] [пошёл|поехал|пополз|попёрся] разбираться с [делами|братками]." сгенерировать полный список всех возможных вариантов такой строки. Посидел с карандашиком минут 20, наваял примерно такой код:

Много загогулин )

Добравшись до компа, втоптал. И - заработало всего после двух исправлений. Старею видать... Надо посидеть помедитировать - можно ли всё это проще или изящнее изобразить? Всё-таки люблю я perl.

perl coding

recoder: (Default)

Чем больше смотрю на Catalyst — тем больше он мне нравится. Ну во-первых, тем что он перловый. Во-вторых, вышло так, что именно такой фреймворк я всегда и хотел. Изящный дизайн, мощь всяких конвенций по умолчанию и гибкость возможностей подхачить практически всё.

Да, на первый взгляд он неочевиден. Но у этого даже есть плюс — в Catalyst не суются пионэры и прочие индусы. Мда, и с документацией у него не совсем хорошо (хотя и лучше с каждым релизом). Однако тут применим принцип «лучше день потерять, зато потом за полчаса долететь». И как только приходит осознание стройности концепции — тут и снисходит реальная благодать.

От восторга даже пошёл, сделал коммунити [livejournal.com profile] ru_catalyst. В профиль прописал кучу разных полезных ссылок. Думаю теперь свои откровения выкладывать туда по мере появления свободного времени.

Кстати, некоторые из аффтаров Catalyst’a уже успели решить что «опять ничего не получилось». И пошли делать свой новый фреймворк, с блэкджеком и шлюхами — Woodstock. И тут же передумали и переименовали его в Mojo. И пока что больше о дизайне нового фреймворка ничего не слышно…

А мы пока останемся с Catalyst’ом. Надо будет свой хомяк на него перенести, добавить всяких красивостей и интерактивностей, а заодно — поднабраться бесценного опыта.

perl catalyst

recoder: (Default)

Уфф... Разобрался наконец с Catalyst'ом. За что большое спасибо [livejournal.com profile] il_duco и бесчисленным блоггерам в Сети.

Это конечно чистая магия и шаманство в его лучшем виде. Документации практически нет, how-to нет, примеров очень мало. Причём большинство примеров расчитано на такой уровень, который объектности Catalyst'а скорее всего и не поймёт. А настоящему перлофилу нужно что-то другое. Написать что ли самому?

Пока разбирался в Catalyst'e, обнаружил кучу вкусностей (о которых наверное все кроме меня знали):

  • AnnoCPAN
    Такой CPAN с подробными аннотациями к каждому модулю и возможностью всем писать комменты.
  • Class::DBI и Class::DBI::Sweet
    Лёгкие и удобные ORM: на базе данных накрывает таблицы удобным абстрактным интерфейсом, в котором можно определять всякие фичи типа триггеров, поддержки целостности, каскадных удалений и пр.
  • Class::DBI::Loader
    Модуль для автоматического создания классов для Class::DBI по схеме базы. Pure magic!

Вообще Catalyst оказался мечтой меня-вебдевелопера: среда для сервлетов на perl'е. Теперь его бы ещё проверить на устойчивость под нагрузками, посмотреть производительность. И - можно будет заниматься делом!

Так что рано меня ещё в менеджмент списывать! Я ещё кой-чего руками умею делать и новое изучать.

perl coding

recoder: (Default)

Все уши уже прожужжали с этими Рельсами… Ну а что делать мне, если я не люблю Ruby? Понятное дело — искать perl’овые аналоги. Пошёл, поискал, нашёл. Даже несколько: Maypole, Catalyst и всякие поделки вроде Jifty, Perl-on-Rails и пр.

Catalyst действительно оказался рулезом о котором я мечтал всю webdev’ную жизнь. Вот только поиметь его оказалось делом довольно непростым.

Первая проблема, он не захотел вставать на мой Denwer. Ну не захотел — не беда, поставлю самого по себе, благо у него и встроенный http-сервер имеется. Тут встаёт вторая проблема — он не ставится с ActiveState’овских репозиториев. Уж не знаю почему, лениво разбираться было. Пошуршал по Гуглу, нашёл умельца, который знает тайные удары в бубен для установки. Вроде бы как поставился. Но работать не захотел.

Орешек знаний твёрд, как говорится. Я уже даже начал подумывать над советом ’поставьте себе Ubuntu и не мучайтесь’. Но тут обнаружился замечательный дистрибутив Cat-In-A-Box. Встал с пол-пинка и заработал слёту.

И тут выяснилось, что долгие годы ручного написания CGI-скриптов и корпоративных сервлетов так прокомпостировали мой мозг, что начать мыслить в терминах MVC мне очень тяжело. И не помогает ни чтение хороших вводных, ни курение мануалов… Видимо, нужен знающий учитель-гуру, который бы вправил мне мозги, помог бы сделать три-четыре первых шага и вообще наставил на путь истинный.

А пока буду продолжать заниматься самообразованием.

perlcoding catalyst

recoder: (Default)

cover
Читаю книжку "Perl 6 and Parrot Essentials" и не перестаю поражаться элегантности нового перла.

Сначала рассказано про принципы дизайна языка:

  • Principle of Simplicity - что простое решение лучше сложного
  • Huffman Coding - часто употребляемое должно занимать меньше места
  • Principle of Adaptability - если надо будет - Перл легко расширить!
  • Principle of Prominence - важные структуры должны сами бросаться в глаза
  • Principle of End Weight - простые и важные вещи должны быть в начале
  • Principle of Context - люди мыслят в контекстах, так пусть и Перл тоже использует контексты
  • Principle of DWIM - Do What I Mean, язык должен быть интуитивным (для людей с правильной интуицией)
  • Principle of Reuse - не надо плодить лишние сущности и правила, если можно использовать старые в новом контексте
  • Principle of Distinction - действительно разные вещи должны выглядеть разными
  • Principle of Freedom - свободу программисту в его самовыражении! (ну и TMTOWTDI)
  • Principle of Borrowing - хорошую фичу и из другого языка позаимствовать не грех

Ну приятно же когда умные люди заботливо пишут язык для других умных людей!

Code Pearls )

Бородатый дядька Larry Wall - форева!

books
perl

recoder: (Default)

Читаю в perl6-language@perl.org:

I only see like() as counting the methods available through the public contract to determine its percentage.  Something you could do by hand with .can()But there wouldn't be much point in putting it in if people won't use it.  On the other hand, if people want it and it's not there, they'll reinvent it, poorly.

Выделение моё. Не думаю, что создатели Java могли хоть раз произнести такую фразу...

computer_science perl

recoder: (Default)

Сегодня играл в серьёзного девелопера. Встала задача вычистить по диал-апу 11M мусора из почтового адреса. По этому поводу 30 минут изучал RFC, потом с ещё полчаса помудохался с telnet'ом. После чего плюнул и написал утилиту на Перле за 5 минут.

Мораль: 1. Перл рулит 2. Серьёзным девелопером быть легко

perl

December 2024

S M T W T F S
1234567
891011121314
15161718192021
22232425 262728
293031    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 11th, 2025 05:34 pm
Powered by Dreamwidth Studios