Как сломать парадигму «php - плохой язык»? [закрыто]

19

PHP не плохой язык (или, по крайней мере, не такой плохой, как некоторые могут предположить). У меня были учителя, которые даже не знали, что PHP является объектно-ориентированным, пока я им не сказал. У меня были клиенты, которые сразу же не доверяют нам, когда мы говорим, что мы разработчики PHP, и спрашивают нас за то, что мы не используем шикарные языки и фреймворки, такие как Django или RoR, или «корпоративные и солидные» языки, такие как Java и ASP.NET.

Facebook построен на PHP. Есть множество надежных проектов, которые приводят в действие сеть, таких как Joomla и Drupal, которые используются на предприятии и в правительстве. Существуют фреймворки и библиотеки, которые имеют одни из лучших архитектур, которые я видел на всех языках (Symfony 2, Doctrine). PHP имеет лучшую документацию, которую я видел, и большое сообщество профессионалов.

PHP имеет расширенные функции OO, такие как отражение, интерфейсы, не говоря уже о том, что PHP теперь поддерживает горизонтальное повторное использование изначально и чисто через черты .

Есть плохие программисты и сценаристы, которые дают PHP плохую репутацию, но в то же время приводят в движение сообщество PHP, и, поскольку сделать PHP так легко, вы можете делать что-то не так, как следует, но зачем обвинять язык ?.

Теперь, чтобы свести это к актуальному ответу на вопрос: что было бы хорошим, солидным, коротким и приятным аргументом, чтобы не быть осуждаемым и прекратить предрассудки одним махом и защитить свою честь, когда вы говорите, что вы - разработчик PHP? ,

(бесплатное печенье со взбитыми сливками для тех, у кого есть эмпирические доказательства убеждения кого-либо - клиента или другого - на месте)

PS: мы используем Symfony , и код заканчивается красивым и понятным

PPS: Facebook будет написан на PHP, компилируется в C ++ с помощью HipHop и развернут на Hadoop. Здесь: http://arstechnica.com/business/2012/04/exclusive-a-behind-the-scenes-look-at-facebook-release-engineering/1/

dukeofgaming
источник
9
Для начала пометьте все язвительные анти-PHP комментарии к программистам. Среди модераторов есть по крайней мере один разработчик PHP, который действительно любит их удалять ...
yannis
23
Написать хороший код PHP
Чарльз Спрейберри
42
Просто замечание, я очень ненавижу, когда PHP люди приводят аргумент «FB строится на PHP». Это bs, он построен на массивных распределенных системах, таких как Hadoop, и части, которые действительно выполняют свою работу, находятся на C. PHP используется для шаблонов и пользовательский интерфейс, этого едва ли достаточно, чтобы сказать «FB построен на PHP» ...
TC1
10
@NB Да, но в этом случае, IMHO, говорить, что «FB построен на PHP», все равно, что говорить, что StackOverflow построен на CSS и JavaScript, потому что здесь и там есть несколько приятных штрихов пользовательского интерфейса ...
TC1
13
Я бы не стал вас нанимать, потому что я не хочу поддерживать PHP-код. PHP получает такие же возможности, как Perl, JavaScript и другие спешащие языки, но само его ядро ​​было разработано в спешке, и изменить его невозможно. Возможно, вам стоит изучить некоторые Django, RoR и Grails и, таким образом, не зависеть от языка.
Работа

Ответы:

40

Единственный ответ, который у меня есть, таков: все отстой.

Вы можете найти тонны аргументов против того, что ООП является хорошим (быстрый поиск покажет их) по сравнению с функциональным или процедурным программированием. Вы, кажется, указываете, что поддержка OO в PHP защищает его.

Google пустое отстой, и вы найдете результаты для чего угодно. Питон отстой . Руби отстой . Рельсы отстой . PHP отстой . Ява отстой .

Вы хотите знать, что действительно отстой? Программисты. Программисты отстой. Любой хороший разработчик должен иметь возможность создавать удивительные приложения, интерфейс и бэкэнд, независимо от языка - даже если они не были знакомы с языком! (То есть хороший программист должен уметь эффективно изучать любой язык и работать с ним).

