|
На главную
Впервые я услышал о perl давным-давно, когда вместо Интернета у нас были только BBS, затачиваемые и поддерживаемые такими же любителями. Интернет нам был доступен только в виде почтовых рассылок все через те же BBS. Что и говорить, тогда я был молод и все такое прочее, что характерно для молодых людей. На опрос "Нужна ли рассылка о perl?" я, гордо задрав голову и прижав к груди килограмовый справочник по C++, ответил "Интерпретируемый? Фу! Да кому он нужен...". Кажется, со мной пытались спорить... В общем, чем дело закончилось, не помню. Наверняка каждый остался при своем мнении. Но этот первый контакт запомнился мне на всю жизнь.
Прошло несколько лет, и теперь я иронично улыбаюсь, глядя на себя прежнего. Пожалуй, теперь я могу понять, что такое родной язык :) Лично для меня perl - это возможность решать задачи, не заботясь о манерах и орфографии. Это как будто пишешь письмо: сосредотачиваешься на мыслях, которые хочешь передать, а не на способах передачи оных мыслей. А можно представить себя в качестве писателя, когда с каждым произведением оттачивается твое мастерство изложения. В конце концов, достигаешь предела, за которым твои произведения начинают интересовать читателя, становятся более эффективными и понятными для других.
Решение задачи средствами неподходящими, превращают программирование в издевательство над собственным интеллектом. Представьте, что вам нужно выкопать траншею. Детским совочком вы сможете копать довольно заковыристые узоры, но на раскоп уйдет время, которое вам вряд ли кто-то оплатит. Можно пригнать экскаватор и дело пойдет быстрее. А вдруг вам закажут траншею шириной в 30 сантиметров, что тогда? Стоять и махать ковшом из стороны в сторону в надежде, что произойдет чудо? А теперь представьте себе платформу на антигравах с манипулятором, к которому привинчиваются различные инструменты. Да еще и форкоп под бампером - если имеющийся манипулятор не подходит, то можно прицепить тележку с таким, который подойдет. Нужен совочек, ковш, паяльник или метла - пожалуйста, рекьюрте или юзайте. Вот что такое perl с точки зрения архитектуры. Это конечно импрессивное выражение, но, по-моему, вполне подходящее.
В решениях критичных по скорости работы, эффективность perl снижается, так как высокая скорость разработки не компенсирует недостаток машинного времени, по сравнению с заранее откомпилированной программой. Вот как раз для этого и существуют специальные языки. Я не думаю, что найдется множество умников, которые будут писать трехмерные игры на perl. Однако, если рассмотреть спектр типовых задач, можно прийти к выводу, что 80-90% решений могут быть реализованы на perl при минимальных затратах на разработку. Perl представляет из себя хороший продукт для большого сообщества. Это образец программного ширпотреба - открытый, расширяемый, документированный и при этом достаточно быстрый.
О, этот синтаксис - отдельный разговор! Представьте себе класс (в смысле школьный:), по которому ходит злобная брюзжащая старуха (типа преподаватель:) с линейкой в руках. Эта мымра постоянно бьет учеников линейкой по голове с криками на счет "Где скобки после имени функции?", "Почему не определен тип данных?", "Третью заповедь ООП не нарушать!". Perl гораздо дружелюбнее в этом отношении. Его типовые языковые обороты являются стандартными для большинства языков. Perl взял из отдельных языков самое лучшее и при этом достаточно индивидуален, что бы оставаться самостоятельным. Во-вторых, большое значение придается контексту выполнения. Простыми словами, perl пытается сделать именно то, что вы подразумевали. Взгляните на пример
push @some_array,new MyClass while @some_array < 10;
На первый взгляд, совершеннейшая абракадабра, однако, это всего лишь более свободная форма записи цикла while. В классическом варианте это выглядит так
while (@some_array < 10){
push(@some_array,new MyClass);
}
Для блюстителей чистоты и ясности то же самое, но в блоке for
for (my $i = 0; $i < 10; $i++){
$some_array[$i] = new MyClass;
}
Здесь проявляется одна из основополагающих языка - принцип TIMTOWTDI (производное от "There Is More Than One Way To Do It"), что в переводе на русский язык означает "Существует более чем один способ решения одной и той же задачи".
Однако perl это не просто язык, как инструмент разработки. Достаточно выразительная цитата из "Programming Perl" в полной мере отражает философию сообщества perl -
"Безусловно, популярности Perl способствует его бесплатное распространение. Но этого недостаточно для объяснения феномена Perl, поскольку многие бесплатно распространяемые пакеты не преуспели. Дело не в том, что он бесплатен; он доставляет удовольствие. Люди чувствуют желание творить на Perl, поскольку он дает свободу самовыражения: можно выбирать между целями оптимизации - скоростью работы компьютера или скоростью программирования, между многословием и выразительностью, между "читабельностью" и возможностью поддержки или повторного использования, или переносимости, или обучаемости, или поучительности." Лично мне нравится такое объяснение популярности perl и я полностью с ним солидарен. Я надеюсь, что вы присоединитесь к сообществу perl, что бы стать еще быстрее, выше, сильнее.
| Осторожно, время |
|
|
Прошло еще несколько лет. К сожалению, perl не реализовал свой потенциал. Ларри больше не участвует в развитии языка, шестая версия до сих пор не вышла в релиз, для perl-а не создали таких мощных платформ разработки как, к примеру, для java, для разработки веб-приложений есть специализированные языки, обладающие явными преимуществами перед perl и т.п. и т.д. Масса условностей, которые не позволили потенциалу perl реализоваться на 100%. Теперь бородатый старичок тихонько стоит в сторонке и используется в основном для решения тех задач, что зашифрованны в его имени - Practical Extraction and Report Language. Он прекрасно справляется с системными задачами, кто-то пишет на нем по-старинке, но такого широкого распространения, какого я от него ожидал, он так и не получил. Жаль :(
|
Наверх
|