mageekblog - Mot-clé - PHP 5 - CommentairesLe 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:26874ca5b8cd4cac8d08b0e68e64f63aDotclearswitch (true) case 'Frédéric Hardy': throw new \logicException('Not implemented !'); - usulurn:md5:5cdd6d49e69364bf4659fddbae33d8ef2010-10-08T10:15:51+02:002010-10-08T10:15:47+02:00usul<p>Le fait de capitaliser sur de l'expérience est quand même très important pour une société qui recrute.</p>
<p>@speedyop<br />
Même si je sais qu'un très bon dev java ou c++ n'aura a priori pas de soucis à faire de l'objet en php, si le mec doit perdre 2 semaines pour être à peu prés au niveau et comprendre le framework de ma boîte, c'est potentiellement deux semaines de retard pour mon projet.</p>
<p>Sinon je suis plutôt d'accord avec @metagoto, avoir un langage de prédilection est une chose naturelle et c'est aussi naturel qu'il change dans le temps sans pour autant renier les autres.</p>
<p>Et avec vos conneries je vais être obligé de regarder python de plus prés <img src="/themes/default/smilies/smile.png" alt=":)" class="smiley" /></p>switch (true) case 'Frédéric Hardy': throw new \logicException('Not implemented !'); - sunseburn:md5:360a23b4b8e3eb9bb63dd7159ab667b12010-10-08T05:42:05+02:002010-10-08T07:11:53+02:00sunseb<p>J'ai enfin retrouvé un article intéressant que je voulais partager :</p>
<p><a href="http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_switched_back_to_p_1.html" title="http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_switched_back_to_p_1.html" rel="nofollow">http://www.oreillynet.com/ruby/blog...</a></p>
<p>J'aime beaucoup l'analogie que fait l'auteur :</p>
<p>"PROGRAMMING LANGUAGES ARE LIKE GIRLFRIENDS: THE NEW ONE IS BETTER BECAUSE *YOU* ARE BETTER"</p>
<p>Quand on y réfléchit, c'est souvent comme ça ! Quand on change de language de programmation, on a l'illusion que le nouveau est bien meilleur que l'ancien, sans vraiment réaliser que c'est le programmeur qui s'est amélioré. Le language est un outil, l'artiste reste le développeur.</p>switch (true) case 'Frédéric Hardy': throw new \logicException('Not implemented !'); - jubianchiurn:md5:a2718e13c86284ee6f2670b50f0984e82010-10-07T21:52:44+02:002010-10-07T22:09:45+02:00jubianchi<p>Je suis un peu dans le même cas : j'ai souvent envisager le "switch" mais je n'ai jamais réellement franchis le pas...<br />
J'ai bien été tenté par d'autres langages, plus particulièrement le C#, mais bizarrement cela m'a remotivé à utiliser PHP : le .NET c'est bien mais on est beaucoup moins libre qu'en PHP : tout est cadré, régis par des règles très strict qui, à mon sens, limite la créativité. A la suite de cette expérience, j'ai adopté C# mais surtout pas pour faire du web : le .NET c'est très bien pour faire de belles appli mais lorsqu'on veut s'amuser dans le web je pense que le PHP est bien mieux.<br />
Alors c'est sur, cette liberté peut conduire les moins expérimentés à faire tout et n'importe quoi mais quand on maîtrise l'outil je trouve que c'est un avantage.<br />
Pour moi, PHP reste la star du web : un langage accessible, simple et quand même relativement complet même s'il a ses défauts (comme tous les autres langages). Maintenant, j'attends de découvrir plus en détail Ruby et Python pour tenir des propos un peu plus nuancés....</p>switch (true) case 'Frédéric Hardy': throw new \logicException('Not implemented !'); - Yacodourn:md5:6e195ed6833723f36586032c014da7ee2010-10-07T19:31:58+02:002010-10-07T22:09:45+02:00Yacodo<p>C'est bien dommage que PHP soit si peut utilisé en province, mais d'un autre côté il y a aussi le télétravail qui reste envisageable, à condition d'aimer car c'est rarement des idées neuves, et il faut batailler sévère... Enfin, maintenant que tu as le poste de tes rêves plus besoin de trouver des raisons, et l'envie, pour switcher !</p>switch (true) case 'Frédéric Hardy': throw new \logicException('Not implemented !'); - speedyopurn:md5:47d6e5df37514853b2baac728c2218162010-10-07T19:07:30+02:002010-10-07T22:09:45+02:00speedyop<p>Je partage le même avis : productivité avant tout, et capitalisation des connaissances.<br />
Le langage utilisé ne devrait pas être parmi les premières questions à se poser au démarrage d'un projet, voir au recrutement d'une personne.<br />
On vente rarement les qualités d'un produit en décrivant les langages utilisés.</p>switch (true) case 'Frédéric Hardy': throw new \logicException('Not implemented !'); - metagotourn:md5:1b69b9979ce5f7f89a8cd27369143f0b2010-10-07T19:00:19+02:002010-10-07T22:09:45+02:00metagoto<p><strong>@desfrenes</strong><br />
Le mag Login, oui! Il y avait tout un numéro sur rebol, avec si je me rappelle bien un exemple de ray caster en 20 lignes de code (ne pas confondre avec "ray tracer"). Bref, je m'étais fait avoir par le hype, faut dire que j'étais jeune ; -)</p>
<p>Par rapport au lien de <strong>@Nicolas Laforêt</strong>, même conclusion concernant rebol: s'il devait percer, il l'aurait fait depuis longtemps..</p>
<p><strong>@mageekguy</strong><br />
Je ne sais pas si on doit parler de "switch" dès qu'on se met à étudier un nouveau langage et coder des trucs... à moins d'avoir une aversion complète pour le précédent langage, ce qui serait un peu ridicule (et un terrible aveu d'échec!). Même si c'est pour garder un seul langage de prédilection, je pense qu'on a tout intérêt à aller voir ce qui se fait ailleurs. Toujours.<br />
Ces temps-ci, je ne sais pas pourquoi, je me fais une mise à niveau python 3. Non, c'est pas pour switcher! (d'ailleurs il n'y a pas de switch dans python)</p>switch (true) case 'Frédéric Hardy': throw new \logicException('Not implemented !'); - mageekguyurn:md5:0d0afacda876578601b01ff33b995ae92010-10-07T16:44:31+02:002010-10-07T15:46:58+02:00mageekguy<p>@<a href="http://blog.mageekbox.net/?post/2010/10/07/switch-%28true%29-case-Fr%C3%A9d%C3%A9ric-Hardy-%3A-throw-new-%5ClogicException%28-Not-implemented-%21-%29%3B#c2019" rel="nofollow">desfrenes</a> : Rebol n'a pas pris, effectivement, mais ça reste un langage intéressant.</p>switch (true) case 'Frédéric Hardy': throw new \logicException('Not implemented !'); - desfrenesurn:md5:5d7557aa5790ac9886d1ecb21548725a2010-10-07T16:27:05+02:002010-10-07T15:44:18+02:00desfrenes<p>Marrant d'entendre parler de Rebol... à part les couvertures de feu Login magazine je n'ai pas l'impression que ça ait beaucoup percé... non ?</p>switch (true) case 'Frédéric Hardy': throw new \logicException('Not implemented !'); - Nicolas Laforêturn:md5:9f14e8b456cc4ec6e23f5d98c0990cb32010-10-07T16:24:04+02:002010-10-07T15:44:18+02:00Nicolas Laforêt<p>Un petit lien pour alimenter le débat : <a href="http://seldo.com/weblog/2010/09/27/php_needs_to_die_what_will_replace_it" title="http://seldo.com/weblog/2010/09/27/php_needs_to_die_what_will_replace_it" rel="nofollow">http://seldo.com/weblog/2010/09/27/...</a></p>for versus foreach - ashgenesisurn:md5:b8bcfd0f7eae9ed8c7cbc0bd8bd945942010-06-10T11:12:58+02:002010-06-10T12:20:18+02:00ashgenesis<p>@desfrenes : Le débat se situe plus dans l'utilisation des doubles quotes lorsque nous n'avons pas de variables à interpréter dans la chaine. La différence entre les deux expressions suivantes :<br />
$mouf = "Ma chaine sans variable";<br />
$mouf = 'Ma chaine sans variable';</p>for versus foreach - mageekguyurn:md5:c190a8da6451e64d84904d15bad4c9d32010-06-10T09:09:05+02:002010-06-10T08:09:59+02:00mageekguy<p>@<a href="http://blog.mageekbox.net/?post/2010/06/09/for-versus-foreach#c1611" rel="nofollow">desfrenes</a> : Il y a bien un débat sur ce sujet... malheureusement.</p>for versus foreach - desfrenesurn:md5:42eea2a435dd0c1b8dc363fa199bbd222010-06-09T21:41:52+02:002010-06-10T08:09:59+02:00desfrenes<p>"je ne parlerai pas du débat fondamental entre les utilisateurs de simple et de double quotes"</p>
<p>Ouais... enfin c'est quand même pas qu'une question de performance là !</p>
<p>mickael@enclume:~$ cat quotes.php<br />
<?php<br />
$mouf = 'Mouf';<br />
echo '\n Hello $mouf \n';<br />
echo "\n Hello $mouf \n";<br />
mickael@enclume:~$ php quotes.php<br />
\n Hello $mouf \n</p>
<pre>Hello Mouf</pre>for versus foreach - CrazyCaturn:md5:47211642af7bbb9f09332c013c8be0792010-06-09T17:43:15+02:002010-06-09T16:52:59+02:00CrazyCat<p>Très bon post permettant de démontrer l'inutilité de certains débats malheureusement trop fréquents.</p>
<p>Par contre, mauvais placement du premier commentaire qui devrait se trouver au niveau du "for ($i = 0, $end = sizeof($array); $i < $end; $i++)", il y en a qui vont se planter :D</p>for versus foreach - mageekguyurn:md5:ff1ddd0ce0ac0ec52afb7858325da8bb2010-06-09T17:41:23+02:002010-06-09T17:03:00+02:00mageekguy<p>@<a href="http://blog.mageekbox.net/?post/2010/06/09/for-versus-foreach#c1603" rel="nofollow">Un lecteur</a> : Je vais faire un effort pour l'orthographe.</p>
<p>@<a href="http://blog.mageekbox.net/?post/2010/06/09/for-versus-foreach#c1604" rel="nofollow">metagoto</a> : Utiliser bytekit ou vld pour un débat de cet importance, c'est utiliser une massue pour écraser une mouche, tellement le débat me semble à côté de la plaque,</p>
<p>Et si une application doit être tellement rapide qu'elle nécessite un tel niveau d'optimisation, il ne faut pas l'écrire en PHP, mais en C/C++, bref, un langage compilé efficace (on parle dans le cas présent de 3% d'écart sur... 0.6 seconde pour un tableau d'un million d'éléments sur un ordinateur portable de 2005).</p>
<p>Et j'ai bien conscience que l'efficacité peut varier en fonction de la taille du tableau, c'est pourquoi ce paramêtre est une variable dans mon script.</p>for versus foreach - desfrenesurn:md5:814a8e5cb61b70a4c2eb98eb539922732010-06-09T16:58:06+02:002010-06-09T16:41:11+02:00desfrenes<p>"There should be one<del> and preferably only one </del>obvious way to do it.<br />
": <a href="http://docs.python.org/tutorial/controlflow.html#for-statements" title="http://docs.python.org/tutorial/controlflow.html#for-statements" rel="nofollow">http://docs.python.org/tutorial/con...</a></p>
<p>Sinon le débat est d'autant plus "savoureux" sachant que la plupart des débutants comptent la taille du tableau à chaque itération de la boucle for <img src="/themes/default/smilies/confused.png" alt=":-/" class="smiley" /></p>for versus foreach - Gregurn:md5:c51da65322d510908ec911bcc4f61a022010-06-09T16:28:16+02:002010-06-09T16:41:11+02:00Greg<p>Ce site est toujours utile pour ce genre de débat :<br />
<a href="http://phpbench.com/" title="http://phpbench.com/" rel="nofollow">http://phpbench.com/</a></p>for versus foreach - metagotourn:md5:257c1ad5780e7648fa4a9020740b25cb2010-06-09T16:13:33+02:002010-06-09T16:41:11+02:00metagoto<p>Je n'ai pas testé ton code.</p>
<p>Je sais par contre qu'il faut faire un pre inc au lieu d'un post inc (dans le for et en général dès qu'on le peut) car php ne sait pas optimiser ça. Chaque post inc entraine une var temporaire qui est détruite dans la foulée.</p>
<p>Pour des ranges plus faibles que les tiens, du genre 1..1000, alors le for peut l'emporter si les opérations ne sont pas trop complexes. Après c'est un match entre la VM vs. ce qui peut être codé "en dur" en C. C'est d'ailleurs une des raisons pour privilégier les fonctions "toutes faites" de php (du genre foreach) plutôt que de se tapper le boulot manuellement.</p>
<p>Dans un code qui devrait vraiment être optimisé à mort, alors des micro benches pour choisir foreach ou for (ou goto;) me sembleraient nécessaires. On ne peut pas décréter que foreach est toujours plus performant que for.</p>
<p>Un petit output avec bytekit ou vld n'aurait pas été de trop <img src="/themes/default/smilies/wink.png" alt=";)" class="smiley" /></p>for versus foreach - Un lecteururn:md5:405a6c5b91cdc2c4d2823875ebf706162010-06-09T15:25:45+02:002010-06-09T16:41:11+02:00Un lecteur<p>Hors contexte, la question ne manque pas forcément de pertinence.</p>
<p>Dans l'absolu on peut vouloir rechercher la performance optimale à tout prix pour un besoin particulier. Cependant, cette recherche de performance me semble contradictoire avec les cas d'utilisation usuels de php (web essentiellement, scripting parfois).</p>
<p>Maintenant je suis d'accord sur le fait que vu l'écart de performance, c'est surtout les avantages fonctionnels qui doivent primer. Donc +1 pour le foreach <img src="/themes/default/smilies/smile.png" alt=":)" class="smiley" /></p>
<p>HS: je prends beaucoup de plaisir à vous lire mais je trouve qu'il y a vraiment beaucoup de fautes dans le texte et c'est bien dommage au regard de la pertinence de votre blog. Désolé, ça me tient à coeur :p</p>for versus foreach - Moufurn:md5:a57cae546b512c299c0177d2ae440b772010-06-09T15:10:02+02:002010-06-09T16:41:11+02:00Mouf<p>Amen pour la conclusion!</p>
<p>Et je ne parlerai pas du débat fondamental entre les utilisateurs de simple et de double quotes.<br />
Si seulement les "référents techniques" se focalisaient plus sur les vraies bonnes pratiques (architecture, modèle de données, création d'index...) plutôt que sur l'indentation et comment faire une boucle!</p>