П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 176195 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 73023 раз(а).

Учебник HTML.
Просмотров 72710 раз(а).

Руководство по PHP5.
Просмотров 43467 раз(а).

Хостинг через призму DNS.
Просмотров 50048 раз(а).

Подборка текстов стандартных документов.
Просмотров 43700 раз(а).

Учебник PHP - Самоучитель
Просмотров 50013 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 50382 раз(а).

Внешние атаки...
Просмотров 40788 раз(а).

Учебник PHP.
Просмотров 35908 раз(а).

SSI в примерах.
Просмотров 26981 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь




Почему я выбрал Перл?

Феликс Либерман
http://felix.da.ru/

Заранее извинюсь перед теми читателями, которые искали учебник или краткое руководство по Перлу. Здесь я не буду рассказывать о синтаксисе языка и не приведу пример программы, печатающей знаменитую фразу "Hello, world!". Предоставим это авторам издательства О'Райли и профессиональным technical writers. [1,2]

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

Итак, о чем собственно идет речь? Неужели в современной программистской среде нет лучшей альтернативы? (естественно, речь идет о программистах "широкого профиля" имеющих выбор в области языка программирования) Что дает мне Перл? В чем его недостатки?

Попробую ответить на все вопросы по порядку. Начнем с представления объекта обсуждения. Не вдаваясь в подробности сообщу, что язык этот относительно молодой, но черезвычайно мощный и интуитивно понятный для программирующего на любом языке. За короткое время Перл прочно обосновался в таких серьезных областях программистского ремесла как CGI, Unix scripting, Web-дизайн. Позвольте, спросит удивленный читатель, а как насчет всеми (не)любимой, но бесспорно самой массовой платформы - Windows? А так, - используется, но в основном в серверных приложениях (ну там NT, Win2K и прочая), хотя Перл безо всяких проблем работает и на стандартных редакциях "окошек". [3] Ну почему, спросит еще более удивленный читатель, программисты всего мира дружными рядами не ринулись строчить Win-приложения на этом языке? А причина до смешного проста: Перл - скриптовый (интерпретируемый) язык, что очень удобно в WWW, но совсем не удобно для стандартного пользователя "окошек", уровень способностей которого обычно колеблется между умением "поставить винды" и знанием "операционной системы эксель" ;-). В результате Перл-программа будет работать только на компьютере, где установлен интерпретатор Перла. Поэтому пользователи многочисленных клонов Юниксов охотно пользуются Перлом в своих ежедневных задачах - ведь им не надо напрягаться с установкой интерпретатора - он подобно Квик Бейсику (извиняюсь за сравнение) автоматически включается в дистрибутив системы. Да-да, я не оговорился, обыкновенные "пользователи" используют Перл - ведь он объединяет в себе синтаксис и фунциональность таких базовых команд Юникса как grep, sed, awk, tr, да и самого Юникс-шелла csh.

Тут программисты на Си/Си++ сразу скривятся - интерпретатор? Но ведь это дико неэффективно! Вынужден согласиться - да, не супер-эффективно, когда речь идет о Бейсике. Но Перл сочетает в себе преимущества компилируемых и интерпретируемых языков - программа переводится во внутренний код перед выполнением (как в Java) и в то же время остается возможность загрузки и выполнения фрагментов "на лету". Добавьте сюда поддержку объектов, возможность подключения подпрограмм написанных на других языках (си, ассемблер), наконец огромное количество прикладных библиотек (от доступа к базам данных и платформенно-независимой графики до работы с Web: разбор HTML, посылка/прием почты, загрузка/посылка по HTTP и FTP), плюс мощнейшие встроенные функции по обработке текста - вот вам вкратце весь Перл. [4,5]

К преимуществам Перла можно отнести и Си-подобный синтаксис (с множеством удобных расширений, хотя любители чистого Си/Си++ могут их не использовать). Несколько смущает "квикбейсиковый" способ объявления переменных (то есть - никакого!) и примерно такая же "явная" типизация объектов. Но при желании эта первая "фича" может быть выключена и тогда (ну совсем как в старом добром Си) каждая переменная должна быть описана явно. А явная типизация объектов вообще очень удобна (сравните стандарты на имена переменных, диктуемые Win-API: p - pointer, s - string, b - byte).

Чтобы проиллюстрировать простоту написания программ на Перле приведу пример из личного опыта: для собственных нужд (и из-за дремучести в области UNIX) мной был написан неплохой Download Manager (как позже выяснилось - со всеми функциями WGET). Написан быстро - по принципу "2 строки вокруг одной работавшей ранее". При этом ничем выдающимся в области программирования я не блистаю, а интернет и сетевые технологии для меня вообще "лес густой". И ведь работает "как часы", так как основную задачу - разбор HTML - на Перле можно решить в две-три строки.

