Comment briser le paradigme «php is a bad language»? [fermé]

19

PHP n'est pas un mauvais langage (ou du moins pas aussi mauvais que certains le suggèrent). J'avais des professeurs qui ne savaient même pas que PHP était orienté objet jusqu'à ce que je le leur dise. J'ai des clients qui se méfient immédiatement de nous quand nous disons que nous sommes des développeurs PHP et nous demandons de ne pas utiliser des langages et des frameworks chics tels que Django ou RoR, ou des langages "d'entreprise et solides" tels que Java et ASP.NET.

Facebook est construit sur PHP. Il existe de nombreux projets solides qui alimentent le Web comme Joomla et Drupal qui sont utilisés dans l'entreprise et les gouvernements. Il existe des frameworks et des bibliothèques qui ont certaines des meilleures architectures que j'ai vues dans tous les langages (Symfony 2, Doctrine). PHP a la meilleure documentation que j'ai vue et une grande communauté de professionnels.

PHP a des fonctionnalités OO avancées telles que la réflexion, les interfaces, sans parler du fait que PHP prend désormais en charge la réutilisation horizontale de manière native et propre via les traits .

Il y a de mauvais programmeurs et des script kiddies qui donnent à PHP une mauvaise réputation, mais alimentent la communauté PHP en même temps, et parce qu'il est si facile de faire des choses PHP, vous pouvez souvent faire les choses de la mauvaise façon, d'accord, mais pourquoi blâmer le Langue?.

Maintenant, pour résumer cela en une vraie question: quel serait un bon argument solide et court et doux pour éviter d'être mal vu et arrêter les préjugés d'un seul coup et défendre votre honneur lorsque vous dites que vous êtes un développeur PHP? .

