Три полных пэ. Python, PHP или Perl? Выбираем последнюю букву в слове «LAMP»Александр Краснощеков (akrasnoschekov@gmail.com) В рамках этой статьи мы будем выбирать лампочку. Для тех, кто еще не в курсе, поясню: LAMP=Linux+Apache+MySQL+PHP/Python/Perl - самая популярная, одобренная ГорСветом из «Дневного Дозора», электротехническая связка для освещения всемирной Сети. С первыми тремя буквами акронима все ясно (на самом деле, это только кажется), а вот с выбором четвертой мы сейчас и попытаемся разобраться. PHP a.k.a. простойPHP (также известный, как Personal Home Page и PHP: Hypertext Preprocessor) - это скриптинговый язык, который отлично подходит для web-разработки. PHP - не что иное, как оболочка вокруг языка С, с управлением памятью (подсчет ссылок) и гибкой системой типов. Обычно PHP выполняется на web-сервере, обрабатывая код на входе и генерируя web-страницы на выходе. Так же, как и во многих других интерпретируемых языках программирования, PHP-скрипты обычно хранятся в исходниках даже на производственных web-серверах. Это увеличивает время их выполнения за счет компиляции на лету. PHP выполняет код, заключенный в тэг В этом весь он: характерный пример скрипта на «пыхе». Выводит: var
Огромное количество сайтов (около 20 млн.) в Сети написано на PHP, включая такие гиганты, как Wikipedia, Yahoo!, Facebook, Digg, WordPress, YouTube. Популярность PHP основана на том, что его легко использовать, и вставки легко читаемы в HTML-документах. Использование PHP в паре с твоим любимым HTML-редактором — это отличный путь к созданию динамического контента при минимуме затрат на программирование. Легкость разработки, основанная на философии PHP («структура не важна»), имеет обратную сторону. Быстро научившись писать на «простом» PHP, ты забываешь о соблюдении грамотной структуры приложения, правилах хорошего тона, и когда твое приложение переходит границы «небольшого», ты начинаешь вязнуть в собственноручно написанном коде. В качестве аргумента «против» можно привести и статистику уязвимостей PHP из National Vulnerability Database: 35.87%(!) уязвимостей всего программного обеспечения берет на себя PHP. Трюки на PHPПроверка длины строки работает быстрее, если проверить наличие символа:
…а не считать длину всей строки:
Поиск в массиве по ключу:
Работает в три раза быстрее, чем по данным:
Несмотря на недостатки PHP и орды недовольных им разработчиков, значительно большему проценту кодеров он нравится. Можно сказать объективно: сегодня PHP — «рабочая лошадка» интернета. Его аргументы внушительны: просто выучить, просто писать, просто размещать. Python a.k.a. красивыйПитон – преимущественно ночное животное. День проводит в укрытии (норы, дупла, груды опавших листьев), а ночью или в сумерках выходит на охоту. Хорошо плавает. Вырастает до 1,5 метров. Кроме того, Python - это один из языков высокого уровня, общего назначения. Базовый синтаксис и семантика Python'а минималистичны, а стандартные библиотеки, напротив, огромны и сложны. Python поддерживает несколько парадигм программирования (ООП, императивное и функциональное) и обладает такими фичами, как полностью динамическая система типов и автоматическое управление памятью. Python разрабатывался как легко читаемый язык. Его ключевая идея: «Должен быть только один, и лучше всего очевидный, способ сделать это». Отсюда следует, что код, написанный одним разработчиком, может легко развиваться и поддерживаться другим. Кроме того, Python «навязывает» программистам дисциплину (использованием отступов и синтаксисом кода). Это позволяет легко поддерживать крупные приложения. Я говорю «отступы и синтаксис», потому что в Python'е для отделения блоков кода используются отступы, а не фигурные скобки (как в С, С++,...) или ключевые слова (как в Delphi) – в общем-то, исключение из правил. Увеличение отступа идет после определенных операторов (if, def, for, try ...), a уменьшение указывает на конец текущего блока. Быстрая сортировка на Python. Одно слово - элегантный Python успешно внедряется в программные продукты как скриптинговый язык, используется в 3D-анимации (Maya, Softimage XSI, Blender) и редакторах изображений (GIMP, Inkscape, Scribus, Paint Shop Pro). На нем даже написана пара видеоигр. Трюки на ПитонеДекоратор позволяет завернуть одну функцию в другую и...вуаля, вызов function() магически напечатает 64 Несмотря на тот факт, что Python используют Google, Yahoo!, CERN и NASA, у него есть серьезная проблема с популярностью, а точнее - распространенностью. Люди, которые им пользуются, влюблены в него, но большинство рядовых разработчиков даже не слышали о Питоне (хотя сейчас ситуация улучшается). Когда приходишь в книжный магазин и видишь 20 книжек про PHP/MySQL и две про Python, создается впечатление, что широкие программерские массы идут не в том направлении. Причина все та же - PHP проще и, несмотря на все недостатки, ты сходу сможешь написать web-страничку на PHP, в то время как Python потребует, как минимум, подключения библиотек и умения работать с ними. Люди, перешедшие с PHP на Python, сразу начинают кричать, что PHP не имеет шансов против Python'a и что они ни за что не вернутся обратно. Конечно, можно не обращать внимания, но эти крики основаны на фактах: выучив Python, ты начинаешь получать от него удовольствие. Однако необходимо уточнить: мало его просто выучить, нужно разобраться с использованием платформ для создания web-приложений. В связи с этим программеры часто задают себе вопрос: «А зачем мне тратить свое время (время - деньги) на изучение Python'а, если за неделю с нуля можно начать писать на PHP?». Ответ прост: потому что разработка приложений на Python'e идет быстрее на 30%, а его уязвимости составляют всего 0.67% от общего числа, против 36% у PHP (Python неуязвим :)). Perl a.k.a сильныйPerl относится к языкам программирования общего назначения. Разработан он для рутинной обработки текстов и составления отчетов и сейчас используется для решения широкого круга задач, включая системное администрирование, web-разработку, сетевое программирование, игры и создание GUI. Perl, скорее, призван быть практичным (легким в использовании, эффективным и полным), чем красивым. Он поддерживает несколько парадигм программирования (впрочем, как и Python с PHP), управление памятью (подсчет ссылок), встроенную обработку текста и кучу сторонних модулей. Простые числа на Perl. Сильно, но непонятно Perl чем-то похож на волшебную палочку. Гуру Perl'а часто считают себя волшебниками с толстыми волшебными жезлами в руках. Perl обладает богатым синтаксисом и следует философии «Должно быть много способов сделать это». Однако встретить серьезного программиста на Perl в наше время уже не так легко. Perl нужно учить дольше, чем Python, не говоря уже о PHP, и за ним закрепилась прочная репутация языка «только на запись». Трюки на Перле1. Избавляемся от половины массива:
2. Добавляем что-нибудь в сводный индекс массива:
3. Превращаем "ThisTextWithoutSpaces" в "This Text Without Spaces":
Выбор падает на Perl в случаях, когда речь идет об обработке больших объемов данных. Кстати, создание на нем масштабных приложений требует хорошей координации между разработчиками, заставляя их вспоминать о таких вещах, как согласование стиля кода, наставничество и работа в команде. Говоря о web-разработке, необходимо упомянуть о системе шаблонов Perl'а. Когда создают динамические web-страницы, обычно хотят использовать что-то, что позволило бы сделать работу быстро и грязно. Конечно, это неправильно, но зато убирает барьеры. Осваивая Perl, тебе придется учить язык, систему шаблонов и интерфейс СУБД, и все отдельно. Если тебе не симпатизирует слово «учить» или «учить долго», подумай о PHP. Ведя речь о крупных web-приложениях на Perl, мы подразумеваем bbc.co.uk, Amazon.com, LiveJournal. По уязвимостям Perl занимает второе место (из трех) с 9.54% – в принципе, не так уж плохо, учитывая его сложность и многолетнюю историю. ВыводыУже все? А где же бэнчмарки? Я не приводил тестов на производительность для каждого языка, потому что в конечном итоге язык разработки редко является «узким местом» системы, а с ростом производительности компьютеров более ценным становится время, затрачиваемое разработчиком на разработку/поддержку системы. Для особо интересующихся скажу, что все три языка работают примерно с одинаковой скоростью и окончательный выбор по критерию «скорость» будет зависеть от конкретной задачи (подробнее на http://shootout.alioth.debian.org/gp4). Но если тебе все-таки вздумалось заняться разработкой крупных корпоративных приложений, критичных к скорости выполнения, тебе (на всякий случай) стоит также обратить внимание на такие технологии, как .NET и JSF. Возвращаясь к нашей троице, отмечу огромное потребление памяти PHP-скриптами и прекомпиляцию скриптов Python'a, а в заключение скажу, что все три P:
Отсюда следует, что выбор любого из P — это уже хороший выбор. Мнение эксперта. Михаил Фленов, Профессиональный программист. Автор множества бестселлеров. Основал компании Heapar Software и CyD Software Labs
Михаил, каким вы видите будущее PHP? PHP становится лучше или медленно вытесняется конкурентами?IMHO, язык PHP будет жить еще долго и счастливо. Одна из причин тому – тот факт, что в свое время язык получил большую популярность и на нем написали множество крупных и мелких проектов. У меня 10 сайтов (не считая двуязычных вариантов), и из них 8 написано на PHP и два на ASP.NET. Буду ли я переписывать 8 сайтов на более мощном языке программирования только потому, что он мощнее? Конечно же, НЕТ. И точно так же поступят большинство человекоразумных в тех компаниях, которые используют PHP. Для того чтобы Yahoo переписала все свои программы, нужны сотни миллионов долларов. Даже если какая-то платформа работает на 50% эффективнее и можно будет сэкономить ресурсы датацентров, намного дешевле будет расширить мощности датацентров, чем переписывать код. Возможно, новые разработки будут писаться на новой платформе, но существующий код большинство переписывать не станет. Поэтому PHP еще долго будет жить счастливо, вне зависимости от действий конкурентов – уж слишком он популярен. Чтобы меня что-то заставило перейти на другую платформу или язык, я должен увидеть реальное преимущество для себя и посетителей моих сайтов. Единственное, чего может не хватать крупным разработчикам в PHP – хорошей поддержки многоядерности и многопроцессорности. Это может стать серьезной проблемой в среде Web 3.0 или даже Web 4.0, где свою эффективность смогут показать платформы .NET и Java, которые лучше готовы к будущему на уровне платформы. Но рынок таких задач настолько мал, что большинство не обращает внимания на это «узкое место». PHP не идеален, но он прост, удобен и достаточно эффективен для построения малых и средних сайтов. Некоторые компании умудряются строить на нем целые порталы, хотя это не главная стихия PHP. На рынке крупных систем (уровня предприятия) позиции PHP слабые и таковыми останутся, но для домашних страничек, CMS, форумов и даже сайтов компаний платформа LAMP с PHP в хвосте будет жить. Мнение эксперта. Роман «Spirit» Хоменко, лейтенант милиции, постоянный автор раздела «Кодинг»
Роман, оправдано ли всеобщее восхищение Python'ом? Действительно ли разработка на нем идет в разы быстрее?Теоретически я тут во всю должен расхваливать Python, говорить какой он суперовый, и я бы мог, ведь это чистейшая правда. Но... если ты новичок в веб-программинге, то учи PHP - не ошибешься. Ведь Python представляет собой язык общего назначения, а PHP - полностью веб-ориентирован, все в нем заточено под веб-кодинг. Когда же выучишь PHP достаточно хорошо, поймешь ООП, MVC и другие сложные слова, а потом еще и начнешь использовать фреймворки... Вот тогда попробуй связку Python + Django (или какой-то другой фреймворк) и, скорее всего, ты полюбишь Питон за красоту программ, за библиотеки, за скорость как разработки, так и его работы – за то, что он просто есть :). Python - мощнейший язык, красоту которого не поймешь при написании простенькой домашней страницы. Лишь при разработке больших проектов можно почувствовать его силу. Хотя может быть, ты считаешь, что уже готов к нему? Тогда приготовься к тому что:
Но это мелочи. За Python'ом будущее. Он сейчас маленький ребенок, который только научился ходить, но скоро вырастет. И может, именно тебе суждено написать лучший питоновский блог-движок, форум-движок, да и просто лучший сайт. Мнение эксперта. Дмитрий «Forb» Докучаев, редактор рубрики «Взлом»
Дмитрий, насколько силен Perl? Просто ли его выучить?На мой взгляд, Perl - один из простых языков. С его кроссплатформенностью и открытой модульной архитектурой можно творить многие интересные вещи. Но в настоящее время, бесспорно, web-программирование проще и легче реализовать на PHP, а вот консольный кодинг с последующим созиданием великолепных административных скриптов лучше поручить Perl'у. Что касается трудности языка, то Perl прост и сложен одновременно. Не стоит пытаться выучить его целиком. Достаточно понять азы, просмотреть основные модули и хоть немного научиться составлять регулярные выражения. Я начал изучать Perl еще в далеком 1999 году, и этот язык не раз выручал меня при решении довольно сложных задач. Короче говоря, хочешь быть крутым бородатым сисадмином - учи Perl. CDНа диске лежат последние версии самых известных платформ для разработки web-приложений: Symfony 1.2.7 (PHP), Django 1.0.2 (Python) и Catalyst 5.80003 (Perl). WWWINFOПрежде чем бросаться в бой, выбрав приглянувшуюся «P», стоит обратить внимание на то, что не все хорошие языки web-программирования начинаются с нее. |