Почему php
У классов есть контракты на их методы:
class A <>
class B extends A <>
function foo ( A $a ) <>
function bar ( B $b ) foo ( $b );
>
?>
Этот код безопасен для типов, поскольку B следует контракту A, и, благодаря магии ковариантности и контравариантности, любое ожидание, которое может быть у человека в отношении методов, будет сохранено, за исключением исключений.
У перечислений есть контракты их варианты, а не методы:
function quux ( ErrorCode $errorCode )
// Кажется, что этот код охватывает все варианты
match ( $errorCode ) ErrorCode :: SOMETHING_BROKE => true ,
>
>
Оператор match в функции quux может быть статически проанализирован, чтобы охватить все случаи в ErrorCode.
Но представьте, что было бы разрешено расширять перечисления:
// Экспериментальный код, в котором перечисления не являются конечными.
// Обратите внимание, что это не будет работать в PHP.
enum MoreErrorCode extends ErrorCode case PEBKAC ;
>
?php
function fot ( MoreErrorCode $errorCode ) quux ( $errorCode );
>
fot ( MoreErrorCode :: PEBKAC );
Согласно обычным правилам наследования, класс, расширяющий другой класс, пройдёт проверку типа.
Проблема заключается в том, что оператор match в quux() уже не охватывает все случаи. Поскольку оно не знает о MoreErrorCode::PEBKAC , match выбросит исключение.
Из-за этого перечисления являются окончательными и не могут быть расширены.
User Contributed Notes
There are no user contributed notes for this page.
- Перечисления
- Обзор перечислений
- Основы перечислений
- Типизированные перечисления
- Методы перечислений
- Статические методы перечислений
- Константы перечислений
- Трейты
- Значения перечисления в постоянных выражениях
- Отличия от объектов
- Список значений
- Сериализация
- Почему перечисления не расширяемы
- Примеры
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
Почему PHP — это моя ошибка
Почему вы не прошли очередное собеседование? Вы можете прочитать кучу причин, про непрофессионализм, незнание какого-то фреймворка, софт-скилы и т.п. Главная причина — вы не понравились, вы не идеальны с точки зрения собеседующего, как человек вы ему неприятны, вы расходитесь во взглядах на жизнь. И простого подчинения политике компании на словах тут недостаточно. Я утверждаю это на основании моего довольно интересного опыта. У меня 2 стэка — PHP(Laravel и Symfony) и Ruby(Rails). Сравнивая десятки собеседований на эти 2 стэка(да, у меня два разных резюме, об этом ниже), я пришел к очень интересным выводам.
Вывод первый PHP — это одна большая помойка. От языка до инфраструктуры. От инфраструктуры до мест работы. От мест работы до людей, которые с вами работают(если вам будет проще, то я — не лучше). Но при этом нам козыряют в лицо топовыми вакансиями на PHP. Facebook, который по сути пишет на Hack и вообще топ компания мира. Вконтакт, где kphp и хайлоад. Badoo, где просто хайлоад. Гнуснейший черрипикинг.
Остальные места работы на PHP — это параши той или иной засраности, если вы работаете там даже сеньором. Есть исключения, где тебе могут выписать 7000 $ как рядовому кодошлепу, но, боже, какие же это исключения! Это редкий случай когда легаси продукт несет золотые яйца.
И главное — на эти вакансии не требуется высокая квалификация программистов. Практически на все. Можно выкинуть любого и взять почти любого. По хард навыкам все практически одинаковы, если не считать совсем уж студентов с фриланса.
От этого я проходил десятки собеседований, делал тестовые задания, вроде все шло хорошо, а потом полный ноль ответа и фидбэка. Или фидбэк настолько шизоидный, что лучше бы дали просто отписку «наняли другого кандидата». Потому что на рынке PHP:
- переизбыток кадров
- нет необходимости в высоких навыках соискателей
- проекты настолько «близки к народу», что народ принимает решение о том «нравится» ему специалист или нет, а не тех. специалист
Кстати о технических специалистах PHP. Не дай вам бог в резюме указать, что вы мультистэк(окроме +JS). Это настолько мощный отворот от вашего резюме, что приглашения на собесы падают в разы. Лучше даже быть специалистом одного PHP-фреймворка. И не дай бог вы скажете, что то, что, наконец, запилили пару лет назад в PHP, вы в Ruby пощупали еще 10 лет назад. И оно вам не зашло.
Типовые вопросы на собесах по PHP — это вопросы веры и дрочки. Нужно верить в SOLID(понимать нужно также как тот кто собеседует), REST(понимание как у собеседующего). Нужно задрочить именно определенную версию фреймворка. Короче, собеседоваться с PHP-шником — это как играть в шахматы с петухом, только хуже. Петух ставит мат сразу, еще до первого хода. PHP-шник мало того что всю игру кукарекает, так еще и таблицу с результатами матча в итоге не допросишься. Рынок труда PHP — это не рынок соискателя, а рынок работодателя. Знаете какая тут цена ошибки найм плохого специалиста для 95% проектов? Ноль! Можно хоть по совместимости по гороскопу и физиогномике набирать.
Да, считается плохим тоном вешать ярлыки. Но все программисты на PHP, что мне попадались — люди с интеллектом дай бог чуть выше среднего, слепо верящие в догмы SOLID, patterns, GRASP(тут все настолько абстрактно, что каждый скудоум мнит себя философом-богословом, трактуя этот талмуд). Конечно, нужно задрочить фреймворк, ведь по меркам PHP-шника это огромный труд, и все они не построены по схеме запрос-ответ-шаблонизатор-контейнер-события-orm. Современные PHP-шники напоминают мне байтоjobов 90-х, кичившихся знаниями наизусть все портов/прерываний/системы команд Алдана/ etc.
Меня самого угораздило в свое время влезть в PHP по причине жирного проекта, где я и застрял. И я много лет жалею об этом. В этом стэке некуда развиваться. Тут гнобят за развитие и критическое мышление. Тут развитие — задрачивание очередной спеки и повторение догмы. Я не единожды с огорчением слышал от собеседующих фразу «эти вопросы надо знать наизусть, а не рассказывать своими словами». Тут нет сложных проектов. Тут не нужны особые навыки. Тут важно лишь то, насколько ты приятный человек. Это гребаный тупик, если вы конечно не хотите пролезть по линии соцскиллов в менеджеры и выше. Then you are welcome.
Особенно скажу за ситуацию, когда западный страждущий сэкономить лезет в третий мир. За 1500-3000$ нужна просто преданность и отсутствие проистекания слюны изо рта. А выше нужно уже будет СВОИМ в доску, причем по софт-скилам.
А что с руби, спросите вы? Неужели все дело только в славной команде рубистов из Днепра, которые своим мужским теплом одаряют весь СНГ? Нет, и хоть вакансий по рубям меньше, моя конверсия по ним выше в 7 раз. При этом у меня 12 лет опыта с PHP и 3 года c Ruby. И мне не надо врать на собеседованиях, что я работал больше чем с одним языком. Я получаю фидбэк. Я не должен делать вид, что верю в шизу, в которую я не верю. Вместо херок и СЕО, я гораздо больше общаюсь с тимлидами. И эти тимлиды не хихикают ехидно когда ты чего-то не знаешь в кишочках фреймворка, а сразу говорят чего ты не знаешь и куда ты поэтому идешь.
А знаете почему? Потому что рынок Ruby — все еще рынок соискателя. Это рынок, где от вас, как от специалиста, что-то зависит. Где вас нанимают за то, что вы умеете, а не за то во что вы верите, и насколько психологически совместимы с главпетухом имеющим личку тимлида, насколько у вас смазливое лицо.
Предвижу вскукарек — ты не достиг вершин в PHP, тогда все было бы проще и приятнее. Согласен, но у меня есть веское возражение: я также не достиг вершин в Ruby, но тут уже все в разы проще и приятней. Не повторяйте моих ошибок — не ходите в PHP за деньгами и развитием. Как бы язык не вырос за 10 лет, это все такое же днище по технологиям и людям, что там работают. Вы не помрете от голода, зная PHP, но этот кусок хлеба вам потом в глотку не полезет.
И вы наверное думаете, что я обычный бугуртящий, отшитый на одном собесе и экстраполирующий свой опыт на всю отрасль. Нет, на моем счету уже больше 200 собеседований за последние 10 ведь, я метил в район 3000-5000 $. Так вот я жалею, что еще в середине нулевых отмахнулся от презрительного отношения к PHP-шникам. С тех пор многое поменялось, но не суть этого стэка. PHP — это такая же помойка для посредственностей, где пышным цветом цветут самые мразотные социальные явления. Некоторые проекты из десятков тысяч выстреливают из уровня дешевого прототипа и мы слышим про них дифирамбы, что ломает адекватность восприятия. Я не претендую, что вы мне поверите. Под статьей будет много контраргументов. Но помните — если вы хоть когда-то задумаетесь над тем, что возможно, что я хоть в чем-то прав, бегите из PHP. Или идите до конца — станьте нормисом и идите в менеджеры.
Почему PHP ненавидят, но все им пользуются?
Сейчас разберемся и спросим мнение у разработчиков «Спринтхост».
3.3K открытий
PHP так ужасен?Сразу скажем — нет. Можно долго говорить, что плохих языков не бывает и т.д. и т.п., но PHP — обычный язык программирования со своими достоинствами и недостатками.
Чем хорош PHP?
Ответ на поверхности — порог входа в PHP крайне низкий. Чтобы научиться на нем программировать, достаточно пройти небольшой курс или разобраться самому. Вместе со спецификой HTML отображать все, что возможно, как бы ты ни написал код, PHP позволяет легко создавать сайты.
PHP дает все, что нужно для веб-разработки, он нетребовательный в освоении, самый распространенный язык для веба
Олег, Кот-разработчик
Простота изучения и использования популяризировала язык, стала причиной его распространения. Подавляющее большинство сайтов создано на PHP, многие CMS написаны на нем. Даже такой крупный проект как YouTube изначально базировался именно на PHP.
PHP идеально подходит для создания сайта. Он выдержит большое количество посетителей и справится с серьезной нагрузкой, был бы хороший хостинг под рукой (да, это намек на нас). Кроме того, PHP нетребователен к железу и может завестись на любой «тачке».
Чем PHP заслужил нагоняй от программистов?
Плюсы языка оборачиваются для его репутации минусами. Легкость использования PHP позволяет новичкам-разработчикам писать код так, как они его видят, не задумываясь над его читаемостью и эффективностью. Джун испытывает приступ гордости от работающего сайта, но на самом деле результат далек от адекватного состояния. Конечно, мы не утверждаем, что у всех новичков получается плохой код, но без должного опыта хорошо выходит не у всех.
Проблема усугубляется тем, что такие PHP-разработчики после первых работ продолжают создавать и дальше проекты сомнительного качества с точки зрения кода. Работает же, не трогай. Но если что-то сломается или нужно внести изменения в код спустя время, то разобраться в мешанине PHP будет очень сложно. Львиная доля интернета была написана таким образом.
PHP изначально создавался простым, чтобы им пользовались даже «домохозяйки» и люди очень далекие от программирования. И они стали им пользоваться, из-за чего в интернеты полилась куча дичи. У «реальных» программистов, которые постоянно ломали голову над кодом, писали его строго по документации и боялись поставить запятую не там, естественно подгорело от того, какой незамысловатой оказалась «пыха».
Кто-то пишет код часами, тестирует, он не работает, ищет баги, снова пишет код, а кто-то на «тяп-ляп» собирает нечто из PHP, создает монстра Франкенштейна и оно все равно будет работать. А потом еще нужно поддерживать все то, что насоздавали «умельцы» на PHP. «Справедливо?» — думают «настоящие» айтишники. «Нет!» — кричат их подгоревшие коллеги.
Негатив к PHP быстро распространился среди программистов и укоренился в сознании. Даже спустя много лет и версий с улучшением языка это отношение не сильно изменилось.
Думаю, по большей части, это уже мода не любить PHP. Хотя определенные недостатки есть, как и в любом другом языке. Конкретно в PHP — динамическая типизация, не очень удобный синтаксис
Алексей, Кот-разработчик
Здесь мы подкрадываемся к следующей проблеме языка — синтаксис. Камни (и другие неприятные вещи) в его огород летят за излишнюю свободу возможностей, динамическую типизацию. Переменные можно объявлять где угодно, можно называть их как угодно. Одна и та же переменная в разных местах кода может принимать в себя разные типы значений. Получается мешанина и полный хаос.
Сломанный оператор «==» заслуживает отдельного порицания. Выражение «1111 == 1111sph» выдаст нам True. «Пыха» просто превращает правую часть выражения в число и ей по барабану, что это строка. Сторонний разработчик, увидев такой код, может просто взорваться от негодования.
Для меня это один из инструментов, который можно использовать в работе. Но у него есть минусы, которые я могу выделить для себя:
— Зоопарк версий и обратной совместимости;
— Ранние версии не имеют приколюх и фич, которые появились со временем в поздних версиях;
— Нужно поддерживать тот самый зоопарк, о котором идет речь в первом пунктеОлег, Кот-разработчик
И все-таки без него никакPHP пророчили быструю смерть, что найдется хорошая замена и все заживут прекрасно, но он до сих пор является одним из самых востребованных языков программирования — легким, послушным и эффективным для сайтов.
Да, над PHP шутят и кто-то даже ненавидит, но, во-первых, на нем уже очень многое написано и нужно это поддерживать. Переносить все на другой язык гораздо дороже по ресурсам, чем оставить проект на PHP. Во-вторых, зачем переносить, если сайты прекрасно работают на языке, который создан специально для этого. В-третьих, PHP продолжает развиваться, многие его несовершенства исчезают, скрипты ускоряются, а читаемость кода увеличивается, появляется более строгая типизация. Язык становится понятнее и профессиональнее — это уже давно не то скриптовое дополнение для Perl, а нечто большее, хоть и обросшее шутками и мемами.
Разработка на PHP быстрая из-за обилия готовых решений: библиотек, фреймворков, CMS. Частенько даже не нужно знать сам PHP, в зависимости от сложности проекта, конечно же
Артем, Кот-разработчик
Если хотите создавать сайты, то PHP — отличный инструмент, который позволяет зарабатывать хорошие деньги. Умелые руки с помощью любого инструмента могут сделать качественный продукт — все дело в мастере.
Почему многие программисты считают PHP плохим языком? — отвечают эксперты
За время существования PHP его не пинал только ленивый. Мы решили спросить у экспертов, за что же так не любят PHP и почему его считают плохим языком.
За время существования PHP его не пинал только ленивый. Множество мемов, нелестных отзывов и прочей критики в его адрес. Мы решили спросить у экспертов, за что же так не любят PHP и почему его считают плохим языком.
Почему многие программисты считают PHP плохим языком?
Рустам Кильдиев
руководитель отдела разработки BigData компании «Иннодата»Причин много, пройдём по основным. Появился он в середине 90-x годов, когда не было развитой инфраструктуры и возможностей для его изучения, следствием этого стало появление массы программистов, не изучивших его полностью и не имеющих базы в компьютерных науках, коротко говоря, пишущих не очень качественный код. Язык имеет динамическую типизацию и вообще очень прост, т.е. имеет крайне низкий порог входа, что усиливало выше описанный эффект.
В 2000-х начался бурный рост количества интернет сайтов. Благодаря своей скриптовой сущности именно PHP стал лидером в этой области. К 2010-м годам руками той самой «плохой» массы программистов была написана львиная доля интернета. Быстрее, чем на «пыхе», сайт не «накалякаешь». PHP, если просмотреть линию от создания до сегодняшнего дня, также имел отставание в технологическом и синтаксическом развитии, относительно своих ровесников, например, Java. Да и огромная часть интернета написана и продолжает писаться на версии PHP 4 (2000 г.), несмотря на наличие версии 7.
Язык очень своеобразен, просто вдумайтесь, в нём нет адекватного стек-трейса из коробки. Т.е. в него не заложен инструмент отладки и разбора ошибок. Просто пишите и сразу в продакшн. Свойства языка и «слава» писавших на нём и создали такой эффект. Плюс эффект активно нагнетает элита мира разработчиков, пишущих на намного более современных, сложных, развитых, одним словом «крутых» языках, таких как Python (последних версий), Scala, Go и т.п. Но не стоит забывать, что всегда надо иметь баланс между технологическим удовольствием и бизнес-ценностью инструмента работы.
Рейтинг полезности ответа:
Павел Романченко
технический директор центра инновационных технологий и решений «Инфосистемы Джет»Потому что в языке отсутствует дизайн. Язык не развивался и не проектировался целенаправленно. Многие решения принимались хаотично, что называется, «по месту».
Например, названия функций неконсистентны, т.е., глядя в название одной функции работы со строками, нельзя предугадать название другой.
Результаты плохого проектирования видны всюду: mysql_real_escape_string , сломанный оператор == и т.д.
В отличие от многих других языков, где знания о языке ложатся в некую систему, PHP представляет собой свалку слабо связанных конструкций.
Рейтинг полезности ответа:
Кирилл Меженцев
программист группы разработки карты рассрочки «Совесть»Не любить PHP очень легко. Если вы спросите у разработчиков, чем именно плох PHP, то вряд ли получите внятный ответ. Ссылаться могут на общеизвестные проблемы или на неудачный синтаксис, который не понравился человеку. В своё время PHP имел ряд проблем, но их не избежали и многие другие языки. Однако благодаря своей простоте язык стал популярным (Wikipedia, первый Facebook), а вместе с популярностью массовым стало и знание о его проблемах. За годы, с новыми релизами, часть проблем закрылась, но память жива. PHP стал просто удачным мальчиком для битья.
Рейтинг полезности ответа:
Юрий Пономарев
консультант по программным продуктам Oracle Центра технической поддержки компании РДТЕХМногие считают PHP плохим из-за трёх вещей:
- Всё, что написано, может быть истолковано несколькими способами.
- Если есть что-то очень медленно и плохо написанное на процедурных языках с долгой историей, то это так или иначе можно найти на PHP.
- Черепашья скорость отладки и поиска багов.
Рейтинг полезности ответа:
Али Рагимов
главный специалист отдела разработки программного обеспечения, OkkoМне кажется, всё дело в происхождении языка. Изначально PHP был разработан как простой скриптовый язык, чтобы каждый человек мог легко написать для себя домашнюю страницу. Тогда аббревиатура PHP расшифровывалась как Personal Home Page. Со временем язык стал развиваться, но по-прежнему оставался простым и доступным. Так как порог вхождения был низким, это привлекало большое количество людей, которые до этого не были знакомы с разработкой. Сталкиваясь с вопросами и проблемами, люди преимущественно шли на форумы в ожидании, что кто-то даст им готовое решение — вместо того, чтобы самостоятельно глубоко изучить документацию.
Таким образом, PHP-сообщество на 90% состояло из людей, которые пишут, не задумываясь и вставляя в свои проекты куски непонятного кода — главное, чтобы работало. Многие из тех, кто разобрался в скриптинге получше, вели блоги о программировании и даже записывали видеокурсы, которые зачастую содержали такие подходы и такой код, которые были непригодны для использования в реальных проектах. А люди, которые могли развернуть WordPress и установить в него плагины, и вовсе считали себя экспертами.
Именно простота языка и недостаточная глубина знаний сообщества вокруг него и создали PHP дурную славу.
Однако всё это в прошлом. PHP уже давно содержит в себе интерфейсы, абстрактные классы, трейты и другие вещи, позволяющие реализовывать парадигмы ООП и использовать паттерны проектирования. А в последних версиях PHP появилась типизация аргументов функций и методов, возвращаемых значений и свойств классов. PHP также имеет свой пакетный менеджер, множество современных мощных фреймворков, таких как Symfony и Laravel, и массу других интересных проектов, написанных очень качественно. Сейчас, в 2018, лично я не вижу причин считать PHP «плохим» языком программирования.
Рейтинг полезности ответа:
Дмитрий Казаков
руководитель отдела веб-разработки RU-CENTERНачалось всё, как обычно, много лет назад, когда бизнес только начал осваивать интернет. Серьёзные проекты писались за серьёзные деньги, но большинству заказчиков хотелось получить какой-нибудь сайт за мелкий прайс, желательно вообще бесплатно. Так началась эпоха wordpress и joomla. Так как все разработчики, согласные делать проекты за нормальные деньги, уже были заняты на этих самых проектах за нормальные деньги, то сайтоделием на CMS занялись случайные люди, со временем начавшие отождествлять себя с программированием и PHP как языком этих CMS. Общий, весьма низкий технический уровень этого сообщества прицепом потянул за собой в бездну репутацию PHP как инструмента, а дефицит кадров в отечественном IT не позволял гнать несвежими тряпками таких разработчиков. В конце концов PHP стал синонимом «дёшево и быстро», а ведь никто из программистов не хочет «дёшево», оправдывая это придирками к архитектуре языка.
На самом же деле, если внимательно посмотреть на PHP, будет сложно найти существенные отличия от остальных C-подобных скриптовых языков. В конце концов, не бывает плохих языков — бывают плохие программисты.
Рейтинг полезности ответа:
Павел Цытович
тренер по разработке и архитектуре ПО в LuxoftПочему многие программисты считают PHP плохим языком программирования? В основном это связано с неоднозначностью, которая присутствует при написании программ на этом языке. На просторах Сети нашёл следующий код:
$arg = 'T'; $vehicle = ( ( $arg == 'B' ) ? 'bus' : ( $arg == 'A' ) ? 'airplane' : ( $arg == 'T' ) ? 'train' : ( $arg == 'C' ) ? 'car' : ( $arg == 'H' ) ? 'horse' : 'feet' ); echo $vehicle;Как вы думаете, что он напечатает? В таких языках, как Java, C++ или C#, есть аналогичный оператор условное выражение. Там он напечатает ‘train’. А в PHP результат будет ‘horse’!
Второй момент, который вызывает сложности с PHP, – это диагностика ошибок. Если вы открываете файл, то для этого есть функция fopen() . При невозможности открыть файл, сообщение об ошибке будет выведено в поток. Мы можем его подавить, используя символ @ , т.е. записать @fopen() . Однако, даже при наличии этого оператора, если в настройках php.ini вы указали опцию scream.enabled=true , это приведёт к печати сообщения об ошибке, даже если вы используете в коде оператор @ .
Третий момент связан с неоднозначностью оператора == . Вот на этом ресурсе есть хорошая таблица, какие результаты он возвращает.
Вся проблема в том, что этот оператор «не придирается» к типам данных. Так выражение вида 123 == «123foo» вернёт TRUE , а вот выражение «123» == «123foo» уже вернёт FALSE . Этот оператор пытается сделать приведение типа и в первом выражении просто преобразует строку “123foo” в число 123, когда в других языках программирования мы бы получили ошибку, что логично. А второе выражение просто сравнивает строки. Всё это порождает неоднозначность, с которой очень сложно совладать начинающим программистам на PHP. Хороший язык программирования не должен оставлять места трактовке тех или иных конструкций, а должен быть последовательным везде и всегда.
И четвертый момент, почему считают данный язык программирования плохим, – это тот момент, что он создавался как язык шаблонов, который встраивается в HTML-код с помощью тегов . В итоге это приводило к смешению программного кода и данных, что в больших системах недопустимо. Понятно, что потом появились «лучшие практики», как надо писать и как не надо писать скрипты PHP, но для начинающих разработчиков это и сегодня представляет определенную сложность.
В защиту языка программирования PHP хочется сказать, что по-своему это мощный язык программирования, который нашел своё место в веб-приложениях. На нём написано достаточно много веб-приложений, начиная от Facebook и заканчивая системой умного дома Majoromo, CMS Drupal и другими.
Рейтинг полезности ответа:
Дмитрий Гацура
руководитель отдела разработки компании «СёрчИнформ»Его считают плохим те, кто на нём не пишет, либо, кто столкнулся с некачественным исполнением поставленной задачи. Те разработчики, кто не стремятся изучить документацию языка и не следуют рекомендациям, пишут на нём действительно очень слабо. Это бросает тень на всё сообщество. PHP — язык с низким порогом вхождения. Это одновременно сильная и слабая его сторона. Достаточно знать азы программирования, поставить интерпретатор и можно писать хоть в «Блокноте». По умолчанию конфигурация интерпретатора PHP не выводит детальной информации о предупреждениях и ошибках, что на начальном этапе изучения (использования) языка может сформировать у программиста неверные принципы написания кода.
Язык по сути развязывает руки разработчику: делай, что хочешь. А когда многое дозволено, приходится быть предельно аккуратным и дисциплинированным. PHP хорошо справляется с поставленными перед ним задачами по веб-разработке. Это универсальная рабочая лошадка, на языке написана большая часть сайтов в интернете. У него есть объективные слабые стороны, и связаны они с тем, что PHP развивался в трендах и тенденциях более чем пятнадцатилетней давности. В частности его проблема в том, что он тянет с 1997 года ворох проблем, например реализацию ООП, проблемы с сигнатурами функций в стандартной библиотеке, двойственный метод использования стандартных расширений (ООП или процедурный) и т.д. У PHP накопился багаж того, что нужно переделать. И эта работа ведется, многие исторически накопленные проблемы решаются.
Рейтинг полезности ответа:
Евгений Потапов
генеральный директор ITSummaВо-первых, нужно изначально иметь в виду, что у языков программирования, даже общего назначения, есть свои устоявшиеся сферы применения. Если рассматривать PHP, то прежде всего это веб-разработка. Значит и сравнивать, насколько плох или хорош PHP, логично с другими языками для веб-разработки.
Тут нужна небольшая историческая справка. Изначально Web разрабатывали на «том, что было» (C, а потом Perl через CGI). Затем, особенно в энтерпрайз секторе, значительное распространение получила Java и следом C# (ответ Microsoft). Это созданные большими корпорациями, хорошо спроектированные, можно так сказать, серьёзные языки программирования.
В то же время PHP начинал как проект энтузиаста (даже расшифровывался как Personal Home Page), как набор скриптов на Perl.
Но в то же время он имел большие плюсы: очень низкий порог входа, отсутствие необходимости в тяжеловесных виртуальных машинах, простота создания несложных сайтов.Обратная сторона этих плюсов — уровень компетенции комьюнити, собравшегося вокруг PHP, был значительно ниже по сравнению с другими языками.
Web стремительно развивался. А за ним развивался и PHP, так как это был чуть ли не единственный язык для построения неэнтерпрайзного Web.
С определенной версии это стал вполне современный язык (с некоторым наследием), в среднем, ничем не хуже, чем любые другие аналоги.
Но вот этот «Personal Home Page» осадок остался.
Во-вторых, когда PHP запустил волну популярности динамически программируемых языков, в Web зашли такие языки, как, например, Python, Ruby или NodeJS. Тут уже началась «гонка вооружений» между ними. На старте эти языки (и связанные библиотеки и фреймворки) учитывали недостатки PHP и выглядели значительно привлекательнее. Тут уже начались холивары между комьюнити. В принципе каждый язык занял свою нишу. PHP же итеративно догоняет по функциональными возможностям нововведения в других языках. И на текущем этапе плохим языком его назвать уж точно нельзя. Скорее — промышленным стандартом в не-энтерпрайз Web.
Резюмируя, можно сказать, что такое отношение к PHP вызвано его историей и конкуренцией с регулярно появляющимися «самыми прорывными» свежими языками.
