mageekblog - PHP - 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:26874ca5b8cd4cac8d08b0e68e64f63aDotclearPHP et ./configure - Poisurn:md5:2f6517219cdb7baba643af68fb784efb2015-12-01T13:39:50+01:002015-12-01T13:39:50+01:00Pois<p>Sous linux au moins, ./configure créer un fichier config.nice.<br />
Celui-ci contient en gros : ./configure + toutes les options de compilation.</p>PHP, c'est de la merde ! - Mix78urn:md5:0ab32db4305570223917697d6f9781fa2013-07-19T14:39:52+02:002013-07-19T16:13:17+02:00Mix78<p>PHP c'est vraiment de la m....</p>
<p>C'est moche, indebuggable et illisible. C'est pire que du pascal.</p>
<p>Puis c'est pas fiable car selon les options choisies ca ne fait pas la même chose, entre deux serveurs, le même code donne des choses différentes.</p>
<p>Le seule moyen c'est de le connaître assez bien pour éviter les exceptions.</p>
<p>Alors, je sais, vous me direz que je trolle a tout va et que c'est moi qui suis un con.</p>
<p>Tout ce que ce langage sait dire c'est unxepected trucmuche et expected bidule. Il te dit même ce que t'es censé écrire...</p>
<p>Enfin c'est pas demain que j’arrêterais de coder avec ce truc. Mais je le déteste sincèrement.</p>
<p>PS: non mehiradev, le VBA n'est pas un langage objet. Soit tu ne connais pas VB, soit tu ne connais pas le paradigme objet. Il manque juste l'encapsulation, le polymorphisme et l'héritage.</p>À propos de PSR-0, PSR-1 et PSR-2 - programathsurn:md5:85c63801f1fac8b4652f5a5753af37a52013-04-26T12:56:53+02:002013-04-26T13:34:03+02:00programaths<p>@<a href="http://blog.mageekbox.net/?post/2012/06/19/%C3%80-propos-de-PSR-0%2C-PSR-1-et-PSR-2#c4446" rel="nofollow">ling</a> : C'est sur que</p>
<p>$a=new Vendor1_Http_Commons_Logging_SimpleFactory::create();</p>
<p>Est super digest. En tout cas mieux que:<br />
use Vendor1\Http\Commons\Logging\SimpleFactory as LogF;</p>
<p>$a=LogF::create();</p>
<p>Je pense qu'ils devraient également changer les JSR pour enlever les namespaces/imports, c'est tellement pratique les '_'.</p>À propos de PSR-0, PSR-1 et PSR-2 - lingurn:md5:1250f498b1776925341e38fa4de280b72012-10-08T08:49:35+02:002012-10-08T11:50:23+02:00ling<p>En quoi la norme PSR-0 est-elle mieux que la convention de nommage Pear ?</p>
<p>Personnellement, j'aime bien la convention Pear, elle apporte plusieurs avantages :<br />
- on voit directement le chemin complet de la classe, sans ambiguité<br />
- le underscore c'est plus facile à taper que le antislash<br />
- pas besoin de taper des mots-clés spéciaux use et namespace</p>
<p>Ensuite pour l'interopérabilité d'autoloader, vu comment l'autoloader généré par composer est fait, autant créer un autoloader manuel qui ressemble à cela :</p>
<p>//<br />
//<br />
// application/vendor/myautoloader.php</p>
<p>define('FS_VENDOR_DIR', <strong>DIR</strong>);<br />
function myAutoloader($class) {</p>
<pre> if ('Vendor1_' == substr($class, 0, 8)) {
include FS_VENDOR_DIR . '/' . str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php';
return;
}
// extra loader for administrable model
elseif ('Vendor2_' == substr($class, 0, 8)) {
include APPLICATION_ROOT_FS . '/class/model/' . str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php';
return;
}</pre>
<p>}<br />
spl_autoload_register('myAutoloader', true, false);<br />
//<br />
//<br />
//</p>
<p>et ajouter les entrées au fur et à mesure qu'on ajoute des nouvelles librairies à son application.<br />
Donc je pourrais très bien inventer une norme qui s'appellerait QTN-0, et qui dirait que toutes les classes devraient utiliser la convention Pear. Au niveau de l'autoloader, c'est simplement le code ci-dessus ( et non pas le code complexe de l'autoloader généré par composer ), avec pour seule contrainte que le développeur ajoute un elseif à la fonction myAutoloader chaque fois qu'il veut intégrer une nouvelle librairie compatible QTN-0 à son projet ( et normalement, on ajoute pas des librairies tous les 4 matins ).</p>
<p>C'est pas plus simple comme ça ?<br />
Dîtes-moi que je me trompe si je me trompe ?</p>À propos de PSR-0, PSR-1 et PSR-2 - francoismurn:md5:eea64910d343c824ffa148f29c339c602012-06-21T23:48:26+02:002012-06-22T08:20:47+02:00francoism<p>Je te rejoins sur le caractère scatologique de PSR-1 et PSR-2.<br />
Le mélange de la technique (charger une classe) de l' "esthétique" (mise en forme du code et règles d'écriture) c'est comme si on disait qu'un mur de parpaing doit mesurer 2m32 et être peint en blanc.<br />
Il semble que l'objectif de ces standards ait été un peu élargi en cours de route.</p>À propos de PSR-0, PSR-1 et PSR-2 - Pierre Martinurn:md5:c725ccb8381b1bd26e02bcb5375cf9f02012-06-19T17:31:19+02:002012-06-19T16:32:02+02:00Pierre Martin<p>@Amaury Oui, CakePHP a voté car faisant partie du groupe mais c'était un -1 : <a href="https://groups.google.com/d/msg/php-standards/c-QVvnZdMQ0/m7KVb3U-xkQJ" title="https://groups.google.com/d/msg/php-standards/c-QVvnZdMQ0/m7KVb3U-xkQJ" rel="nofollow">https://groups.google.com/d/msg/php...</a><br />
D'ailleurs le compte final est bizarre et seuls "3" votes négatifs ont été recueillis <a href="https://groups.google.com/d/msg/php-standards/c-QVvnZdMQ0/lnKss-kZNTMJ" title="https://groups.google.com/d/msg/php-standards/c-QVvnZdMQ0/lnKss-kZNTMJ" rel="nofollow">https://groups.google.com/d/msg/php...</a><br />
Le vote -1 de CakePHP (autant que je sache) est principalement lié à la présence du "code MUST use 4 spaces for indenting, not tabs" comme mentionné dans le sujet de discussion lié <a href="https://groups.google.com/d/topic/php-standards/gJTvFEflqfI/discussion" title="https://groups.google.com/d/topic/php-standards/gJTvFEflqfI/discussion" rel="nofollow">https://groups.google.com/d/topic/p...</a> (Graham Weldon étant un membre de la core team de Cake)</p>
<p>Il est dommage que le "MUST" ait été utilisé dans ce "standard" au vu des discussions que l'on trouve dans le groupe à ce sujet.</p>
<p>Le principe d'un standard (aussi bête soit-il) est d'être suivi autant que possible donc il se peut que sur le moyen terme les projets qui n'y adhérent pas s'y tournent quand même, mais pour le coup je pense que cela prendra du temps, surtout avec la séparation PSR-1 / PSR-2</p>À propos de PSR-0, PSR-1 et PSR-2 - Da Scritchurn:md5:577fbac10fbfa627068c367d521efc1c2012-06-19T17:27:49+02:002012-06-19T16:31:20+02:00Da Scritch<p>@mageekguy voilà, c'est ça le problème !<br />
les framework sont plus là pour aider à utiliser de bonnes conventions de code que pour accélérer un éventuel travail préparatoire, et là, ce qui me dérange, c'est ce côté surverbose qui ressemble trop à un framework soupçonné.</p>À propos de PSR-0, PSR-1 et PSR-2 - mageekguyurn:md5:d70478d58ed16c9e93ab19ba04bf34d72012-06-19T16:56:27+02:002012-06-19T16:00:39+02:00mageekguy<p>@<a href="http://blog.mageekbox.net/?post/2012/06/19/%C3%80-propos-de-PSR-0%2C-PSR-1-et-PSR-2#c4001" rel="nofollow">Guile</a> : Le problème de la neutralité du groupe en question est encore un autre débat, mais on va dire que je crois encore suffisamment dans la nature humaine pour me laisser aller à penser que des intérêts particuliers n'ont pas pris le dessus sur l'intérêt général dans ce contexte… ou pas.</p>
<p>Bref, je n'ai aucune certitude, mais j'en connais qui te dirais que tout cela à ressemble beaucoup (trop ?) à ce qui est fait dans un framework à la mode actuellement.</p>À propos de PSR-0, PSR-1 et PSR-2 - Guileurn:md5:9a24c713f43bd95774c4d93bdfa5a4a02012-06-19T16:20:53+02:002012-06-19T15:56:12+02:00Guile<p>N'y a-t-il pas eu une recherche d'intérêt particulier dans la PSR-2?<br />
Je la trouve inconsistante avec elle-même, voire inconsistante dans une même règle (<a href="http://bit.ly/LBNmxU" title="http://bit.ly/LBNmxU" rel="nofollow">http://bit.ly/LBNmxU</a>) en fonction d'un choix de présentation du développeur.<br />
Non! Même si j'accueille chaleureusement l'initiative et le désir de standardiser la chose (et qui a au moins le mérite d'exister, de mettre à plat des règles, etc.), je dois avouer que la PSR-2 me dérange en cela qu'elle reflète les règles de certains, et pas de la majorité.<br />
Y a-t-il l'un des participants qui travaille sur un parser de code PHP et qui a besoin de ce formatage? C'est ma principale question</p>À propos de PSR-0, PSR-1 et PSR-2 - Amauryurn:md5:12e3b3f9fbe5cb27103411470a1a67902012-06-19T14:42:31+02:002012-06-19T14:14:29+02:00Amaury<p>Bon article, Frédéric. Tu vas plus loin que moi dans la remise en question de l'utilité de PSR-2. Les normes d'écriture de code restent utiles ; il en existe déjà tellement qu'il n'y avait pas forcément besoin d'en créer un nouvelle, mais pourquoi pas. Moi je remets en question leurs choix, qui me semblent parfois inconsistants, parfois juste mauvais.</p>
<p>@Pierre : Oui, mais CakePHP faisait partie du groupe, j'ai quand même l'impression qu'il vont y passer tôt ou tard (et c'est ce que j'ai cru comprendre des discussion de leur core team).</p>À propos de PSR-0, PSR-1 et PSR-2 - Pierre Martinurn:md5:e1f19f7d651f0998b8be62be524f52bf2012-06-19T13:26:41+02:002012-06-19T12:29:59+02:00Pierre Martin<p>Bon article, tout comme celui d'Amaury ! Je rejoins également le camp :<br />
PSR-1 -> bonne pratique (mais pas standard)<br />
PSR-2 -> too much</p>
<p>Pour information le sujet a aussi éte débattu au sein de la core team de CakePHP et la conclusion est similaire : <a href="https://groups.google.com/d/topic/cakephp-core/QnTBtN6K9AQ/discussion" title="https://groups.google.com/d/topic/cakephp-core/QnTBtN6K9AQ/discussion" rel="nofollow">https://groups.google.com/d/topic/c...</a></p>À propos de PSR-0, PSR-1 et PSR-2 - Da Scritchurn:md5:d15c33b6450d95a70423a524355db4662012-06-19T12:56:32+02:002012-06-19T12:03:49+02:00Da Scritch<p>PSR-0, je trouve que cela alourdi tellement la lecture que cela peut rendre un projet un tantinet complexe et avec moult classes réutilisées à la limite de l'illisible sous les redites.</p>
<p>Mais je me trompe sûrement.</p>PHP, c'est de la merde ! - mageekguyurn:md5:025a4d4f35fbd06078a456e4b1871ccf2011-12-03T16:12:59+01:002011-12-03T16:56:46+01:00mageekguy<p>@<a href="http://blog.mageekbox.net/?post/2008/11/03/php-cdlamerde#c3463" rel="nofollow">mehiradev</a> : Merci pour ces 2 fois 5 minutes de franche rigolade !</p>
<p>Quelques petites précisions, car je pense que l'on s'est très mal compris.</p>
<p>Mon but premier en critiquant certaines fonctionnalités de PHP est avant tout de faire progresser le langage (que j'y parvienne ou non est un autre débat) et non de lancer un débat pour savoir quel est le meilleur langage de l'Univers (de toute façon, c'est le 42, comprenne qui pourra).</p>
<p>J'ajouterais que je n'ai rien à reprocher à l'évolution de l'informatique, autant hardware que software, ne serait-ce que parce que je serais bien en peine de dire si ce qui se fait maintenant aura des répercussions négatives dans un, deux, cinq ou dix ans, étant donné que je ne suis pas Madame Soleil.</p>
<p>Certes, on se trimballe des boulets comme le x86, l'architecture PC ou Windows depuis maintenant des dizaines d'années, et peut être que cela nous a fait perdre du temps... ou pas !</p>
<p>En effet, la créativité naît de la contrainte, et si nous n'étions pas passé par là, peut être que nous n'en serions pas arrivé à notre niveau technique d'aujourd'hui.</p>
<p>Le x86 a par exemple permis à Apple et au Mac de survivre lorsque l'architecture PowerPC, pourtant bien plus moderne, a montré ses limites, et IE6 a provoqué l'apparition de navigateurs alternatifs plus moderne comme Firefox ce qui a permit au Web de progresser.</p>
<p>Et si les architectures ARM ont aujourd'hui le vent en poupe, c'est bien parce que l'architecture x86 et le développement de Intel ne répondait pas à certaines contraintes, ce qui a forcé ARM a concevoir une alternative devenue aujourd'hui crédible par rapport aux besoins du marché. </p>
<p>Et en parlant du Web, il se standardise de plus en plus, et c'est tant mieux.</p>
<p>C'est parfois chaotique, parfois perturbé par l'Économie, mais malgré tout, les choses avances, et c'est très bien. Et cela, c'est aussi une conséquence du chemin suivi par la technologie informatique depuis 20 ans.</p>
<p>De plus, depuis sa version 4, PHP est interprété par... roulement de tambour... une machine virtuelle, tout comme Java, et son nom est... roulement de tambour... le Zend Engine !</p>
<p>Au niveau de l'interprétation du code, le fonctionnement de PHP est donc conceptuellement parlant très proche de Java et ne fonctionne donc pas du tout comme tu le penses.</p>
<p>Je pense que tu en es resté à PHP/FI... depuis, de l'eau a coulé sous les ponts !</p>
<p>Quand au débat interprété vs compilé, il n'a tout simplement pas lieu d'être puisque cela revient à comparer une voiture avec un set de table.</p>
<p>Ces deux concepts répondent en effet respectivement à des problématiques très différentes et quasiment orthogonales, et le fait de lancer le débat sur ce sujet montre donc juste que tu ne comprends pas ce dont tu parles.</p>
<p> </p>PHP, c'est de la merde ! - mehiradevurn:md5:2698da5d9df4fb74988b0e9ea3f4f9002011-12-03T12:10:18+01:002011-12-03T16:06:41+01:00mehiradev<p>Salut,</p>
<p>Oula les gars vous vous êtes enflammer contre moi et vous avez pas compris ce que je disait.</p>
<p>Primo.<br />
Le problème de l’interpréteur est connus depuis longtemps.<br />
Bon visiblement tous le monde n'a pas compris la différence entre un programme compilé et un programme interpréter (ref: wikipedia).</p>
<p>en C : votre code va être compiler pour en sortir un fichier binaire. ex : monprog.exe. ce programme c'est le code transcrit en code machine. ex : int Variable = 1000; va simplement ce résumer par un mise en mémoire de la valeur binaire de 1000 et ça met 1 temps de cycle.</p>
<p>En php : votre code ne vas pas être compiler. celui-ci va être exécute en texte par l’interpréteur. cela signifie qu'a chaque exécution du programme et à chaque ligne de code il faudra, décoder en code machine. si je fait $variable = 1000. l'interpreteur va devoir en premier temps chaque caractère '1' '0' '0' '0' le transformer en 1000 binaire et ça prend 4 temps de cycle minimum. pour ensuite le mettre en mémoire.</p>
<p>J'ai fais des essai de performance sur plusieurs la langage et les interpréteur (Php, Python, VBA) souffre tous de ce problème et c'est logique. Php s 'en sort peut être mieux que les autres mais il ne pourrais jamais atteindre plus de 20 % du temps d’exécution d'un programme en code compilé. D’ailleurs je vous renvoie sur un projet le PHC qui doit être une version compiler du PHP. Ou le ZendEngine qui aussi permet d'en rattraper ces défauts. mais ça je ne l'ai pas tester et tous le monde n'utilise pas le ZendEngine.</p>
<p>Au faite quand tu parle de l'interpreteur java tu parle sûrement du JSP parce-que le Java en lui même c'est du code compiler à la différence qu'il y a une machine virtuelle qui transcrit en code machine mais à partir d'un code binaire à lui. et le Java est très performant et ce concept me semble plus logique, pour des raison de portabilité. Dans mon test il ne perd que 3 temps cycle par exécution et pas systématiquement.</p>
<p>Secondo.<br />
Après je n'ai pas parler de revenir a l'assembleur même si celui-ci à ses avantages, les langages objets sont très bien, il donnent une vision différente d'un programme avec beaucoup de clarté et qui peut même le rendre plus optimisé qu'un programme procédurale.<br />
Je ne parle pas n'ont plus de ceux qui rentre en développement. Faire du java, .Net, Pascal Objet et du C++ c'est aussi assimilable que de faire du Php. C'est simplement une question de temps et de savoir faire.</p>
<p>Même moi je n'utilise que très peut de l'assembleur dans mes microcontroleur. Réellement les compilateur savent créer du code optimiser. il faut vraiment chercher l'instruction qui va bien pour gagner du temps de cycle.</p>
<p>Je suis 100x d'accord sur le principe de dire qu'un programme ne peut être écris sérieusement dans sa totalité en assembleur. c'est tous simplement horrible à lire.</p>
<p>Après effectivement le code compilé à son inconvénient aussi, je ne le cache pas, et je ne compare le temps de compilation d'un jeux vidéo avec celui d''un serveur web, c'est radicalement différent. Et puis je pense que c'est la ou il aurait fallu penser à quelque chose mais sans partir forcement sur de l’interpréter, la c'est n'importe quoi.</p>
<p>troisièmement<br />
Quand tu dit que l'informaticien ne chercher pas à réinventer la roue, mais si la roue est carré depuis le début, il peut quand même se posé la question, si on peut pas l'arrondir les coins, non?.<br />
plus sérieusement, je veut dire si que tu parle des librairies et des extensions de programme. ça existe depuis toujours et même en assembleur tu peut créer des librairies. j'utilise toujours des librairie exemple quand je fait un programme qui utilise du TCP/IP je vais me taper à réécrire le protocole je vais utiliser les librairies qui vont bien. mais je ne vais utiliser n'importe quel surcouche sur n'importe quel programme. le travail de l’informaticien c'est aussi d'optimiser son système pour le rendre plus stable, plus fluide et plus performant sans forcement investir sur des machines surpuissante.</p>
<p>Dernièrement.<br />
je ne suis pas incapable de suivre l’évolution bien loin de là. Le PHP et l’interpréter n'est pas une évolution et ne suit pas la logique évolutive des langages qui l'ont précédé. c'est un programme fait par un geek qui s'est dit je vais générer des pages web plus simplement, et son système à gagner en popularité. c'est tout. Après certes il à évoluer mais il reste lent et instable par moment.</p>
<p>Comme celui qui a créer ce blog, je fais souvent du PHP dans mon boulot ou perso, même si ce n'est pas m'a première vocation, j'ai bien compris comment ça marche. je compte même me lancer sur Zend qui m'attire plus. il y a aucun problème a ce niveau la. c'est juste un constat de performance que je fais.</p>
<p>Guile, T'a fais du jeu vidéo je suis déçu que tu rejoigne pas mon avis.</p>
<p>Pour le déploiement des programme c'est la dessus qu'il fallait travailler c'est clair.</p>
<p>Je ne pense que c'est moi qui va disparaître, je pense surtout que le Web qui va capoter tot ou tard et qu'il y auras autre chose qui viendra le remplacer. parce-que le constat du gars qui à créer ce blog et de plus en plus partager par des développeurs qui on marre<br />
de voir un système basé sur des standard qui systématiquement révisé qui rende les système plus lourd et plus lent inutilement. pour cela je table plus dans ce qui se passe sur IOS et Android.</p>
<p>Ce qui est parfaitement logique. C'est en apprenant des ses erreurs que l'ont acquière de l'experience.</p>
<p>il en va de même pour le système économique ou on vie.</p>
<p style="margin-top: 0; margin-bottom: 1em; margin-right: 0; margin-left: 0; ">Et Je n'ai jamais parler d'assembleur. et je ne parle pas non plus des langage de programmation. Je parle du système PHP et de son interpréteur et du code compilé. ça n'a strictement rien a voir avec le langage de programmation.</p>
<p style="margin-top: 0; margin-bottom: 1em; margin-right: 0; margin-left: 0; ">Même si je trouve que le script de langage PHP est plutôt moche, mais ça c'est une question de goût.</p>
<p style="margin-top: 0; margin-bottom: 1em; margin-right: 0; margin-left: 0; ">[EDIT] pour rassembler deux commentaires en un seul.</p>PHP, c'est de la merde ! - Guileurn:md5:948031075ad2222353a751a7281c28842011-12-02T21:43:48+01:002011-12-03T10:08:31+01:00Guile<p>Boujaa!! Et bien mehiradev, ce sujet a réveillé furax le troll qui sommeille en toi!</p>
<p>Moi j'appelle ça une "Hondelatte", ou presque. Tu t'es totalement emporté ce qui donne un texte bourré de fautes, non construit (tellement pressé de soulager son Troll), et plein d'inexactitudes pour la plupart dues à un manque de connaissance du système (opcache, cache http, impératifs du Web, accessibilité).</p>
<p>Je connais l'informatique industrielle, vue que c'est ma formation. Juste pour donner un avantage des langages interprétés par rapport au bon vieil assembleur : dans le Web, on a souvent besoin de travailler à plusieurs faire souvent des mises à jour, et être le moins "système dépendant".</p>
<p>Travailler à plusieurs :</p>
<ul>
<li>les langages scriptés sont très lisibles, l'algorithmie utilisée est peut être pas optimale, mais elle est rapidement assimilable par les nouveaux arrivants dans l'équipe ;</li>
<li>l'assembleur ... c'est pas lisible. Un nouvelle arrivant va se taper 200 voire 300 instructions pour comprendre que c'est un algorithme de compression basique.</li>
</ul>
<p>Faire des mises à jour :</p>
<ul>
<li>les langages scriptés Objet sont censés être développé de manière ultra évolutive. L'ajout d'une fonctionnalité similaire peut prendre 10mn à coder. Faire une mise à jour sur les 200 serveurs ou les 3000 utilisateurs d'un outil peut se faire partiellement.</li>
<li>En assembleur... une mise à jour implique une recompilation de tout! Et sur les grosses appli, la compilation se compte en heure (des jeux vidéos, pour utiliser la même référence que toi... ah oui parce que j'ai bossé aussi dans les JV, certains studio ont une compilation qui dure 6h! Et ce pour un seul type de machine!). Et en industriel, balancer son programme sur sa machine nécessite : une connectivité particulière avec un OS particulier. Merci le déploiement !</li>
</ul>
<p>Moins "systèmes dépendant", dit "portabilité" :</p>
<ul>
<li>les langages interprétés (et j'inclus Java) ont l'avantage de passer d'une machine à une autre, d'un OS à un autre de manière transparente. Certes, on peut faire du code moisi par portable ($content = file_get_contents('C:\windows\monfichier.txt'); ....) mais il est possible de transférer une application d'un Windows à un Linux ou un Mac, ou un ... VACS - soyons fou! - sans aucune modification de code... juste un fichier de conf pour quelques données forcément dépendante)</li>
<li>en assembleur, et bien ... c'est simple, pour passer d'une machine à une autre... faut faire un autre programme. Les instructions assembleurs ne sont pas les mêmes (et oui, tu vois, on peut faire du web et savoir comment ça marche).</li>
</ul>
<p>J'ai apprécié PHP au début pour sa panoplie de méthodes en tout genre! Les contributeurs ont fait un travail de titan à développer un ensemble d'outils parfois utiles.</p>
<p>L'informaticien ne cherche pas à réinventer la roue à chaque fois, et c'est pour ça que les langages évoluent comme ça.</p>
<p>Et puis, tiens, je vais troller aussi : tous ces arguments sont typiques de l'informaticien qui a été incapable de suivre l'évolution, de comprendre où l'informatique allait, et qui reste réfugié sur ses vieilles habitudes. Certes, ce qu'il fait est ultra efficace, mais c'est également voué à disparaître. AInsi va la vie.</p>PHP, c'est de la merde ! - JBurn:md5:a7304d25a616ebce83b63770f5bfb7562011-12-02T21:14:14+01:002011-12-03T10:00:10+01:00JB<p><a http:="" blog.mageekbox.net="" ?post="" 2008="" 11="" 03="" php-cdlamerde#c3457="">@mehiradev</a> : Donc l'idée c'est de remplacer tous les langages existant par de l'assembleur ? J'avoue que j'ai un peu de mal à te suivre...
</p>
<p>En plus, tu es sûr que tu bosses dans l'informatique, parce que il y a un sacré condensé de conneries et d'approximations dans ton commentaire.</p>PHP, c'est de la merde ! - mehiradevurn:md5:8f36baff73ca2c362511ae3ddd876ba02011-12-02T19:21:09+01:002011-12-02T20:58:16+01:00mehiradev<p>Je confirme le PHP c'est de la merde mais pas pour les même raisons évoquer sur ce post.</p>
<p>"----- 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. ----"</p>
<p>Tous les langages, sauf le Java, on connus cette migration. Du C vers le C++, du Pascal vers Pascal Objet, du Basic vers le VBA. Il garde toutes leurs couches procédurales, il est normal que le PHP est connu la même chose.</p>
<p>Je suis technicien en informatique industrielle, c'est a dire que je fait des programme sur des microcontrôleur et des cartes électronique et la plupart du temps des programme qui doivent communiquer avec des application PC que je réalise en Delphi, C++, C#, etc...</p>
<p>Mon activité ma pousser à m'orienter vers le Web puisque aujourd’hui on souhaite accéder a tous de partout sur le web.</p>
<p>Pour moi il n'y a pas que le PHP qui soit de la merde, tous ce qu'il y a autour du web c'est de la merde, en gros c'est mal fait mal adapter et sa part de la couche Ethernet MAC et ça va jusqu'au HTTP en passant par les processeur de PC descendant de la ligner des 80x86, autrement dit vos PC.</p>
<p>Je pense que si il fallait être sérieux en informatique, il faudrait prendre tous ce qui existe aujourd’hui et tous repenser en prenant compte toute les tare existante.</p>
<p>Pour moi l'informatique d'aujourd'hui c'est le résultat d'un programme de test en réseau qui à été réaliser dans le début des année 80 sur lequel on à ajouter des pansement pour lui donnée plus de fonctionnalité, ajouter à ça.<br />
- Une concurrence déloyale des langages de programmation.<br />
- Des développeurs qui ont été séduit par des solutions qui n'ont pas été évalué en terme de performances.<br />
- une guerre des standards gagner par ceux qui ont sue s’imposer commercialement.<br />
- des gouvernement et des grand groupe qui se sont appropriés des standards et un système d’adressage virtuel vendue une fortune comme un terrain immobilier bien placer (autrement dit du super n’importe quoi !!).<br />
- un système d'exploitation mondialement connus qui reste le plus médiocre et le plus culotter que l’industrie moderne n’a jamais connus.</p>
<p>Je vais vous les décrire tous ça.</p>
<p>- les processeur : les PC descendent tous de l’architecture CISC x86 d'Intel du premier PC proposer par IBM le 8086 en 1978. Vous ne le savez peut être pas mais le logiciel « write.exe » de Windows 2.0 marche sur Windows 7 et cette comptabilité ascendante ne va pas sans risque. L’architecture des processeurs dispose d’une version évoluer de cette verrue séculaire. Mais heureusement le processeur RISC ARM est arrivé et pas question de faire marché « write.exe » sauf avec un émulateur ce qui semble logique. Et oui les processeurs 80486 à 80 Mhz était les premier à nécessité d’un ventilateur pour ne pas trop chauffer. J’ai un Samsung Galaxy S2 avec processeur dual-core à 1.2 Ghz qui n’a même pas un radiateur.</p>
<p>- L’Ethernet : On connais le protocole Ethernet avec son adresse MAC à 6 octet « 01 :02 :03 :04 :05 :06 » les 3 premiers code constructeur les 3 dernier code produit. Ce code qui n’a plus de sens puisqu’il y a trop produit en Ethernet pour respecter ce code. Aujourd’hui il peut être modifié par l’OS.</p>
<p>- Le protocole IP ou tous le monde connais le problème de IPv4 de 1981 réaliser par une université qui voulait se mettre en réseau avec un modem RTC avec d’autre écoles. Limité 4 milliard d’IP, dont certaine tranche dont monopoliser par des gouvernement et des grande société. On n’est arriver à étendre miraculeusement sa plage grâce au NAT Traversal. Aujourd’hui l’IPV4 est le standard internationale, je sait ce que vous allez dire mais l’IPv6 n’est pas la.</p>
<p>- Le HTTP : avec son html ou son xml en code ASCII alors qu’avant les donnée était transmise en binaire pourquoi une tel régression. Ce qui ne connaisse pas la différence Je m’explique exemple je souhaite transmettre un nombre entier 10 256 485 peut être transmis en binaire dans un entier de 32 bits sur 4 octet et en ASCII sur 8 octet (1 chiffre par octet). En plus de ça on ajoute des balises XML pour bien faire gonfler le tous. Et vous obtenez du html. Vous consommer de la bande passante pour rien si ce n’est pour avoir le choix de regarder les sources de la page ce que tout le monde s’en contre-fiche. Mais heureusement un génie à créer le JSON qui réduit la taille des balises (n’importe quoi).</p>
<p>- Windows : c’est comme linux en moins bien et payant. Microsoft aime prendre ses clients pour des idiots, comment ? en mettant des spots publicitaires « moi je suis PC et Windows 7 c’est mon idée ! », traduisez « moi je suis trop con et j’aime me faire sodomiser ! » (un truc comme ça je ne suis pas fort en anglais, lol). Windows c’est l’art et la manière de vous faire payer des fonctions qui sont gratuite ailleurs. Exemple : l’utilisation des domaines est déjà intégrée dans toute les versions, mais c’est débridé que dans la version professionnelle qui coûte plus cher. Chose qui est intégré de manière native dans la plus ancienne des versions de linux. De toute façons vous avez pas le choix si vous acheter un PC en grand public il y a Windows 7 ou son principale concurrent Windows 7 (vive la concurrence et libre choix). Note : quand vous achetez le dernier Windows ca ne marche pas et mais il n’y a pas de service après vente et il faut attendre la sortie des services pack.</p>
<p>- Le HTML : je revient sur lui parce que j’ai pas fini. Digne successeur du SGML de 1991. qui un système de document page structurer comme un document WORD ou autre. A la différence que les medias ne sont pas dans la page et que celui-ci est en code ASCII. Vous avez remarqué qu’il y a beaucoup de navigateur WEB se disant tous compatible HTML mais ne s’affichant pas de la même manière pourquoi ? parce que vous vous trouvez dans un théâtre ridicule de grand groupe comme Microsoft, Mozilla, Adobe, Google, et les associations de standardisation qui se livre une bataille. Guerre qui a rendu ce système encore plus lourd et encore plus difficile à intégré dans nos système et encore plus instable. Qui sont notamment surpuissant pour faire afficher des animations comme on en trouve sur le web. Je m’explique le HTML à évoluer il en est au HMTL5. mais HTML et un système métalangage, il intègre dans son code des langage et structure différente. Comme le VBA, le JavaScript des feuille de style comme le css. Et tenir compte de tous ça c’est compliquer pour n’importe quel navigateur. Dans votre ordinateur tous respectent le code binaire. Par exemple vous voulez un fond d’écran noir vous écrivez backgound : #FFFF. Mais ça votre processeur ne sait pas faire pour cela il faut convertir ce texte en code couleur pour ensuite rendre l’afficher en blanc. Ca n’a l’air de rien mais en ressource processeur ça prend du temps inutilement et vous le multiplier par toute les balises et codes qui se trouve dans une page et ça commence à faire beaucoup. Pour ce qui est du langage c’est pire. C’est du code interpréter le processeur ne sait pas faire du code interpréter et vous devez le convertir en code machine ou pseudo-machine pour l’exécuter ligne à ligne le programme à chaque fois. La même page aurait pus largement bien fonctionner dans un vieux PC d’il y a 10 ans si le HTML aurait été réfléchis différemment. On créer des processeurs puissants pour que des développeurs imagine des solutions encore plus gourmande en ressource sans aucun gain esthétique ou interactif.</p>
<p>- Le PHP : le voila le sujet du post en question. Explication que le fonctionnement lorsque vous accéder à une page d’index PHP sur l’URL de votre navigateur, le serveur exécute une ligne de commande « php5 index.php ». le programme Php5 exécute le code PHP, et générer une page HTML qu’il envoie au client ainsi que les media qui l’accompagne et vous obtenez votre page à l’écran. Vous allez voir ce qui se passe dans cette petite tache qui semble être rien.</p>
<p>- Tous d’abord l’OS va exécuter une ligne de commande avec un fichier et tous ça prend du temps, attention on parle de microseconde, mais c’est la quantité qui fera la différence. Ici c’est php5 et le fichier « index.php ». il faut charger en mémoire et libérer une fois terminé et ceux à chaque appel de page web. Un serveur gère des milliers de pages et des milliers de clients à la seconde demande à afficher une page sur leurs navigateurs. le Serveur est vite saturé de page et n’en peut plus. Alors qu’il pourrait le faire la même chose sans ligne de commande.</p>
<p>- Ensuite l’interpréteur PHP, un interpréteur de code c’est bien pour faire des macros comme dans Word ou Excel en VBA mais pas pour un serveur de site professionnel ça n’est tous simplement pas sérieux du tout. Il faut forcément du code compiler au mieux au jeux d’instructions du processeur comme toute application ou sur pseudo-machine comme la JVM de Java qui notons et très performante. Pourquoi comme pour le HTML les processeurs ne savent pas exécuter du code interpréter. Exemple<br />
Code PHP<br />
< ?php<br />
$Compteur = 0.0 ;</p>
<p>While ($Compteur <= 1000000.0)<br />
{<br />
$Compteur = $Compteur + 1.0 ;<br />
} ;<br />
><br />
Dans le code ci-dessous je créer un compteur qui va de 0 à 10 millions en virgule flottante. En code C ce programme va mettre 92 ms pour être exécuter, en php il va mettre 1 733 ms c'est-à-dire 20 fois plus de temps. Le processeur dispose d’une FPU unité de calcule à virgule flottante le programme compiler C fait directement exécuter ces ligne par le processeur. Le programme en PHP va lire le code et les transcrire en code machine à chaque cycle d’exécution de la boucle et ligne par ligne. Tous les code interpréter souffre de se manque de performance. C’est pour cela qu’ils ne sont bons qu’à faire de la macros pour des raison de lisibilité et de modularité du code.</p>
<p>- La génération de la page Web. Il faut créer à chaque appel intégralement la page web même si vous souhaitez modifier qu’une zone de texte dans la page. Normalement dans une application graphique le programme créé la fenêtre et n’actualise que les zones devant être modifier au choix du programmeur. Mais en PHP ou autre serveur WEB vous recréer systématiquement la page en entier. Attention la aussi il y a des subterfuge pour remédier à ça (Dans ce cas la pourquoi ne pas faire les chose correctement des le début ?).</p>
<p>- Pour revenir au problème des objets c’est vrai qu’il est ridicule de créer des objets avec tous leurs systèmes complexes d’héritage. Lorsque le programme s’exécute les créer et les détruire tous une fois le programme fini. En programmation C++ les objets permettaient d’éviter la multiplication des codes programme redondant dans la mémoire. Ici on ne comprend pas trop l’intérêt.</p>
<p>- Les bases de données, à chaque exécution PHP on ouvre une connexion on attend l’identification et on exécute ses requêtes SQL et on les détruit après. Alors qu’il pourrait garder la connexion active.</p>
<p>Conclusion on fait des processeurs surpuissant avec des capacité de calcules étonnante pour se voir exploité comme un papi de 90 ans qui conduisant une formule 1. Exemple un Athlon X2 2 Ghz c’est 10 GFLOPS c’est 10 milliard de calcule à virgule flottante à la seconde. Alors tous ceux qui feront du PHP et qui ce prenne pour des cracks de la technologie moderne ferait mieux d’aller s’écraser et comprendre comment ça marche un ordinateur. Les vrais personnes que j’estime sont les gens qui font les moteur de jeux vidéos qui eux savent ce que c’est de faire un programme informatique et qui savent exploiter la puissance d’un ordinateur, les autres sont les victimes d’un système qui a séduit et qui à gagner de la popularité mais qui n’a jamais été éprouvé. Et c’est comme ça pour l’informatique en générale. Et pour ceux qui pense que c’est une histoire de d’argent. Je ne pense pas du tout que soit ça la cause, je pense que c’est surtout une histoire de popularité et de séduction des systèmes et de manque d’informations et de professionnalisme de la part de ce qui se prenne pour des références.</p>
<p>J’espère avoir été clair sur le monde ou on vie actuellement où les talent ne sont pas reconnu mais seulement ceux qui savent se vendre (vive le capitalisme !!).</p>PHP, c'est de la merde ! - genokillerurn:md5:513d14edbda96bdb14cb5a04214ce1072011-11-24T19:07:39+01:002011-11-27T19:01:08+01:00genokiller<p>Je tape php c'est de la merde dans google et paf je tombe sur quelqu'un qui le dit. Pourtant je ne fais pas du PHP depuis longtemps mais je l'ai compris vite en apprenant quelque chose appelé ruby on rails qui est bien plus performant et répond au problème dix fois plus vite.</p>PHP manque de plus en plus de cohérence - metagotourn:md5:f0e50452fd7c6df5128f1e49914ee8982010-08-20T00:05:08+02:002010-08-20T09:04:15+02:00metagoto<p>@Pierre<br />
Plusieurs raisons: le déréférençage n'est pas systématique, les opérateurs "->" et "()" n'ont pas de réels status d'opérateurs. Par exemple on peut faire ()-> et tout récemment ()[] (array subscript, pas sûr que ça passe dans les commentaires), mais beaucoup d'autres combinaisons aux apparences tout à fait classiques sont interdites: (exp)(), (exp)->, ()++ etc.<br />
En parallèle, il y a l'usage des {exp} pour les variables variables. exp doit être castable en string.<br />
Cela fait deux catégories d'expressions dont il faut connaitre les domaines d'applications et les limitations.. et les workarounds.<br />
Boutade trollesque: Quand je fais du php, je me mets en mode "curly braces" (js, perl, C..). Puis je me mets en mode dégradé php <img src="/themes/default/smilies/wink.png" alt=";)" class="smiley" /></p>PHP manque de plus en plus de cohérence - Guileurn:md5:4547ea99c39e4af7b076d4f475a448cc2010-08-19T17:23:42+02:002010-08-19T17:03:48+02:00Guile<p>Petite relecture : "Il semble en effet que les développeurs de PHP n'est pas eu conscience" il faudrait écrire "Il semble en effet que les développeurs de PHP n'aient pas eu conscience"</p>
<p>Pour continuer d'utiliser __invoke() de façon presque magique, le code suivante fonctionnerait-il ?</p>
<pre> public function writeFoo()
{
$appel = $this->foo;
$appel();
return $this;
}</pre>