(biscuit gratuit avec de la crème fouettée à ceux qui ont des preuves empiriques de convaincre quelqu'un - client ou autre - sur place)

PS: Nous utilisons Symfony , et le code finit par être beau et maintenable

PPS: Facebook est écrit en PHP, compilé en C ++ via HipHop et déployé sur Hadoop. Ici: http://arstechnica.com/business/2012/04/exclusive-a-behind-the-scenes-look-at-facebook-release-engineering/1/

dukeofgaming
la source
9
Pour commencer, signalez tous les commentaires anti-PHP sur les programmeurs. Il y a au moins un développeur PHP parmi les modérateurs qui adore vraiment les supprimer ...
yannis
23
Écrivez un bon code PHP
Charles Sprayberry
42
Juste une note, je déteste vraiment quand les gens PHP introduisent l'argument "FB est construit sur PHP". C'est bs, il est construit sur des systèmes distribués massifs comme Hadoop et les parties qui font vraiment avancer les choses sont en C. PHP est utilisé pour les modèles et l'interface utilisateur, c'est à peine suffisant pour dire "FB est construit sur PHP" ...
TC1
10
@NB Oui, mais dans ce cas, à mon humble avis, dire que "FB est construit sur PHP" revient à dire que StackOverflow est construit sur CSS et JavaScript, car il a de belles touches d'interface utilisateur ici et là ...
TC1
13
Je ne vous embaucherais pas parce que je ne veux pas maintenir le code PHP. PHP gagne des fonctionnalités tout comme Perl et JavaScript et d'autres langages précipités, mais son cœur même a été conçu à la hâte et on ne peut pas changer cela. Vous devriez peut-être envisager d'apprendre quelques Django et RoR et Grails et donc être indépendant de la langue.
Job

Réponses:

40

La seule réponse que j'ai est la suivante: tout est nul.

Vous pouvez trouver des tonnes d'arguments contre la POO (une recherche rapide les révélera) contre une programmation fonctionnelle ou procédurale. Vous semblez indiquer que le support OO de PHP le défend.

Le vide de Google est nul et vous trouverez des résultats pour tout. Le python craint . Ruby craint . Rails craint . PHP craint . Java craint .

Vous voulez savoir ce qui craint vraiment? Programmeurs. Les programmeurs craignent. Tout bon développeur doit pouvoir créer une application étonnante, front-end et back-end, quelle que soit la langue - même s'il ne la connaissait pas! (C'est-à-dire qu'un bon programmeur devrait être capable d'apprendre et de travailler efficacement avec n'importe quelle langue).

Notez également que le succès d'une application n'a rien à voir avec son code. J'ai entendu dire que le code Facebook est affreux, mais par Dieu est-il efficace. Il en va probablement de même pour Wikimedia (Wikipédia est construit sur PHP et est également un site Web extrêmement populaire). Ce qui compte vraiment, ce sont les résultats!

PHP est le langage que je connais personnellement le mieux. Je vais le défendre à mort. J'ai travaillé avec des frameworks PHP, directement du code PHP et PHP, python et ruby (et même Java) tous pour le développement web. Je ne peux pas dire que l'un est particulièrement meilleur que l'autre. Ce qui importe le plus, ce sont les développeurs et les algorithmes. J'ai vu du code incroyablement bon et complètement horrible dans de nombreux langages (en particulier PHP car j'ai tellement d'exposition).


Maintenant pour votre question: cela dépend de qui vous avez affaire

Les hommes d'affaires

Ils se soucient principalement des résultats et de la rentabilité. Le fait que Facebook, Wikipedia et Wordpress connaissent beaucoup de succès utilisent PHP devrait être plus que suffisant pour les convaincre que c'est un langage efficace pour créer des applications réussies.

Programmeurs

Laissez votre code parler de lui-même. Si un développeur dit que PHP est inférieur d'une manière ou d'une autre, montrez-lui du code PHP que vous croyez efficace. La preuve du pudding est dans l'alimentation.

Pilules d'explosion
la source
8
"Tout bon développeur devrait être en mesure de créer une application étonnante, front-end et back-end, quelle que soit la langue" - répétez cela après l'avoir essayé dans Malbolge.
Michael Borgwardt
5
Je ne pense pas qu'un bon programmeur puisse écrire du bon code dans un langage qu'il ne connaît pas. Décent, peut-être, mais pas bon. En effet, écrire un bon code dans n'importe quel langage nécessite une bonne connaissance des bibliothèques et du langage lui-même.
svick
4
Je ne suis pas d'accord; un bon développeur doit être en mesure de se familiariser avec les connaissances nécessaires pour écrire de bonnes applications. Une bonne connaissance des bibliothèques et de la syntaxe est importante, mais c'est quelque chose qu'un bon développeur peut facilement comprendre. Ce qui est beaucoup plus difficile, ce sont les algorithmes et les concepts (et probablement la patience) .. même si le langage est Malbolge. Ou peut-être que je pense à un grand développeur.
Pilules d'explosion
7
success of an application has nothing to do with its code<- Vrai. Mais quand les gens disent que "PHP est un mauvais langage", ils ne signifient pas "les applications écrites en PHP sont mauvaises", elles signifient plutôt que "les applications écrites en PHP ne sont souvent pas amusantes à travailler à cause du code spaghetti". Il y a de grandes applications écrites en PHP, bien sûr. Mais je ne pense pas que cette réponse traite de ce que les programmeurs veulent dire quand ils appellent PHP "mauvais".
Billy ONeal
2
@BillyONeal Quelle est votre métrique pour savoir si une langue est "bonne" ou "mauvaise"? Les applications sont tout .. personne ne se soucie du code . Linus Torvalds s'est déchaîné sur la gravité du C ++ - vous pouvez dire que tout est mauvais car certains programmeurs y écrivent du mauvais code.
Pilules d'explosion
20

PHP a une histoire sordide. C'est beaucoup mieux maintenant que c'était il y a encore peu de temps, mais il y a eu un temps, un temps très long, où de nombreuses mauvaises pratiques et schémas étaient encouragés et difficiles à éviter. Il existe toute une génération de terrible code PHP qui est encore en marche, et dans la mesure où les nouveaux programmeurs apprennent en lisant l'ancien code, ils apprennent un mauvais comportement. PHP ne mérite peut-être pas maintenant sa réputation de black-end, mais il l'a certainement gagné.

Votre meilleur pari pour défendre PHP est de prendre une distance prudente et de distinguer l'état actuel de l'art de l'histoire que tout le monde connaît. Vous pouvez dire que PHP n'est pas un langage terrible, mais si vous parlez à quelqu'un qui est dans l'industrie depuis un certain nombre d'années, sa mémoire lui dit le contraire.

Montrez-leur comment l'équipe PHP a appris de leurs erreurs et changé le langage pour le mieux. Fini le temps des citations magiques et des registres mondiaux. Fini le paradigme global-tout, et le mode sans échec, et mysql_escape_string. Expliquez-leur que les vrais programmeurs PHP utilisent toujours des espaces de noms et des requêtes paramétrées, ils évitent les fonctions obsolètes et mettent toujours leur code de bibliothèque en dehors de la racine du document.

PHP a changé et les programmeurs PHP ont changé. C'est pourquoi PHP est la merveilleuse plate-forme qu'elle est aujourd'hui. De plus, c'est la seule plateforme que vous savez que vos clients auront préinstallée. C'est énorme.

En guise de remarque, je recommanderais de ne pas citer les moteurs et les cadres CMS existants comme une grande victoire pour PHP. Vous courez le risque qu'ils signalent des éléments tels que l' étude de sécurité Websense d'il y a 4 jours , montrant que 94% des infections de sites Web récentes étaient dirigées contre des sites Web PHP exécutant des logiciels comme Joomla et Wordpress. Ce n'est pas le genre d'entreprise avec laquelle vous voulez être vu. Au lieu de cela, faites remarquer que votre code sera beaucoup plus sécurisé que tous ces autres éléments.

tylerl
la source
1
+1 - mais - mais - Affirmer que votre code sera "beaucoup plus sûr" que les évaluations par les pairs du code par plusieurs professionnels ne va pas vraiment retenir beaucoup d'eau à quiconque à moitié expérimenté en sécurité. Tout le monde écrit des bogues de sécurité. L'astuce consiste simplement à les fixer une longueur d'avance sur les méchants.
Billy ONeal
@BillyONeal yep. Le dernier paragraphe est destiné à vous paraître un peu ... étrange et à vous faire vraiment repenser votre approche de la sécurité. J'ai fait beaucoup de recherches sur la sécurité des applications Web PHP par rapport aux applications Web non PHP, et les rapports sont inquiétants et massivement biaisés par rapport à PHP. Cela ne veut pas dire que PHP est mauvais, mais la sécurité est une réelle préoccupation.
tylerl
1
"En outre, c'est la seule plate-forme que vous savez que vos clients auront préinstallée" Cette déclaration me semble totalement fausse, tous les serveurs déployés ne sont pas déployés avec une pile LAMPhp, et aucune distribution de serveur Linux commune avec laquelle j'ai essayé n'est livrée PHP pré-installé. Cependant, chaque distribution Linux que j'ai jamais utilisée est livrée avec Python 2.x. Je soupçonne que certains utilitaires communs en dépendent.
ThorSummoner
9

PHP est le COBOL du web. Les deux langues ne sont pas respectées, mais de nombreuses personnes gagnent leur vie en construisant et en maintenant des systèmes écrits en elles, et elles sont présentes en volume dans presque tous les principaux systèmes informatiques de leur monde natal ( c'est -à- dire , le Web et les entreprises commerciales respectivement). Les deux langues sont méprisées par les praticiens d'autres langues plus populaires, basées en grande partie sur des habitudes anciennes et obsolètes pratiquées par des programmeurs qui ont depuis appris mieux et amélioré leurs outils.

PHP devrait être si chanceux qu'il vit la vie de COBOL. COBOL existe depuis plus longtemps que tout sauf FORTRAN, et il ne disparaîtra pas de si tôt. Il existe de nombreux programmes COBOL dans l'utilisation quotidienne qui sont plus anciens que les personnes qui les maintiennent. Ce n'est peut-être pas «la nouvelle ardeur», mais il y aura toujours de l'argent à gagner en travaillant avec lui.

Ross Patterson
la source
4

Je pense qu'il peut également être utile de comprendre l'autre côté de la médaille et de reconnaître les pénuries de PHP. Bien que PHP ait beaucoup progressé en tant que langage de modèle, il y a encore beaucoup de choses qui pourraient être améliorées. Il y a certains points où PHP fait encore défaut: Unicode, les fonctionnalités, l'organisation de la bibliothèque standard, arrayetc.

Ce que je suggère, c'est que - afin de faire une discussion constructive sur les forces et les faiblesses de PHP - il pourrait être bon de reconnaître tout cela. "Oui, je sais que la bibliothèque standard PHP n'est pas très organisée. Mais si elle a été écrite aujourd'hui, elle pourrait utiliser des espaces de noms et des API orientées objet". "Oui, je sais que le tableau par défaut gâche un peu en mélangeant les structures de dictionnaire et de tableau. Mais si l'on veut de meilleures collections, on peut utiliser le SPL".

Votre point de vue sera plus fort si vous montrez que vous savez que les arguments des autres ont une raison.

Andrea
la source
2

Pourquoi?

Quiconque vous fait sentir que vous devez vous défendre (carrière, conjoint, habitudes de dépenses, etc.) perd son temps. Vous prenez le temps de vous défendre, c'est simplement humourer le mauvais type de personnes - maintenant vous perdez votre propre temps, ainsi que le leur.

Coupez ces gens de votre vie - vous êtes mieux sans eux.

JK
la source
4
Donc, la réponse est de le prendre personnellement et de l'ignorer?. Il s'agit d'un problème culturel, je préfère le résoudre et essayer d'améliorer mes arguments de manière plus concise pour abattre l'ignorance.
dukeofgaming
3
Dans le vide, je suis d'accord avec vos conseils ici, mais PHP est indéfendable. Je m'émerveille toujours de la réussite de Mark Zuckerberg malgré l' horreur
Jim G.
1

Il n'y a pas de one-liner court et doux que vous pouvez sortir pour convaincre les gens de la valeur de PHP et de ses développeurs, mais vous avez écrit un argument très convaincant juste avant de poser la question.

CFL_Jeff
la source
1

Afin d'aborder le "PHP est un mauvais langage", vous devez comprendre pourquoi l'individu en question pense que c'est un mauvais langage. Peut-être qu'il a travaillé sur un mauvais projet écrit en PHP. Peut-être qu'il n'aime tout simplement pas préfixer ses variables $. Peut-être qu'ils ont eux-mêmes tenté d'utiliser la langue et le désordre écrit incontrôlable. De nombreux programmeurs venant d'autres langages de programmation voient PHP et voient un gâchis, car ce qui a du sens en PHP n'a pas vraiment de sens dans un autre langage ou sur d'autres plates-formes. Par exemple, en PHP, les tableaux sont le "ruban adhésif de l'univers" et sont utilisés pour accomplir à peu près n'importe quoi, alors que dans d'autres langages de programmation, une telle chose serait absurde.

Je suggérerais une combinaison des réponses ici.

  1. Comme l'a dit tylerl , vous devez montrer que le PHP moderne est nettement meilleur que ses cousins ​​plus âgés. Fini la méchanceté de create_function. Fini la jungle des appels includemanuels partout.
  2. Reconnaissez qu'il y a des défauts dans PHP. Il y a des défauts dans chaque langage de programmation. Dire le contraire fera que de nombreux programmeurs sérieux ignoreront complètement votre réponse comme étant un "fanboi".
  3. Montrez aux gens des choses faciles en PHP qui sont difficiles dans d'autres langages de programmation. Les langages de programmation sont conçus pour faciliter certaines tâches, ce qui rend nécessairement d'autres tâches difficiles. C? La manipulation de la mémoire et le piratage des bits sont vraiment faciles, et le langage est vraiment simple, mais maintenir de grandes applications est difficile. Java? N'a pas free, et tout est "OO-ish", mais le temps d'exécution est grand et OO peut être limitant. C ++? Vous permet de créer des types qui se comportent exactement comme des types primitifs (par exemple, int) dans le langage, mais qui s'accompagnent d'une grande complexité. PHP? Il est très facile de commencer sans beaucoup de connaissances en programmation, mais en conséquence, beaucoup de codes poubelles sont publiés sur Internet.
  4. Reconnaissez les avantages non linguistiques de PHP. Il y a encore beaucoup de choses en PHP, en tant que langage qui peut être ... ennuyeux à travailler. Mais il est facile à configurer, facile à déployer et est livré avec un large éventail de bibliothèques géniales que vous pouvez "brancher" sans trop de travail supplémentaire.

Il y a une place pour chaque langue. Choisissez la langue qui convient au problème, n'essayez pas de chausse-pied une langue préférée dans des endroits où elle n'appartient pas.

Billy ONeal
la source
1
-1: Pourquoi essayez-vous de défendre PHP? Ça craint: codinghorror.com/blog/2008/05/…
Jim G.
1
@ Jim: Parce que c'est ce que le PO m'a demandé de faire. Je joue l'avocat du diable ici; Je méprise vraiment de travailler avec PHP moi-même. Mais ce n'est pas parce qu'un système est ennuyeux de travailler qu'il n'y a rien de bon à propos de ce système. On peut apprendre même des f *** ups majeurs. :)
Billy ONeal
@BillyONeal Pourquoi détestez-vous travailler avec elle? Décider des choses moi-même.
johnny
@Johnny: Généralement, il s'agit simplement d'un langage de script qui ne convient pas à la construction de grands systèmes. Les langages de script sont parfaits pour le prototypage rapide, la facilité de déploiement et sont livrés avec de grandes bibliothèques standard dans la boîte. Mais la construction de grands systèmes avec eux entraîne souvent un gâchis impossible à entretenir en raison d'une incapacité à appliquer les vérifications et les contraintes de compilation. Les choses mêmes qui rendent PHP flexible et bon pour les scénarios de script (par exemple, les variables ne sont pas typées) rendent difficile la construction de systèmes avec plus de quelques personnes utilisant un composant.
Billy ONeal
@Johnny: Pour clarifier - je ne dis pas que la construction de grands systèmes avec PHP est impossible - Facebook et Co. sont la preuve que c'est très possible. Juste que cela finit par être plus difficile qu'avec les langages qui fournissent une meilleure syntaxe de temps de compilation et des contrôles sémantiques.
Billy ONeal