Также обратите внимание, что успех приложения не имеет ничего общего с его кодом. Я слышал, что код Facebook ужасен, но, по богу, он эффективен. То же самое, вероятно, верно и для Викимедиа (Википедия построена на PHP и также является чрезвычайно популярным веб-сайтом). Что действительно важно, так это результаты!

PHP - это язык, с которым я лично наиболее знаком. Я буду защищать его до смерти. Я работал с PHP-фреймворками, прямым PHP-кодом и PHP, python и ruby (и даже Java) для веб-разработки. Я не могу сказать, что одно особенно лучше другого. Что важнее, так это разработчики и алгоритмы. Я видел удивительно хороший и совершенно ужасный код на многих языках (особенно на PHP, так как я так много знаком с ним).


Теперь на ваш вопрос: это зависит от того, с кем вы имеете дело

Бизнесмены

Они заботятся в основном о результатах и ​​экономической эффективности. Факта, что очень успешные Facebook, Wikipedia и Wordpress используют PHP, должно быть более чем достаточно, чтобы убедить их в том, что это эффективный язык для создания успешных приложений.

Программисты

Пусть ваш код говорит сам за себя. Если разработчик говорит, что PHP каким-то образом уступает, покажите им некоторый код PHP, который вы считаете эффективным. Доказательство пудинга в еде.

Таблетки взрыва
источник
8
«Любой хороший разработчик должен иметь возможность создавать потрясающие приложения, интерфейс и бэкэнд, независимо от языка», - повторяйте это после того, как вы попробовали это в Malbolge.
Майкл Боргвардт
5
Я не думаю, что хороший программист может написать хороший код на языке, который он не знает. Прилично, может быть, но не хорошо. Это потому, что написание хорошего кода на любом языке требует хорошего знания библиотек и самого языка.
svick
4
Я не согласен; Хороший разработчик должен иметь возможность ознакомиться с необходимыми знаниями для написания хороших приложений. Хорошее знание библиотек и синтаксиса очень важно, но это хороший способ для разработчика. Что намного сложнее, так это алгоритмы и концепции (и, возможно, терпение) ... даже если язык Мальболже. Или, может быть, я думаю о великом разработчике.
Таблетки взрыва
7
success of an application has nothing to do with its code<- Верно. Но когда люди говорят, что «PHP - это плохой язык», они не имеют в виду «приложения, написанные на PHP, плохие», скорее, они имеют в виду «приложения, написанные на PHP, зачастую неинтересны из-за спагетти кода». Конечно, на PHP написаны отличные приложения. Но я не думаю, что этот ответ касается того, что имеют в виду программисты, когда они называют PHP «плохим».
Билли Онил
2
@BillyONeal Какова ваша метрика для того, является ли язык "хорошим" или "плохим"? Приложения - это все ... никому нет дела до кода . Линус Торвальдс разглагольствовал о том, насколько ужасен C ++ - вы можете сказать, что все плохо, потому что некоторые программисты пишут в нем плохой код.
Таблетки взрыва
20

У PHP грязная история. Гораздо лучше сейчас, когда это было совсем недавно, но было время, очень долгое время, когда поощрялось множество плохих практик и шаблонов, и их было трудно избежать. Существует целое поколение ужасного PHP-кода, который все еще работает, и в той степени, в которой новые программисты учатся, читая старый код, они изучают плохое поведение. PHP, возможно, не заслуживает своей черной репутации, но, тем не менее, он это заслужил.

Лучше всего защищать PHP - тщательно дистанцироваться и отличать текущее состояние искусства от истории, с которой все знакомы. Вы можете сказать, что PHP не является ужасным языком, но если вы разговариваете с кем-то, кто был в этой отрасли в течение ряда лет, его память говорит им об обратном.

Покажите им, как команда PHP извлекла уроки из своих ошибок и изменила язык в лучшую сторону. Прошли времена волшебных кавычек и регистра глобалов. Ушли в прошлое глобальная парадигма, безопасный режим и mysql_escape_string. Объясните им, что настоящие программисты PHP всегда используют пространства имен и параметризованные запросы, они избегают устаревших функций и всегда размещают код своей библиотеки вне корня документа.

