Як зламати парадигму "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/


9
Для початку позначте всі зауважені анти-PHP коментарі програмістів. Серед модераторів є принаймні один розробник PHP, який дуже любить видаляти ці ...
yannis

23
Написати хороший PHP-код
Чарльз Спрейберрі

42
Лише зауважте, я дуже ненавиджу, коли люди PHP приводять аргумент "FB is build on PHP". Це Bs, він побудований на масивних розподілених системах, таких як Hadoop, а частини, які дійсно роблять речі, знаходяться в C. PHP використовується для шаблонування і інтерфейсу користувача, цього навряд чи достатньо, щоб сказати: "FB побудований на PHP" ...
TC1

10
@NB Так, але в цьому випадку IMHO говорив, що "FB побудований на PHP" - це як би сказати, що StackOverflow побудований на CSS та JavaScript, тому що тут і там є приємні штрихи інтерфейсу ...
TC1

13
Я б не наймав вас, тому що не хочу підтримувати PHP-код. PHP набуває таких функцій, як Perl та JavaScript та інші нестримні мови, але сама його суть була розроблена поспіхом, і це неможливо змінити. Можливо, вам слід подумати про вивчення деяких Джанго, Р.Р. та Грааля і, таким чином, бути агностиком.
Робота

Відповіді:


40

Єдина відповідь, яку я маю, така: все смокче.

Ви можете знайти багато аргументів проти OOP, які є корисними (швидкий пошук виявить їх) порівняно з функціональним або процедурним програмуванням. Ви, схоже, вказуєте, що підтримка ОО PHP захищає його.

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

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

Також зауважте, що успіх програми не має нічого спільного з його кодом. Я чув, що код у Facebook жахливий, але Бог є ефективним. Можливо, те саме стосується і Вікімедії (Вікіпедія побудована на PHP, а також є надзвичайно популярним веб-сайтом). Що насправді важливо - це результати!

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


Тепер для вашого питання: це залежить від того, з ким ви маєте справу

Бізнесмени

Вони в основному дбають про результати та економічну ефективність. Те, що дуже успішні Facebook, Wikipedia та Wordpress використовують PHP, повинно бути більш ніж достатньо, щоб переконати їх у тому, що це ефективна мова для створення успішних програм.

Програмісти

Нехай ваш код говорить сам за себе. Якщо розробник каже, що PHP певним чином поступається, покажіть їм якийсь PHP-код, який ви вважаєте ефективним. Доказ пудингу - в їжі.


8
"Будь-який хороший розробник повинен мати можливість створити дивовижний додаток, передній і задній кінці, незалежно від мови" - повторіть це після того, як ви спробували це в Мальболге.
Майкл Боргвардт

5
Я не думаю, що хороший програміст може написати хороший код мовою, яку він не знає. Можливо, гідно, але не добре. Це тому, що для написання хорошого коду будь-якою мовою потрібні хороші знання бібліотек та самої мови.
svick

4
Я не погоджуюсь; хороший розробник повинен мати можливість ознайомитись з необхідними знаннями для написання хороших додатків. Гарне знання бібліотек та синтаксису є важливим, але це те, що хороший розробник може легко підібрати. Що набагато важче - це алгоритми та концепції (і, мабуть, терпіння) .. навіть якщо мова є Мальболге. А може, я думаю про великого розробника.
Вибухові таблетки

7
success of an application has nothing to do with its code<- Правда. Але коли люди кажуть, що "PHP - це погана мова", вони не мають на увазі "програми, написані на PHP - це погано", швидше, вони означають, що "програми, написані на PHP, часто не цікаво працювати через спагетті з кодом". У програмі PHP написано чудові додатки. Але я не думаю, що ця відповідь стосується того, що означають програмісти, коли вони називають PHP "поганим".
Біллі ONeal

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. Це не та компанія, з якою ви хочете бачитись. Замість того, щоб вказати на те , що ваш код буде шлях більш безпечним , ніж всі , що інші речі.


1
+1 - але - але - Стверджуючи, що ваш код буде "набагато безпечнішим", ніж експертиза коду від декількох фахівців, насправді не затримає багато того, хто наполовину має досвід безпеки. Усі пишуть помилки в безпеці. Хитрість полягає лише в тому, щоб виправити їх на крок попереду поганих хлопців.
Біллі ONeal

@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: Unicode, функціональні особливості, організація стандартної бібліотеки arrayтощо.

Я пропоную те, що - щоб зробити конструктивну дискусію про сильні та слабкі сторони PHP - все це було б добре визнати. "Так, я знаю, що стандартна бібліотека PHP не дуже організована. Але якби вона була написана сьогодні, вона могла б використовувати простори імен та об'єктно-орієнтовані API". "Так, я знаю, що масив за замовчуванням робить невеликий безлад, змішуючи словник та структури масивів. Але якщо хочеться отримати кращі колекції, можна скористатися SPL".

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


