Le temps passe, et la mauvaise image du langage PHP marque les esprits. Mauvaise image, qui n’est pas complètement dénuée de sens, même si les choses évoluent doucement. PHP est considéré par beaucoup comme un langage de débutants, et bon nombre d’entreprises et de personnes font le choix d’utiliser ce langage en mettant de coté les bonnes pratiques de la conception logicielle, traînant avec eux une vieille image ternie de ce qu’est PHP actuellement.
D’un autre coté, des projets matures et fiables voient le jour, héritant du savoir faire et de la qualité du monde Java, un exemple frappant est Flow3, et plus récemment, Symfony 2 (ce qui m’à d’ailleurs agréablement surpris). Le monde de PHP est donc en pleine mutation, avec la montée en puissance de concepts avancés tels l’inversion de contrôle, les tests unitaires et (enfin!), de la VRAIE persistance.
A l’origine, un langage de débutants…

Ce qui plombe le plus PHP, doit être le non professionnalisme d’une partie de sa communauté, découvrant le développement via PHP — langage permissif au possible — et laissant la porte ouverte à des aberrations folles.
Le langage laisse (trop) libre les nouveaux venus, et on ne parles que peu de tests unitaires, de code commenté (j’en passe des tonnes, volontairement). Facile donc de faire les choses de travers, et vous ne trouverez que peu de personnes pour vous encourager à ne pas continuer dans ce sens, à moins de savoir vers ou chercher.
On trouve encore trop de scripts en PHP avec une approche fonctionnelle (de par le passé de php et son approche fonctionnelle de la programmation), et trop de bibliothèques pas ou peu testées, bref, dans l’ensemble c’est une catastrophe. Je m’amuse à faire l’analogie avec la construction de maisons avec du scotch.
… qui tends à se professionnaliser
Je suis le premier à dire que les (petites) entreprises (en général) manquent d’un savoir faire crucial en terme de bonnes pratiques, et pourtant, ces dernières commencent à s’intéresser de près à des concepts avancés, et aux bonnes pratiques. Les frameworks utilisés en entreprise sont souvent testés unitairement (Jelix, symfony, Zend Framework, pour ceux que j’ai eu l’occasion d’apprivoiser), et les bonnes pratiques sont parfois vraiment mises en avant.
Avec la sortie de PHP 5.3, on peut désormais utiliser des fonctionnalités telles que les espaces de noms ou les closures, concepts déjà implémentés depuis fort longtemps dans d’autres langages, et qui venaient à briller par leur absence.
Et un front de raz-le-bol général qui bat son plein: on veut du code testé, du code bien fait, on en veux plus de la soupe (et de la programmation spaghetti) ! Rébellion !
Même si je fonde de grands espoirs dans PHP, et que je penses que tout n’est pas à jeter, qu’il y à une réelle motivation qui commence à se faire sentir de la part de la communauté, je me demandes si PHP joue dans la même cour que Java, ou que Python et Ruby pour ne citer qu’eux, qui bénéficient d’une communauté forte et avide de bonnes pratiques.
Et vous qui utilisez PHP, vous en pensez quoi ? PHP peut-il être comparé à Java, à Python, à Ruby ? Est-ce une abération de faire de telles comparaisons? ou est-ce définitivement à un autre niveau ?
Je suis d’accord, et c’est surtout depuis l’arrivée de PHP5 qu’on peut réellement commencer à faire de telles comparaisons avec Java et autres. Il est maintenant possible de mettre en applications des Design Patterns très élégamment avec PHP
De plus, je trouve PHP plus compréhensible, et plus souple même en restant rigoureux dans son utilisation.
Godefroy (@Skreo)
25 fév 10 at 1:45
Impossible de comparer PHP à Python ou Java. Mais PHP requiert moins de compétences…
Pour moi presque tout est à jeter dans PHP… On a beau avoir des frameworks, ils souffrent tout de même énormément du fait que le langage en lui-même soit nul.
Et une lecture en complément: http://stu.mp/2009/09/why-i-switched-from-php-to-python.html
(PS: ne me jetez pas de pierres, je suis un développeur PHP la journée ^^)
Bastien
25 fév 10 at 2:07
C’est vrai que je n’aborde pas la question du langage en lui même.
Tu fait bien de le pointer du doigt Bastien, parce qu’il me semble que PHP, pour en avoir fait un brin, est un langage moche. La preuve la plus simple qui me vient à l’esprit étant comment je suis émerveillé à chacune de mes découvertes des possibilités du langage python.
Comme je le disais dans un précédent billet, python m’amène tout ce que j’ai toujours essayé de faire en PHP. Alors pourquoi s’escrimer ?
Pour autant, je vois d’un très bon oeil des projets comme Flow3 et Symfony 2, parce qu’ils permettent d’apporter des concepts importants sur le tapis. On parles enfin d’injection de dépendances, d’inversion de contrôle, d’une vraie persistance (et pas de cette horreur d’active record).
Certes, on garde au fond une structure de langage qui n’est pas très riche, et qui reste peu agréable à utiliser (à mon avis), mais on y amène des concepts intéressants.
Ça veut dire quoi ? Tout simplement que les personnes qui sont habituées à faire du PHP seront susceptibles de tomber plus souvent sur ce types de concepts (peut être pour finalement aller voir ailleurs), et qu’on profite de la facilité d’accès de PHP pour exposer des concepts avancés.
En attendant, il reste bien plus plaisant de faire du python que du PHP, c’est bien sur
Alexis
25 fév 10 at 2:50
@Bastien : je te lance un petit gravier, tout de même
Un langage n’est jamais nul : il peut être beau, moche, orienté objet, pas du tout, un peu, beaucoup, passionnément… De plus, un langage grandit, évolue, et se bonifie souvent avec l’âge.
Par contre, un développeur peut être nul, ignorer l’existence de design patterns (par flemme) et des bonnes pratiques (par flegme), et ne pas suivre l’évolution du langage qu’il utilise (comme quoi, php4 a tout de même un aspect persistant…)
Après avoir développé de grosses daubes en php, lorsqu’on rencontre un langage comme Python ou Ruby, je me suis dit : « jamais je ne reviendrai au php» (et je ne suis pas le seul). Rails est alors devenu mon jouet préféré, ma bible d’inspiration, mon « bijoux» .
Et puis bon, contexte professionnel faisant foi, j’ai changé de boîte. Heureusement, ma curiosité a pris le dessus sur mes à-priori de « Ruby-addict» , et j’ai accepté de bosser sur une plate-forme basée sur Symfony. De nouveau, nez-à-nez avec du php…
Mais php a changé! Enfin une orientation objet (ou du maoins partiellement), un framework bien en pied (et français, s’il vous plait…), et de nombreuses idées empruntée à (héritées de ?) la cour des « grands» . D’accord, me direz-vous, on se trimbale toujours avec quelques « array» qui n’on rien d’un objet, mais est-ce bien là l’essentiel ?
Il ne faut jamais dire « jamais» , car tout se transforme. Ruby et Python doivent beaucoup à leur ancêtres, et php leur dot beaucoup aujourd’hui. next()
« Programming languages are like girlfriends: the new one is better because *you* are better» [http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_switched_back_to_p_1.html]
Guillaume
13 mar 10 at 12:09