Python vs PHP

Главные вкладки

Аватар пользователя axel axel 6 июня 2009 в 2:31

Побудило написать этот пост обсуждение http://drupal.ru/node/30251. Отмечу, что я давно применяю оба этих языка. Но если программирование на php для меня - это частая необходимость, то вот программирование на питоне хотя случается реже, доставляет эстетическое наслаждение. Похожее удовольствие вызывал только лисп, но с ним в практическом применении не сошлось.

Не буду льстить себе, я наверняка ошибаюсь в части суждений, но думаю опыт работы с обоими языками позволяет мне высказать свои субъективные суждения без значительных ошибок. Итак, чем мне больше привлекателен питон в сравнении с php и почему последний продолжаю использовать?

  • Пространства имён в питоне (появились также в последних версиях php) - библиотека функций удобно поделена на модули, импортируемые при необходимости (против глобальной доступности кучи не всегда нужных функций в php). Отсюда же длинные имена в php (см. друпальские многобуквенные modulename_function_name()), как средство разделить пространства имён (в друпале - разделить между модулями).
  • Имена функций и аргументы в стандартной библиотеке питона выглядят более единообразно, нежели в php (к примеру explode принимает аргументы в строгом порядке, а implode - в каком угодно из-за исторического наследия, и таких примеров немало).
  • Питон изначально ориентирован на работу с юникодом, при соблюдении соглашений (строки с u"") все функции поддерживают работу с юникодом и ввод-вывод скажем в utf8 не составляет проблем. В php не все функции имеют аналоги в библиотеке mbstring, куда вынесена поддержка национальных кодировок и юникода.
  • PHP только в последних версиях догоняет (не уверен, что догнал полностью) питон в реализации объектной модели - поэтому огромное количество не самых старых программ на php используют ООП неактивно или вообще не используют, из-за слабости ООП в php4 (пример - Drupal, в котором только в версиях 6 и 7 в модулях ядра появился код с ООП).
  • Элементы функционального программирования в питоне более развиты (ср. синтаксис и удобство работы с лямбда-функциями в питоне и php).
  • Строгий синтаксис питона (принудительные отступы) диктует единый стиль оформления программ - программы из разных проектов и библиотек смотрятся более единообразно.
  • В питоне более развиты структуры данных и средства работы с ними выглядят единообразно (ср. механизм срезов списков в питоне и разные функции на те же задачи в php. Пример с выборкой первых/последних трёх элементов в питоне: myvar[:3] и myvar[-3:], где myvar может быть списком (по сути аналог массива), может быть строкой - синтаксис един, и решения php: array_slice($myarray, 0, 3) и array_slice($myarray, count($myarray) - 3) для массива, а для строк уже нужна другая функция - substr($mysqtr, 0, 3) и substr($mystr, -3) (а если это юникодная строка, то уже mb_substr)
  • В питоне оптимизация и компиляция в байткод встроена в интерпретатор, в php для этого требуются отдельные программы - акселераторы и оптимизатры (работает и без этих дополнений, но по сути ни одна продуктивная инсталляция без них не обходится)
  • Питон лучше адаптирован к использованию в качестве языка общего назначения (и собственно на нём довольно много десктопных и серверных программ не имеющих отношения к вебу), php - ориентация исключительно на веб (хотя есть проекты по использованию как общецелевого я/п - поддержка Gtk и Qt для создания GUI к примеру). Однако, набор библиотек под разные невебовские задачи в питоне определённо шире - можно писать десктопные приложения, демоны, игры с opengl и использованием мультимедиа, утилиты для администрирования, да практически всё, на что хватает скорости интерпретируемого языка.
  • По скорости, питон и php примерно одного порядка. См. http://shootout.alioth.debian.org - в части тестов лидирует питон, в части php, по расходу памяти питон выглядит лучше. Вообще, старые версии питона работали быстрее и помню по тем же тестам на alioth.debian.org php вечно проигрывал по всем статьям, но с новыми версиями питон к сожалению всё тормознее и новая версия python3 в этом плане не радует, поэтому скорость питона больше не аргумент "за" (с другой стороны есть странный миф что питон медленее и жрёт больше ресурсов чем php - вот уж точно не медленнее и не больше, но вполне может быть при сохранении тенденции какой-нибудь python5 будет медленнее php7? Smile
  • С другой стороны - php популярен и php используется в друпале Smile К тому же язык не стоит на месте и проблемные места улучшаются (улучшения ООП - тому пример). Это весомые причины продолжать его использовать.
  • Возвращаясь к вебу, который нам тут всем на этом сайте близок ) - в питоне есть решения для построения сайтов, которые я лично ставлю в один ряд с друпалом - фреймворки django и turbogears. В один ряд - по гибкости и мощности для программиста. Друпал предоставляет больше готовых решений и вообще cms из коробки.

Комментарии

Аватар пользователя andreypaa andreypaa 6 июня 2009 в 11:26

Спасибо за сравнение, очень пригодилось, и именно мне как раз в тему, в очередной раз побудило заинтересоваться python. Ни кто случайно не встречал, какой либо памятки или руководства, в котором содержатся быстрые инструкции или аналоги по переходу с php на python (языковые конструкции и пр.). Это я к тому, чтобы по-быстрее и легче было осваивать.

P.S.
хотел нажать кнопку "просмотреть", но после нее общий вид поста не показывается Wink

Аватар пользователя vikeng vikeng 6 июня 2009 в 17:14

Интересное сравнение.
Я начал изучать python пишу на нём скрипты. Для веба еще ни чего не делал на нём, только собираюсь попробовать.
Главное преимущество php перед python в его распространнённости. Сделаешь дома сайт, а потом еще хостинг искать.

P.S. У меня просмотр тоже не работает.