J'ai par exemple réalisé :

Encore aujourd'hui je suis responsable du développement du logiciel de gestion du temps opentime, qui utilise exclusivement PHP.

Bref, des projets très différents, plus ou moins complexes, avec des contraintes extrémement variables en terme de performance, fiabilité et sécurité.

Et pourtant, il ne se passe pas une semaine sans que je m'exclame, à la grande surprise de mes collègues, de mon patron ou de ma famille :

PHP, c'est de la merde !

Et inévitablement, ces derniers me demande pourquoi je pense cela d'un langage qui finalement me fait vivre au quotidien et a amplement démontré qu'il est capable de répondre à la plupart des besoins.

Ma réponse tient en plusieurs points, dont voici une liste certainement non exhaustive :

  • Je suis sincérement convaincu que celui qui peut le mieux critiquer quelque chose est celui qui connait le mieux cette chose. Et sans me vanter, PHP, je connais. je parle donc en toute connaissance de cause.
  • Les choix techniques qui ont été effectués au niveau de son développement sont parfois très discutables et posent un certain nombres de problèmes. J'y reviendrais dans un ou plusieurs billets à venir.
  • Il est développé par des gens qui ont parfois plus leur place dans une cours de maternelle que derrière un écran. Attention, je ne présume pas de leur capacité ni de leur savoir-faire. Je dis juste que certain ont un caractère assez fort, pour le moins. J'invite d'ailleurs ceux qui ne sont pas convaincu à suivre pendant quelque temps la mailing-list interne ou à lire quelques commentaires sur le bugtracker php. Du coup, des solutions ou des fonctionnalités intéressantes sont parfois tout simplement ignorées, car elles ne rentrent pas dans la vision du langage qu'ont certain développeurs, avec qui toute discussion est impossible. Ou alors, il faut un travail de titan pour faire accepter une fonctionnalité qui ne sera implémentée que partiellement, comme le typage des arguments de fonctions et de méthodes.
  • Le manque de vision globale sur le projet. Lors d'un récent apéro php, quelqu'un a parlé de cette fameuse version qui implémentait en standard une classe Date, comme 90% des projets existant à l'époque... Il s'en est suivi un joyeux bazar et la sortie en catastrophe d'une nouvelle version qui implémentait non plus cette fameuse classe Date, mais une classe DateTime...
  • Les bugs. Dans 80% des cas d'utilisation, PHP fait ce qu'on attend de lui. Le problème, ce sont les 20% restant. Et si par hasard vous êtes dans ces 20%, vous êtes dans la merde. D'ou la citation qui sert de titre à ce billet. Parce qu'en règle générale, le débuggage est pratiquement impossible, à moins de vouloir lancer la grosse artillerie. Je vous parlerais prochainement d'un problème que j'ai eu avec l'extension memcache, par exemple...
  • Une implémentation du modèle objet... comment dire... merdique ? Oui, c'est le mot. Faire de l'objet en PHP , c'est un peu comme lorsque les américains ont voulu aller sur la Lune dans les années 60. C'est possible, mais ca demande un gros effort. Pourquoi ? Parce que même s'il veut faire croire le contraire, PHP n'est pas un langage objet. C'est un langage procédural sur lequel a été développé une couche capable de faire de l'objet. Nuance. Ce qui pose un certain nombre de problèmes, sur lesquels je reviendrais également ultérieurement.

Bref, certes PHP est un langage capable de répondre à énormément de problèmatiques, mais cela ne l'empêche pas d'avoir un certain nombre de défauts, et comme je suis bien placé pour en parler, je n'hésite pas à le dire :

PHP, c'est de la merde !