Другой пример - за пару-тройку ночей сляпана довольно корявая (с художественной точки зрения) игрулька для ребенка. Игрулька (написанная на скриптовом! языке) содержит (тупейшую) анимацию, активные объекты, окошко настройки и прочая и прочая. Программа спокойно работает на любом (при наличии Tk не ниже 8.00) Юниксе и на любой Windows-системе (после компиляции в один большой экзешник). При этом (из-за моей серости в программировании) не потребовалось учить все эти дурацкие Win-API, классы окон и подобную философию). Кстати и программирование "специально для Юниксов" мне не знакомо - знай себе манипулируй абстрактными событиями и окошками. [6]

Добавлю, что любой эксперимент с графикой в Перле выглядит не сложнее программы "Hello, world!" - достаточно запустить поставляемую с перл-Tk программку ptksh и мы уже "в Хопре" со всеми функциями графики и даже "историей" команд. При этом можно спокойно переносить куски кода из понравившихся примеров без боязни что что-то "завалится" и придется перезагружаться так как программа "стрельнула" по системной памяти - ведь в Перле нет понятия "выход за границы массива" или "неверный указатель". Это свойство Перла делает его незаменимым с точки зрения простоты отладки - все скаляры, будь то данные, указатели или даже объекты классов всегда являются символьными строками, а баг в программе никогда не приводит к порче реальной памяти. В результате можно отлаживать и "доводить до ума" даже явно "нерабочие" куски.

Не стоит забывать и о таком "необычном" для российского пользователя факторе как легальная бесплатность Перла. Да-да, все вышеописанные чудеса можно безвозмездно (то есть даром) загрузить из Всемирной Паутины и пользоваться ими с чистой совестью.

Итак, перейдя на Перл я получил:

  • мощный, функционально полный язык с огромным количеством надстроек, вплоть до "перегрузки операций"
  • бесплатные и компактные программы интерпретации для всех платформ
  • устойчивую к ошибкам программиста систему + удобный встроенный отладчик
  • возможность строгого контроля за синтаксисом
  • средства манипуляции базами данных и OLE объектами (последнее - только в Win)
  • программный доступ в Интернет и работу с электронной почтой
  • автоматизированную сборку-разборку HTML
  • поддержку сокетов (для связки клиент-сервер)
  • несложную и легко переносимую (Юниксы,Win,Mac) библиотеку графики - Tk

Ну ладно, скажет нетерпеливый читатель, а где же обещанные недостатки? Помимо интерпретируемости, Перл имеет еще один естественный недостаток - программа на нем всегда ОТКРЫТА. Если Вы захотите написать программу-викторину вроде "Поля Чудес" или "Миллионера", то такую игру "взломает" любой малограмотный пользователь. Этого можно избежать откомпилировав скрипт под Windows, но лицензия Перла требует открытости исходного кода и в этом случае. Какой-нибудь Вася Пупкин это проигнорирует, но для серьезных продуктов такое ограничение может стать непреодолимым препятствием. Кстати, сам Win-компилятор является отдельным продуктом (и небесплатным!), к которому (хакеры не дремлют) уже придуман декомпилятор. [7]

Вопросы переносимости также не решены в Перле на 100% (как почти в любом другом языке). Например, программисту в Юниксе гораздо естественнее вызвать какой-нибудь любимый grep или gfind обратившись прямо в шелл, чем искать аналогичную библиотечную (а значит - переносимую) функцию на CPAN (стандартной библиотеке Перл-модулей). В результате один такой вызов приведет к "падению" всей программы под Windows или Mac. И наоборот, стоит Win-программисту "по старой привычке" использовать функции работы с реестром, OLE-объектами и т.п., как программа становится "невыполнимой" в Юниксе.

Несомненным недостатком, вытекающим из ранее указанного достоинства, является "мягкое" отношение к ошибкам программиста. Если не включить модуль строгого контроля (а кому понравится ситуация когда компилятор то и дело требует описать переменную или "ругается" на "подозрительные" вольности с указателями), то обращение к строке как к указателю может привести к неожиданной порче соответствующей переменной. А чего стоят "отрицательные" индексы массива, адресующие массив "с конца"? Если это сделано не умышленно то программа не "завалится", но и не пожалуется на такую вольность.

Если от прочтения последних абзацев у читателя появилось отвращение к этому языку советую перечитать начало статьи (во всем плохом есть немного хорошего и наоборот). Кстати, философия Перла не так примитивна как может показаться - стоит начать изучать этот язык и программировать на нем и у вас тут же возникнет ощущение, что "кто-то тут все хорошо продумал". Но, впрочем, это тема для другой статьи.


Links:

  1. http://www.perl.com
  2. http://www.oreilly.com
  3. http://www.activestate.com
  4. http://www.cpan.org
  5. http://www.perl.org
  6. http://www.perltk.org
  7. http://www.indigostar.com/perl2exe.htm



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту: