Peux-tu te présenter en quelques mots ?

Mathieu ROBIN, apprenti en dernière année d'ingénierie en développement web chez un éditeur de logiciels.

Je développe au quotidien des services utilisant le Zend Framework.

Sur quel type de projets ?

Ces services alimentent divers outils de reporting pour l'intranet de la société.

Il y a énormément de Business Intelligence et de très grosses questions de performances et d'optimisation, vu qu'il faut pouvoir toucher plusieurs milliers de personnes à travers le monde en simultané.

Quand as-tu découvert PHP ?

J'ai découvert le langage dès le début de mes études en 2004.

J'ai toujours voulu faire du web, et à l'époque PHP était le langage le plus avancé pour cela.

J'ai donc commencé avec l'aide d'une de mes professeurs.

À tes débuts, qu'est ce qui t'as séduit dans le langage ?

Je voulais apprendre rapidement pour faire des choses qui m'amusaient.

PHP est un langage très accessible, c'est le premier point qui m'a plu.

L'autre était le fait que le typage n'est pas son fort.

J'étais très branché sur l'algorithmique à ce moment là.

Je ne voulais pas m'embêter avec des conversions de type qui ralentissaient plus qu'autre chose.

De plus, ce n'est même pas la peine d'essayer de compter les hébergeurs supportant PHP.

C'est d'ailleurs une grande force du langage.

Pour un coût relativement dérisoire, il est facile d'héberger ses développements, ce qui est bien moins vrai pour Java et .NET.

Et au fil de ton expérience, qu'est ce qui t'as le plus rebuté ?

Très clairement le manque de professionnalisation, car j'ai alors travaillé avec des personnes capablent de faire plein de choses très vite en PHP, mais malheureusement, qui codaient vraiment salement.

Il n'y avait aucune méthodologie, aucun test unitaire, et c'était essentiellement du bricolage réalisé à l'aide de bouts de code récupérés à droite et à gauche.

Avec l'apparition des frameworks comme Symfony ou Zend Framework, et le passage à PHP 5, la situation s'est améliorée mais la promotion n'a pas vraiment été efficace et bon nombre voit encore PHP comme un langage d'amateurs.

Quand on ne veut pas travailler dans une agence web, car elles sont pour la plupart un vrai cauchemar, on se retrouve assez vite dans le monde de l'industrie.

Comment justifier alors qu'un langage n'est pas pour les amateurs et les gamins, quand on n'a pas besoin de déclarer les variables, que la cohérence entre les noms n'est absolument pas assurée.

Autre exemple, vous pouvez aussi bien écrire echo('ma chaine'); que echo 'machaine';, ce qui n'a pas pour effet de simplifier les choses.

Ou bien encore, vous pouvez définir une chaîne contenant des variables de 3 façons :

  1. "machaine" . $mavariable
  2. "machaine$mavariable"
  3. 'machaine' . $mavariable

La première solution est une aberration pour les performances et la deuxième a un poil plus de sens mais n'est pas forcément meilleure.

Seule la troisième solution assure les meilleures performances.

Seulement, je suis convaincu qu'il y a peu de développeurs qui connaissent la subtilité et la prennent en compte, ce qui est malheureux.

Enfin, avec les frameworks, la persistance de données a commencé à apparaître, mais on ne peut pas dire que ce soit du même niveau qu'Hibernate ou JPA pour Java, ou LinQ de .NET, même si ce dernier a encore des progrès à effectuer pour ne pas être compatible qu'avec SQL Server.

De plus, même si il existe des ouvrages très bien fait autour de PHP, ils sont noyés au milieu de centaines de choses infâmes qui sont un concentré de bêtises, de copier-coller et de choses plus ou moins testées, bien que ce soit aussi le cas (dans une proportion moindre) pour tout autre langage.

Que faudrait-il faire à ton avis au niveau "promotionnel" pour améliorer la perception de PHP ?

Il me semble impératif que PHP adopte un typage fort si il veut prétendre à un titre de langage professionnel.

J'en parlais récemment et plus largement au cours d'un billet sur mon blog.

C'est à mon humble avis, vraiment le point le plus pénalisant pour lui.

Après, il y a aussi l'hétérogénéité des noms de fonctions et de l'ordre des paramètres.

Je ne suis pas du tout d'accord avec Rasmus Lerdorf sur le fait qu'un langage n'est pas fait pour être beau mais pour être pratique.

Cependant, quand on galère à se rappeler le nom des fonctions, je pense que ce n'est pas efficace du tout, et pas efficace/pas pratique, ça se tient quand même la main.

Il faudrait également une meilleure documentation au sujet de l'implémentation des bibliothèques PHP pour améliorer les performances, où plutôt une meilleure visibilité sur cette possibilité.

Honnêtement, je pense qu'environ 90% des développeurs PHP ne savent pas qu'on peut le faire alors que ça a des avantages non-négligeables.

Pour s'en convaincre, il suffit par exemple de regarder sur Developpez.com.

Quand on recherche des informations sur ce sujet, il n'y a à priori que deux discussions qui ressortent.