PHP изменился, и программисты PHP изменились. Вот почему PHP - замечательная платформа, которой она является сегодня. Кроме того, это единственная платформа, которую, как вы знаете, предустановят ваши клиенты. Это огромно.

В качестве примечания я бы рекомендовал не ссылаться на существующие движки и фреймворки CMS как на большую победу для PHP. Вы рискуете, что они указывают на такие вещи, как исследование безопасности Websense, проведенное 4 дня назад и показавшее, что 94% недавних заражений веб-сайтов были связаны с сайтами PHP, работающими с такими программами, как Joomla и Wordpress. Это не та компания, которую вы хотите видеть в. Вместо этого отметьте, что ваш код будет намного более безопасным, чем все остальные вещи.

tylerl
источник
1
+1 - но - но - Утверждение о том, что ваш код будет "намного более безопасным", чем рецензирование кода несколькими профессионалами, на самом деле не принесет много воды кому-то, кто хоть немного опытен в безопасности. Все пишут ошибки безопасности. Хитрость в том, чтобы просто исправить их на шаг впереди плохих парней.
Билли Онил
@BillyONeal да. Последний абзац должен показаться вам немного странным и заставить вас по-настоящему переосмыслить свой подход к безопасности. Я провел много исследований в области безопасности PHP по сравнению с веб-приложениями, не относящимися к PHP, и эти отчеты вызывают тревогу и перекос в отношении PHP. Это не значит, что PHP плох, но безопасность - это реальная проблема.
Tylerl
1
«Кроме того, это единственная платформа, на которой, как вы знаете, предустановлены ваши клиенты». Это утверждение кажется мне совершенно неверным. Не каждый развернутый сервер развернут со стеком LAMPhp, а также не распространены какие-либо распространенные дистрибутивы Linux-серверов, с которыми я пытался работать. PHP предустановлен. Тем не менее, каждый дистрибутив Linux, который я когда-либо использовал, поставляется с Python 2.x. Я подозреваю, что некоторые общие утилиты полагаются на это.
ThorSummoner
9

PHP - это кобол сети. Оба языка не пользуются уважением, однако многие люди зарабатывают на жизнь, создавая и поддерживая системы, написанные на них, и они присутствуют в объеме почти во всех основных компьютерных системах своего родного мира ( то есть в Интернете и коммерческом бизнесе соответственно). Оба языка смотрят свысока на практиков других, более популярных языков, в значительной степени основанных на старых и устаревших привычках, которыми пользуются программисты, которые с тех пор учились лучше и совершенствовали свои инструменты.

PHP должен быть настолько счастлив, что он живет жизнью COBOL. COBOL существует дольше, чем что-либо, кроме FORTRAN, и в ближайшее время не исчезнет. В повседневном использовании существует множество программ на языке COBOL, которые старше тех, кто их обслуживает. Это может быть не «новая горячка», но всегда будут деньги, которые можно заработать, работая с ними.

Росс Паттерсон
источник
4

Я думаю, что это также может быть полезно, чтобы понять другую сторону медали и признать недостатки PHP. В то время как PHP значительно продвинулся от языка шаблонов, есть еще много вещей, которые можно улучшить. Есть некоторые моменты, в которых PHP по-прежнему отсутствует: Юникод, функциональные возможности, организация стандартной библиотеки arrayи т. Д.

Я предлагаю следующее: чтобы конструктивно обсудить сильные и слабые стороны PHP, было бы хорошо признать все это. «Да, я знаю, что стандартная библиотека PHP не очень организована. Но если бы она была написана сегодня, она могла бы использовать пространства имен и объектно-ориентированные API». «Да, я знаю, что массив по умолчанию создает небольшую путаницу, смешивая структуры словаря и массива. Но если кому-то нужны более совершенные коллекции, можно использовать SPL».

Ваша точка зрения станет сильнее, если вы покажете, что знаете, что аргументы других людей имеют какую-то причину.

Andrea
источник
2

Почему?

Любой, кто заставляет вас чувствовать, что вы должны защищать себя (будь то карьера, супруг, привычки тратить и т. Д.), Тратит свое время впустую. Вы тратите время на то, чтобы защитить себя, просто унижаете не тех людей - теперь вы тратите впустую как свое, так и их время.

Вычеркните этих людей из своей жизни - вам лучше без них.

