Руки прочь от PHP!
15 февраля 2007 года
Сегодня мне в асю кинули вот такой вот материал для размышления. К сожалению в Yandex'е я так и не смог найти сайт с оригиналом текста, но все же вот этот текст неизвестного автора:
«Распространенность php вызвана легкостью установки его на сервере, малым количеством парадигм, заложенным в язык (императив + недо-ооп) -» легкость изучения а т.ж. тем, что это именно узко-нишевый язык, заточенный под веб, в отличие от java, ruby, python, perl - языков общего назначения, сравните распространенность php и perl/python на десктопе и все станет на свои места.. По большому счету это не язык, это всего лишь _препроцессор текста_, у него нет даже виртуальной машины, он не приспособлен для long-running-processes, на нем даже не напишешь stand-alone сервер, нет потоков, это паталогически _не правильный_ язык (если все же рассматривать его как язык), который подобает использовать ясно осознавая эту всю его неправильность - отсутствие модулей (пакетов, неймспейсов), отсутствие высокоуровневых типов данных, огромное количество глобальных не очень системно названных функций вида another_this_very_useful_function (ввиду отсутствия модулей), перемешивание логики работы и отображения, не способствующее MVC, отсутствие такого полезного высокоуровневого средства как исключения: Все попытки как то окультурить это дело (Smarty, всякие ORM-ы) производят впечатление мягко говоря использования средства не по назначению. php идеально подходит для не очень больших обособленных програмных комплексов типа форумов, гостевых, различных других веб-скриптов, кое-как для небольших CMS. Для других более сложных enterprise веб-приложений использование PHP возможно, но не обосновано в виду слабой масштабируемости (как там насчет кластеризации, load-balancing'а), не модульности, отсутствием высокоуровневых средств языка. В этом сигменте гораздо лучше подходят языки общего назначения, позволяющие писать приложения, выполняющиеся на специальном application server'е. А использование PHP CLI это вообще из ряда вон выходящее извращение:»
Итак, по пунктам:
1) По каким критериям автор оценивал что является языком программирования, а что нет. По легкости изучения? Так что же паскаль (delphi) тоже в трешь? Или узкая заточка под конкретные цели тоже теперь переводит язык программирования в разряд «всяких там процессоров». Может тогда Фортран тоже в трешь, на нем все рано только только считать - «недоязык»?
2) «сравните распространенность php и perl/python». И что? Что под наш всеобъемлющий Windows пишется много программ на perl? А ведь пока никто не отменял монополию Microsoft на рынке десктопов. Работе с Windows учат в школах, в СУЗах, и даже в высших учебных заведениях. Но это уже другая тема. А если речь шла о unix десктопах, то тем более пример «ни о чем». Полно системных утилит написанных на PHP. И работают они на равнее с perl утилитами.
3) «у него нет даже виртуальной машины» - у Си тоже нет виртуальной машины (поправьте меня Си кодеры, если я отстал от жизни). Так что даже Си в трешь?
4) « на нем даже не напишешь stand-alone сервер». Да ну! Согласен, что писать на php серверное ПО это чушь, но, тем не менее, вполне реальная чушь. А что на Perl писать stand-alone сервер менее бредовая идея?
5) Как это в PHP нет пакетов расширений. А как же PEAR? Автор явно даже не «пробовал PHP». Об этом говорит такая фраза как «отсутствие такого полезного высокоуровневого средства как исключения». В PHP есть исключения (по крайней в пятой версии точно есть).
6) «перемешивание логики работы и отображения». Вот это называется, неудачная попытка перевернуть все с ног на уши. Это с каких пор наличие опций считается недостатком. Все профессиональные php кодеры полностью разделяют логику и представление. А возможность вставлять в HTML куски кода только помогает в изучении языка. Но, об легкости изучения я уже писал.
7) «кое-как для небольших CMS». Автор явно не в теме того, что уже написано на PHP.
8) «как там насчет кластеризации, load-balancing'а». А как там на счет load-balancing'а на уровне сервера? Кластеризация? Ну да: разве нельзя сделать кластер из серверов с PHP? Не понимаю причем тут именно PHP: или тут пыталась пройти мысль об отсутствии в PHP средств для программирования параллельных вычислений. В чистом Си их тоже нет и что?
Вот такое вот пишут о PHP обиженные C# (про C# это только мое предположение, аргументы пока оставлю при себе) кодеры.
Оставить комментарий
Комментарии
Меня просто удивляют такие вот уникумы... да вы назовите сначала хоть одну единственную причину, по которой php не может выдерживать нагружаемые проекты. Такие люди научились лишь читать и пересказывать глупости сказанные другими недо-программистами, а своей головой видать думать совсем разучились. Facebook зарабатывает миллиарды долларов, наверное потому что написал его на языке, на котором нельзя написать ничего серьезного. Если судить по их логике, то нужно всем дружно перейти на ассемблер. Да все игры создаются на основе разработанных кем-то движков! Множество программ создаются на базе чего-либо, как и сами компьютеры совершенствуются на базе более старых версий, только полный идиот будет строить свой велосипед, когда все уже готово, и на изготовление этого было потрачего очень много времени и задействовано очень много людей. Если вы сами хотите написать то, на что пошли годы - удачи, но ничего больше чем быдлопрограмму вы не напишите ;)
Разные инструменты созданы для разных целей.
Такой бред напороли в комментах, аж читать противно. Если судить по вашим комментариям и этой статье, то ассемблер - вообще самый крутой язык, потому что на нем можно написать что угодно. Только вот сколько на это сил уйдет и времени? Какой нормальный человек станет писать сайт на ассемблере, си, паскале и т.д.? Кому это будет нужно? Вы ведь не используете велосипед для подводного дайвнига? Большинство системных программ написаны на си(++), драйверы написаны на асемблере и так далее. А большинство веб-приложений написаны на PHP, потому что это самое удобное решение для такой задачи.
Всем спасибо.
Надо более корректно указываьт как и преимущества так и недостатки ( именно самого PHP), как то там : плюс - простота, минус - он при каждом запросе интерпритируется ( может сказаться на производительности ) и т.д. ))
1. Perl сделал _одмин_, который заипался логи парсить на awk
2. PHP написало уебище (nothing personal, возможно он очень мил и приятен в общении и водки выпить), которое делало "движёк для своей домашней страницы" вот Personal Home Page оно и осталось как его не переименовывай
3. Python написал Математик, в Университете
дальше третий пункт разворачивать не стану, и так уже достаточно
написал для того, чтобы в том числе людей программированию обучать
поэтому Python - это язык для людей
Perl - для админов, которые по образованию к тому же лингвисты, если я правильно помню тему диплома Ларри
а PHP - для голодранцев, которые сами себе гостевую книгу пишут
пока похапесты "завоёвывали рынок web приложений"
на Python шпарили математики и физеги :) не обламываясь :) а это плять Школа. ее так просто не пропьешь, системный подход, системный подход, и "люди привыкли писать статьи так, чтобы другим понятно было"
(c) cadmi
Добавить - нечего.
Если ты не умеешь этого делать, то это вовсе не означает, что это невозможно. Не стоит делать выводы о языке на основе своей неграмотности.
насколько видно лично мне (я могу ошибаться) - сейчас всё идёт к тому, что PHP становится потихоньку языком общего назначения и как раз ведутся работы по его эээ... "окультуриванию".
если вспомнить - с чего всё начиналось, то прогресс очевиден. да такой, что никакому сишарпу не снилось. ибо поддерживается он мощной идеей под названием "коммьюнити" (не побоюсь даже сказать - корпоративное коммьюнити).
Язык молодой и разработчики прекрасно осведомлены о его проблемах. На мой взгляд основные проблемы РНР: namespaces, отсутствие типизации (и как следствие исключительная сложность реализации "взрослых" алгоритмов шифрования).
Виртуальная машина ему и не нужна - другая задача у языка (кстати сравнение с С++ в данном вопросе неуместно тк С++ компилируемый язык, а виртуальные машины присущи интерпретируемым).
К тому же никто не говорит что на РНР надо писать GUI приложения или демоны. В своей нише он очень мощный игрок. А для демонов и GUI есть Java и С++
- Цитата:нет потоков
- pcntl не в счет (работает только на никсах и реальной многопоточности
не обеспечивает) - Цитата:отсутствие модулей (пакетов, неймспейсов)
и, как следствие,
Цитата:огромное количество глобальных не очень системно названных функций. Невозможность разбить проект на неймспейсы порой просто убивает.
И исчо пара слов.
Скажем так, если сравнивать РНР и C#, то обиженными окажутся как раз РНР-девелоперы. Афтар каментов
использовать сишарп. И дотнет.
Показателем "стройности/правильности" языка программирования, на мой взгляд, явлется наличие для него инструментов автоматизированного рефакторинга. Для C# таких тулз полно. 3 шт. назову навскидку. Для РНР аналогичных инструментов я не знаю.