2

Чому?

Кожен, хто змушує вас відчувати, що ви повинні захищати себе (будь то кар'єра, подружжя, звички витрачати тощо), витрачає власний час. Ви витрачаєте час на захист себе - це просто приниження невірних людей - тепер ви витрачаєте свій власний час, як і їхній.

Виріжте цих людей зі свого життя - вам краще без них.


4
Отже, відповідь - це сприймати його особисто і ігнорувати ?. Це культурна проблема, я б краще вирішив її і спробую зробити свої аргументи кращими і стислішими, щоб знищити незнання.
герцогство, яке відбулося

3
У вакуумі я погоджуюся з вашими порадами тут, але PHP не можна визнати. Я завжди дивуюсь тому, як Марк Цукерберг досяг успіху, незважаючи на жахливість PHP: codinghorror.com/blog/2008/05/…
Джим Г.

1

Немає короткого і солодкого однолінійного лайнера, який можна переконати, щоб переконати людей у ​​гідності PHP та його розробників, але ви написали дуже переконливий аргумент прямо перед тим, як поставити питання.


1

Для того, щоб звернутися до "PHP - це погана мова", ви повинні з'ясувати, чому відповідна особа вважає це поганою мовою. Можливо, він працював на поганому проекті, написаному на PHP. Можливо, він просто не любить префіксацію їх змінних $. Можливо, вони самі спробували скористатися мовою та написаним нездійсненним безладом. Багато програмістів, які приходять з інших мов програмування, бачать PHP і бачать безлад, тому що те, що має сенс у PHP, насправді не має сенсу ні на іншій мові, ні на інших платформах. Наприклад, у PHP масиви - це «стрічка всесвіту», і вони використовуються для досягнення майже будь-чого, тоді як в інших мовах програмування таке поняття було б абсурдним.

Я б запропонував поєднання відповідей тут.

  1. Як сказав Тайлер , ви повинні показати, що сучасний PHP значно кращий, ніж старший двоюрідний брат. Пропала неприємність create_function. Зникло - це джунглі дзвінків includeвручну скрізь.
  2. Визнайте, що в PHP є несправності. У кожній мові програмування є несправності. Якщо сказати інакше, багато серйозних програмістів повністю ігнорують вашу відповідь як "фанбої".
  3. Покажіть людям прості речі в PHP, які складні в інших мовах програмування. Мови програмування покликані полегшити деякі завдання, що обов'язково ускладнює інші завдання. C? Маніпулювання пам'яттю та біт-хаки дійсно прості, а мова справді проста, але підтримувати великі програми важко. Java? Немає free, і все "OO-ish", але час виконання великий, і ОО може бути обмежуючим. C ++? Дозволяє створювати типи, які поводяться точно так само, як примітивні типи (наприклад, int) у мові, але це має велику кількість складності. PHP? Починати по-справжньому легко без особливих знань з програмування, але в результаті багато і сміттєвий код розміщено в Інтернеті.
  4. Визнайте немовні переваги PHP. У PHP є ще багато речей, як мови, з якою можна ... прикро працювати. Але це просто налаштовується, легко розгортається та постачається з великим набором чудових бібліотек, до яких можна «підключити» без особливих додаткових робіт.

Тут є місце для кожної мови. Вибирайте мову відповідно до наявної проблеми, не намагайтеся вбирати вподобану мову в місця, де вона не належить.


1
-1: Чому ви намагаєтесь захистити PHP? Це смокче: codinghorror.com/blog/2008/05/…
Джим Г.

1
@JimG. Тому що це те, що мене попросив зробити ОП. Я тут граю захисника диявола; Я дуже зневажаю роботу з PHP. Але тільки те, що система дратує працювати з не означає, що в цій системі немає нічого хорошого. Можна навчитися навіть у великих ф-ів. :)
Біллі ONeal

@BillyONeal Чому ти ненавидиш працювати з ним? Сам вирішуючи речі.
johnny

@Johnny: Здебільшого, це просто сценарій мови, який погано підходить для створення великих систем. Мови скриптів чудово підходять для швидкого складання прототипів, простоти розгортання та поставляються з великими стандартними бібліотеками у вікні. Але побудова з ними великих систем часто призводить до незбагненного безладу через неможливість примусового виконання перевірок у часі збирання та обмежень. Самі речі, які роблять PHP гнучким і корисним для сценаріїв сценаріїв (наприклад, змінні нетипізовані), ускладнюють побудову систем з більш ніж кількома людьми, що використовують компонент.
Біллі ONeal

@Johnny: Для уточнення - я не кажу, що створити великі системи з PHP неможливо - Facebook і Co. є підтвердженням того, що це дуже можливо. Просто це закінчується складніше, ніж з мовами, які забезпечують кращу компіляцію синтаксису часу та семантичних перевірок.
Біллі ONeal
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.