JK
источник
4
Таким образом, ответ заключается в том, чтобы принять это личное и игнорировать это. Это культурная проблема, я бы лучше решил ее и попытался улучшить свои аргументы и сделать их более краткими, чтобы подавить невежество.
dukeofgaming
3
В вакууме я согласен с вашим советом, но PHP неоправдан. Я всегда удивляюсь, как Марк Цукерберг преуспел, несмотря на ужас PHP,: codinghorror.com/blog/2008/05/…
Джим Г.
1

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

CFL_Jeff
источник
1

Чтобы ответить на вопрос «PHP - это плохой язык», вы должны выяснить, почему данный человек считает, что это плохой язык. Возможно, он работал над плохим проектом, написанным на PHP. Может быть, он просто не любит ставить перед ними переменные $. Может быть, они сами попытались использовать язык и написали неразрешимый беспорядок. Многие программисты из других языков программирования видят PHP и видят беспорядок, потому что то, что имеет смысл в PHP, на самом деле не имеет смысла на другом языке или на других платформах. Например, в PHP массивы являются «клейкой лентой вселенной» и используются для выполнения практически чего угодно, тогда как в других языках программирования такая вещь была бы абсурдной.

Я бы предложил комбинацию ответов здесь.

  1. Как сказал Тайлерл , вы должны показать, что современный PHP значительно лучше, чем его старшие родственники. Прошла гадость create_function. Прошли джунгли вызова includeвручную везде.
  2. Признайте, что есть ошибки в PHP. Есть ошибки в каждом языке программирования. В противном случае многие серьезные программисты полностью проигнорируют ваш ответ как «фанат».
  3. Покажите людям, что легко в PHP, что трудно в других языках программирования. Языки программирования предназначены для упрощения некоторых задач, что обязательно усложняет выполнение других задач. C? Манипулирование памятью и битовые хаки действительно просты, а язык действительно прост, но поддерживать большие приложения сложно. Джава? Не имеет free, и все "OO-иш", но время выполнения велико, и OO может быть ограничением. C ++? Позволяет создавать типы, которые ведут себя точно так же, как примитивные типы (например, int) в языке, но это сопряжено с большими сложностями. PHP? Позволяет действительно легко начать работу без особых знаний в области программирования, но в результате в Интернете появляется много и много мусорного кода.
  4. Признать неязыковые преимущества PHP. В PHP все еще есть много вещей, как языка, с которым можно работать ... раздражает. Но он прост в настройке, прост в развертывании и поставляется с большим набором великолепных библиотек, к которым можно «подключиться» без особой дополнительной работы.

Там есть место для каждого языка. Выбирайте язык в соответствии с имеющейся проблемой, не пытайтесь вводить предпочтительный язык в места, где он не принадлежит.

Билли ОНил
источник
1
-1: Почему вы пытаетесь защитить PHP? Это отстой: codinghorror.com/blog/2008/05/…
Джим Дж.
1
@JimG .: Потому что именно так меня попросил ОП. Я играю адвоката дьявола здесь; Я действительно презираю работу с PHP сам. Но то, что система раздражает в работе, не означает, что в этой системе нет ничего хорошего. Можно учиться даже у крупных взлетов. :)
Билли ONeal
@BillyONeal Почему ты ненавидишь работать с ним? Решать вещи сам.
Джонни
@Johnny: В основном это просто язык сценариев, который плохо подходит для создания больших систем. Языки сценариев отлично подходят для быстрого создания прототипов, простоты развертывания и поставляются с большими стандартными библиотеками в коробке. Но построение больших систем с ними часто приводит к неразрешимому беспорядку из-за неспособности обеспечить проверки и ограничения во время компиляции. Сами вещи, которые делают PHP гибким и подходящим для сценариев сценариев (например, переменные не типизированы), затрудняют создание систем, в которых компонент используют несколько человек.
Билли ONEAL
@Johnny: чтобы уточнить - я не говорю, что строить большие системы с помощью PHP невозможно - Facebook и Co. доказывают, что это очень возможно. Просто это оказывается сложнее, чем с языками, которые обеспечивают лучший синтаксис времени компиляции и семантические проверки.
Билли ONEAL