Intégrer un typage fort impliquerait de casser la compatibilité avec l'existant, penses-tu que ce serait une bonne chose ?

Je ne suis pas certain que ce soit toujours la solution idéale, mais parfois, ça peut faire plus de bien que de mal.

Quand il s'agit de remettre beaucoup de choses à plat dans le bon sens, je pense que c'est une bonne solution.

Mais il faudra certainement du temps pour que tout le monde s'adapte, et c'est normal.

Utilises-tu encore PHP actuellement ?

Oui, mais à priori, ça ne va pas encore durer très longtemps.

Je viens de signer un CDI pour faire du Java et du Flex.

Je l'utilise aussi pour des petits projets personnels, mais même dans ce cadre, je pense arriver à l'abandonner également.

Pourquoi être passé à Java et .NET ?

Je connaissais déjà le Java par des expériences aussi bien en projet d'école que d'entreprises.

Je cherchais un CDI pour faire suite à la fin imminente de mes études, et je souhaitais également quitter le monde du PHP.

Java était donc la solution la plus indiquée.

Cependant, je me forme à .NET en parallèle, car je le trouve plus agréable.

Je repense également à l'interview d'Eric Daspet qui suggérait que le débugger est une vraie calamité à installer, ce que je ne peux m'empêcher de confirmer.

De base, Eclipse et NetBeans pour Java ou encore Visual Studio et SharpDevelop pour .NET intègre un débugger pour ces langages.

Comment se fait t'il qu'Eclipse PDT, par exemple, n'intègre toujours pas Xdebug de base par exemple ?

D'ailleurs, quand je vois qu'une majorité de mes collègues utilisent encore des outils comme Notepad++, je constate un vrai manque de communication aux sujets des IDE.

Pourtant, rien que l'auto-complétion est un vrai plus pour un développeur consciencieux.

Je regrette d'ailleurs beaucoup l'arrêt du développement d'Aptana pour PHP, même si leur souhait de contribuer à PDT est tout à fait louable.

J'aimais beaucoup cet IDE.

Même Google et son plugin Eclipse pour GWT a mis en place cet outil dès le début.

C'est pourtant un gain de temps non-négligeable de pouvoir suivre l'exécution d'un script sans avoir à mettre des logs partout.

Enfin, Java et .NET intégre vraiement le mécanisme des exceptions.

Je sais qu'il est présent dans PHP, mais aucune méthode de base ne s'en sert vraiment, et c'est au développeur, quand ce n'est pas géré par un framework, de suppléer à ce manque.

C'est très frustrant et peu pratique.

Est-ce que le fait qu'il soit plus facile de trouver un poste de développeur Java ou .NET a joué un rôle dans ta décision de switcher ?

Ce n'est pas la facilité mais la qualité qui a été déterminante.

En effet, les postes concernant PHP ne me semblent vraiment pas enrichissants, au contraire de ceux concernant Java et .NET.

Tu te définis dans ton profil twitter comme un adapte de l'innovation, tu penses donc qu'elle est plus du côtè de Java que de PHP ?

Je pense que l'innovation n'est pas dans Java en lui-même mais dans les outils qui l'utilisent.

Quand je vois des produits comme Android ou GWT, ce sont quand même des briques assez imposantes de l'innovation dans le monde de Java.

Et c'est induit par le fait que Java est aussi bien utilisable pour des applications classiques que pour du web, contrairement à PHP.

Et mine de rien, c'est bien pratique lorsque l'on doit concevoir une application qui utilise les deux supports.

À contrario, il n'y a donc pas d'innovations du côté de PHP ?

Je ne sais pas trop quoi répondre à cette question.

D'un côté, PHP est en retard sur les annotations, sur l'implémentation du modèle objet et le système de gestion des erreurs est une antiquité.

Je ne pense donc pas que le langage soit innovant en lui-même.

Tout comme dans le cas de Java, elle est beaucoup plus présente dans l'usage qui en est fait.

Il y a quelques années, PHP a fait main basse sur le monde des CMS et des blogs.

Je le constate également au niveau de mes projets professionnels ou encore via les réalisations de sociétés comme facebook.

Que faudrait-il pour que PHP redevienne ton langage de prédilection ?

Il faudrait à PHP un typage fort, de l'homogénéité et une implémentation objet à la Java ou à la .NET.

Ceci dit, je pense encore me servir de PHP de temps à autre, et suivre son évolution.

On ne renie pas si facilement ses origines !

Si PHP intègre ce que tu veux, il deviendrait Java ou .NET et n'aurait plus d'intérêt, non ?

Oui et non.

C'est vrai que j'aime beaucoup ces deux technologies parce qu'elles répondent à mes attentes.

Cependant tout comme Java et .NET ne sont pas les mêmes technologies, une version de PHP disposant des améliorations auxquelles je pense serait un troisième acteur à part entière.

De mon point de vue, le plus gros manque est vraiment le typage fort des données, mais même avec ça, PHP restera et doit rester un langage facile d'accès, où on peut tester des choses en s'amusant.

C'est un atout dont ne dispose pas Java ou .NET.