mageekblog - Mot-clé - Stéphane PlanqartLe blog personnel de Frédéric Hardy. Au menu, PHP, agilité, FreeBSD, cuisine et photographies.2021-12-02T08:20:54+01:00Frédéric Hardyurn:md5:26874ca5b8cd4cac8d08b0e68e64f63aDotclearPHP, Python et PHP Solutionsurn:md5:a74bb1e39a213dd496c9b8e5741c40b02011-03-02T14:00:00+01:002011-03-03T14:45:19+01:00mageekguyPHPPHPPHP SolutionsPythonRasmus LerdorfStéphane Planqart<p>Dans le numéro de mars 2011 de PHP Solutions, il y a un article titré <q><a href="http://phpsolmag.org/system/articles/attachment1s/14156/original/Samba_PHP_PHP_03_2011.pdf">Python est l'avenir de PHP ?</a></q>, rédigé par <a href="http://www.planquart.com/">Stéphane Planquart</a>.</p>
<p>Sous le couvert de la fiction, il présente ce que pourrait être la prochaine version majeure de <a href="http://www.php.net">PHP</a>, tant au niveau syntaxique que fonctionnel, si les développeurs du langage s'inspirait des meilleurs langages existant, avant d'enchainer plus ou moins adroitement sur le fait que, d'après lui, cette version parfaite de <a href="http://www.php.net/">PHP</a> existe déjà et qu'elle porte le nom de <a href="http://www.python.org/">Python</a>.</p>
<p>Il est possible d'ergoter longuement sur la forme choisie par <a href="http://www.planquart.com/">Stéphane</a>, qui est à tout le moins originale et pourrait très bien servir le fond de son article, mais il aurait fallu pour cela qu'il fasse preuve d'un peu plus d'objectivité et se renseigne un minimum avant d'énoncer certaines choses.</p>
<p>En effet, si je ne peux me permettre de critiquer la partie de l'article concernant <a href="http://www.python.org/">Python</a>, car c'est un langage que je ne maîtrise pas suffisamment pour cela, je connais très bien <a href="http://www.php.net/">PHP</a>, à tout point de vue.</p>
<p>Je vais donc me permettre d'apporter quelques précisions et rectifications à l'article de <a href="http://www.planquart.com/">Stéphane</a>.</p> <p>Et je vais commencer avec l'introduction, puisqu'il commence ainsi :</p>
<blockquote><p>[...]En mars 2010 Rasmus Lerdorf annonçait l'arrêt
du développement de PHP6 à cause de difficultés
insurmontables dans l'implémentation de l'Unicode.[...]
</p>
</blockquote>
<p>Or, <a href="http://www.php.net/">PHP</a> n'a pas été abandonné pour cette raison.</p>
<p>Lors de l'arrêt du développement, le support d'<a href="http://fr.wikipedia.org/wiki/Unicode">Unicode</a> au niveau du moteur de PHP 6 était même pleinement fonctionnel, et j'ajouterais qu'il ne restait même <a href="http://pooteeweet.org/blog/1689">qu'un peu plus de 2%</a> des fonctionnalités du langage à mettre à niveau lorsque le développement a été arrêté.</p>
<p>La raison de l'abandon de PHP 6 n'est donc nullement technique, mais humaine.</p>
<p>En effet, ce sont les contributeurs qui ont tué PHP 6, car ils ont jugé que le travail demandé pour migrer vers cette version était trop complexe et trop long pour un gain fonctionnel peu significatif, et j'ai pour preuve le nombre de modifications absolument ridicule effectué sur <a href="http://svn.php.net/viewvc/php/php-src/branches/FIRST_UNICODE_IMPLEMENTATION/">le dépôt de PHP 6</a> sur les mois précédents son abandon.</p>
<p><a href="http://www.planquart.com/">Stéphane</a> enchaîne ensuite en indiquant que la prochaine version majeure de PHP intégrera enfin, comme tout bon langage moderne, une console interactive, comme si <a href="http://www.php.net/">PHP</a> n'en disposait pas depuis 2005, via l'option <code>-a</code> en ligne de commande.</p>
<p>Il poursuit ensuite avec cela :</p>
<blockquote><p>[...]Plutôt que de modifier un fichier,
de l’enregistrer et de rafraîchir son navigateur, on peut
maintenant exécuter directement du code dans une
console interactive[...]</p>
</blockquote>
<p>Je ne sais pas comment <a href="http://www.planquart.com/">Stéphane</a> travaille avec <a href="http://www.php.net/">PHP</a>, mais depuis 2005 et l'apparition de la <abbr title="Command Line Interface">CLI</abbr>, je ne travaille plus de cette façon, et que je ne quitte même plus <a href="http://www.vim.org">VIM</a> pour exécuter du code.</p>
<p>Je passerais sur sa proposition de remanier la syntaxe, qui est une pure affaire de goût personnel, et qui en conséquence ne supporte aucune discussion, et cela même si je trouve son idée de proposer deux syntaxes en fonctions du contexte complètement stupide, d'autant que <a href="http://www.php.net/">PHP</a> le fait déjà via l'utilisation de la balise <code><?=</code>.</p>
<p>Il poursuit ensuite son article en partant du postulat que <a href="http://www.php.net/">PHP</a> a été conçu pour le web.</p>
<p>Pourtant, <del>Dieu</del> <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a> a toujours présenté son langage comme <a href="http://articles.sitepoint.com/article/phps-creator-rasmus-lerdorf/2">une colle entre plusieurs technologies</a> qui permet de développer rapidement, et non comme un langage propre dédié au développement web, même s'il est parfaitement capable d'assurer dans ce domaine.</p>
<p>Ses remarques sur l'API du langage sont cependant pertinentes, même si elles sont récurrentes depuis des années, et je suis l'un des premiers à militer pour son homogénéisation, et cela même si <del>Dieu</del> <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a> a dit très clairement lors de sa conférence au <a href="http://blog.mageekbox.net/?post/2010/11/15/Compte-rendu-du-forum-PHP-2010-1">dernier forum PHP</a> que les développeurs qui veulent pouvoir coder proprement ne devrait pas être dans la salle, comprendre ne devrait pas utiliser <a href="http://www.php.net/">PHP</a>.</p>
<p>Cependant, le fait qu'il reproche au langage de parler hébreux est tout de même un peu gros.</p>
<p>Le fameux <code>T_PAAMAYIM_NEKUDOTAYIM</code> dont Stéphane parle dans son article est en effet bien <a href="http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=google#sclient=psy&hl=en&q=t_paamayim_nekudotayim&fp=eda1291fdd569703">connus</a>, et il est de plus une <q>private joke</q> qui circule au sein de la communauté du langage en raison des origines des développeurs du <a href="http://en.wikipedia.org/wiki/Zend_Engine">Zend Engine</a>.</p>
<p>J'ajouterais que le <a href="http://fr2.php.net/manual/en/book.tokenizer.php">tokenizer</a> de <a href="http://www.php.net/">PHP</a> n'y fait pas appel et utilise en remplacement son équivalent en langage commun, à savoir <code><a href="http://fr2.php.net/manual/en/tokens.php">T_DOUBLE_COLON</a></code>.</p>
<p>Cependant, ce n'est pas aussi gros que de dire que la gestion des erreurs telle qu'elle existe aujourd'hui dans le langage rend ce dernier inefficace et difficile à utiliser.</p>
<p>En plus de 10 ans de développement, <a href="http://www.php.net/">PHP</a> m'a effectivement posé bien des problèmes, et il continue toujours aujourd'hui, mais leurs origines n'avaient rien à voir avec la gestion des erreurs.</p>
<p>À tout le moins, j'aurais préféré que <a href="http://www.planquart.com/">Stéphane</a> dise dans son article que la gestion des erreurs de <a href="http://www.python.org/">Python</a> était bien meilleure que celle de <a href="http://www.php.net/">PHP</a> en donnant des arguments objectifs, plutôt que de dire une telle bêtise.</p>
<p>D'autant qu'il poursuit ensuite en critiquant le processus de développement de <a href="http://www.php.net/">PHP</a>, qui ne reposerait que sur la liste de diffusion des contributeurs, au contraire de celui de <a href="http://www.python.org/">Python</a> qui utilise des <abbr title="Python Enhancement Proposals">PEP</abbr>.</p>
<p>Je voudrais alors que quelqu'un m'explique la différence entre les <abbr title="Python Enhancement Proposals">PEP</abbr> de <a href="http://www.python.org/">Python</a> et les <a href="http://wiki.php.net/rfc"><abbr title="Request For Comments">RFC</abbr></a> de <a href="http://www.php.net/">PHP</a>, parce que j'avoue avoir un peu de mal à voir la différence.</p>
<p><a href="http://www.planquart.com/">Stéphane</a> poursuit ensuite en disant que <a href="http://www.php.net/">PHP</a> est un tellement mauvais langage qu'il nécessite le recours systématique à un framework.</p>
<p>Donc, en suivant son raisonnement, <a href="http://www.ruby-lang.org/fr/">Ruby</a>, <a href="http://www.python.org/">Python</a> et tous les langages pour lesquels il existe des frameworks ne sont pas mieux que <a href="http://www.php.net/">PHP</a>.</p>
<p>Est-il vraiment nécessaire que je dise explicitement ce que je pense de cela ?</p>
<p>Pire encore, selon lui, sans framework, le développeur est exposé à un échantillon des mauvaises pratiques :</p>
<blockquote><p>[...]Dans le cas contraire, le développeur est
en contact permanent avec un échantillon des mauvaises pratiques de développement[...]</p>
</blockquote>
<p>Il est vrai que les mauvaises pratiques ne se trouvent que dans du code <a href="http://www.php.net/">PHP</a>, et que le développeur n'a aucun esprit critique lui permettant de comprendre que le code qu'il a sous les yeux n'est peut être pas le plus pertinent qui soit.</p>
<p>D'ailleurs, vu que j'utilise le langage depuis des années, je dois être un très mauvais développeur, d'autant que, comble du pire, je l'ai utilisé sans framework plus d'une fois.</p>
<p>Bref, je ne suis absolument pas contre le fait que l'on critique <a href="http://www.php.net/">PHP</a>, et ce serait d'ailleurs mal venu de ma part puisque je le fais très régulièrement.</p>
<p>Je ne suis pas non plus contre le fait que l'on s'appuie sur ses faiblesses pour promouvoir une technologie alternative, bien au contraire.</p>
<p>La concurrence a du bon, et je suis persuadé qu'une bonne remise en question induite par la montée en puissance significative d'un langage alternatif ferait énormément de bien à <a href="http://www.php.net/">PHP</a>.</p>
<p>Encore faut-il que le sujet soit maîtrisé, ce qui n'est visiblement pas le cas pour la partie concernant <a href="http://www.php.net/">PHP</a> de l'article, et que cela soit fait correctement, avec des informations valides, précises, et fiables ainsi qu'une argumentation qui tient la route.</p>http://blog.mageekbox.net/?post/2011/03/02/PHP%2C-Python-et-PHP-Solutions#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/242