- un système de traçabilité agricole,
- un système de gestion de contenu,
- une plate-forme de micro-paiement,
- une plate-forme d'hébergement,
- un prototype de sytème expert pour détecter et diagnostiquer les problèmes sur un réseau informatique contenant plusieurs milliers d'hôtes,
- Divers
frameworks
.
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 classeDate
, mais une classeDateTime
... - 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 !
19 réactions
1 De sl1de - 04/11/2008, 19:18
Je ne pense pas qu'il y ai un langage qui ne connaisse aucun bug (même si tu passes à java)
Maintenant je pense que tu es plus énervé d'un bug non résolu qui te poses certainement un problème.
En ce qui me concerne je préfère PHP à l'ASP et ai même développé une interface de création de compte dans une AD (et comme tu le dit si bien, PHP n'est pas orienté Objet...)
2 De nico_somb - 04/11/2008, 20:50
Puisque je n'ai jamais réussi à faire de rétroliens, je poste ici
je me suis permis une petite réaction du haut de mes 5 ans de PHP par ici : http://www.nicosomb.info/blog/index...!
Voila voila!
3 De Hugo - 04/11/2008, 21:13
Je te trouve un peu rude dans tes propos vis à vis de PHP. PHP, comme n'importe quel autre langage de programmation, a ses points forts et ses points faibles. Dans tes propos, tu sembles détester PHP mais malgré tout tu dis bien que tu travailles avec depuis 2000, tu trouves donc dans PHP du potentiel et de l'efficacité que tu n'aurais sûrement pas trouvé ailleurs. PHP a cette mauvaise image de langage de programmation pour débutants ou étudiants contrairement à d'autres langages. Néanmoins, PHP a cette force de pouvoir être pris en main rapidement (mais pas forcément maîtrisé rapidement non plus), ce qui lui a valu sa popularité, son développement et sa très large communauté. C'est notamment grâce à lui et à MySQL que les nouveaux métiers du web sont apparus. Si PHP n'était pas apparu, il n'y aurait pas autant d'agences web et de communication et donc par la même occasion pas autant de sites Internet et de contenus...
D'un point de vue technique, je serai curieux de savoir ce qui te dérange dans le modèle objet de PHP 5. Certes le modèle objet n'est pas autant abouti que celui de Java ou de C++ pour ne citer qu'eux mais il permet malgré tout de répondre à la plupart des problématiques. Il faut quand même avoir en tête que le modèle objet de PHP s'inspire très fortement de celui de Java qui est mâture et éprouvé. C'est donc un avantage non négligeable.
C'est aussi grâce à ce nouveau modèle objet que l'on voit apparaître depuis 3 ans tout un tas de frameworks PHP 5 orientés objet. Travailler avec des outils comme symfony ou Zend Framework apporte un sacré brin de fraîcheur et de plaisir que de travailler en procédural. Je me demande si les autres langages de programmation orientés objet offrent des outils de RAD aussi faciles à prendre en main. Peut-être Django en Python ou bien Ruby On Rails à la rigueur. Mais le nombre de serveurs web qui font tourner des applications Ruby On Rails ou Django est beaucoup trop infime par rapport au nombre de serveurs PHP. C'est bien que PHP est quelque part plus fort que les autres langages. Du moins, il est selon moi le langage le plus adapté au développement d'applications Web contrairement à Java, Ruby ou Python qui sont à l'origine davantage destinés à des applications desktops.
Puisque nous en sommes à critiquer les langages de programmation, je critiquerai le modèle objet de C++ qui permet de faire cette chose horrible qu'est l'héritage multiple. Au moins avec PHP ce n'est pas possible.
Bref on pourrait débattre pendant des heures sur PHP mais au final c'est le langage le plus approprié au web, le plus simple à prendre en main, celui qui offre le plus de "développeurs" sur le marché du web et celui qui a la plus forte communauté.
4 De jp.fox - 04/11/2008, 22:15
Et bien, quelle drôle d'idée de descendre en flèche l'outil qui visiblement te fait vivre. Même si je suis partiellement d'accord sur un certains nombres de point avec toi, je trouve que ces quelques inconvénients sont plutôt mineurs face aux avantages de ce langage : rapidité de développement, simplicité du code, bonne documentation des api, portabilité du langage sur plusieurs plateformes, nombreuses extensions faisant vraiment gagner du temps, relative simplicité du débogage (je ne connais pas de langage qui soit vraiment simple à déboguer et php n'est pas le pire)... Bref, on va dire que t'étais énervé
5 De Mère Teresa - 04/11/2008, 22:43
Merci pour ce billet très intéressant. J'attends les développements et ajouts ultérieurs promis avec une grande impatience. Je me sens moins seule à avoir rencontré des problèmes "bizarres".
6 De exotux - 05/11/2008, 01:09
Une conclusion bien violente qui cherche presque le Troll non ? On cherche à attirer un peu de monde sur ce tout nouveau blog Bon, je rentre dans le jeu !
"PHP c'est de la merde..."
Conséquence de cette conclusion, plus de 70% des serveurs web sont équipés par de la merde (le pourcentage n'est peut-être pas exact)... Plus de 70% des responsables de serveurs sont des cons puisqu'ilsl équipent leur serveur avec PHP. Woowww ça fait réfléchir...
Vous parlez "en toute connaissance de cause" car depuis 8 ans vous développez avec un langage de merde. Il serait peut être temps de penser à vous reconvertir Php n'est en rien un langage de merde et je parle en" toute connaissance de cause" puisque je code avec depuis la version 3.
Php est surtout très permissif et facile d'accès. Tout le monde peu s'improviser développeur PHP et donc faire de belles horreurs.
PHP n'est pas tout objet. Tout comme le C. Et le C, c'est bien connu, c'est de la merde aussi...
PHP est développé selon le modèle open source, le modèle communautaire. Qui dit communauté, dit divergence d'opinion. Et si il y a de fortes têtes qui campent sur leur position forcément, on fini par trouver des perles dans les discussions trollesques du genre "ton idée, c'est de la merde" ou "non c'est la tienne".
Php n'est pas objet. Il n'est peut-être pas tout objet comme pourrait l'être JAVA mais il le devient. Un peu comme le C++ non, c'est un peu l'ajout d'un couche objet sur le langage C (désolé pour les puristes). Et le C++ c'est bien connu, c'est de la merde.
Il n'y pas de langage de merde, juste des langages ayant des approches différentes. Si PHP n'est fait pas parfaitement bien quelque chose, il fera 10 fois mieux autre chose. Le traitement de chaînes de caractères par exemple. J'ai de très bon souvenirs en C/C++...
"Dans 80% des cas d'utilisation, PHP fait ce qu'on attend de lui. Le problème, ce sont les 20% restant." --> comme dans tout les langages, il y a les points forts et les points faibles...
Bon Troll. En tout cas, le thème de ce blog a été choisi avec goût :D
7 De Fabien - 05/11/2008, 07:51
Tu commence fort dès le premier billet
Bientôt un langage de programmation orienté web fait par Fred ?
Allez, bonne continuation pour ton blog ! J'ai hâte de lire la suite.
8 De XoraX - 05/11/2008, 20:03
bien vu !!!
ba moi je trouve que t'as pas été assez cru. ça m'arrive de le dire mais dans ces moments là je deviens tout rouge et mon écran commence à se brouiller tellement j'envoie de mauvaises ondes (à moins que ce ne soit des postillons émanent de mes injures).
Par contre j'avoue que ça m'est rarement arrivé sur le coeur de php, plutôt sur ce qu'en font les dev. Je pense qu'actionscript réussi une plus grande prouesse en remplissant à lui seul une fosse à purin. solution universelle : le rouleau de PQ a porté de main.
bienvenue dans mes rss.
9 De oelmekki - 06/11/2008, 14:22
Comment ça les devs du core PHP ont des Idees\Idees_sangrenues ? :]
Je ne comprend pas non plus le problème avec le modèle OO, mais je serai intéressé de le connaître, parce que j'entends souvent cette remarque. Est-ce que c'est propre à PHP4?
Mon premier langage a été ruby et j'ai appris tout de suite à penser en 00. Même si PHP5 n'est pas du 00 pur, sa couche 00 ne me pose pas trop de problèmes. Il n'y a guère que le fait de pouvoir déclarer des attributs extérieurement qui m'a ennuyé, mais c'est vite balayé en définissant une méthode __set qui lance une exception si l'attribut n'existe pas.
En tout cas, ça n'a rien d'équivalent avec l'horreur absolue à laquelle j'ai fait face en regardant l'implémentation objet de C++ et de javascript.
10 De FlUxIuS - 09/11/2008, 16:19
Voilà un billet assez réactif. Malheureusement PHP est le petit fils du perl et au niveau du type et des définitions, cela demande au développeur de respecter certaines conventions.
Ce genre de réaction "PHP c'est de la merde" on pourrait la faire pour l'HTML qui au final est encore bien pire...
PHP rend un grand service pour la diffusion d'information simple car contrairement au Flash, Java et autres clients, il est le moyen le plus facile et rapide pour les visiteurs, qui au final n'ont besoin que d'un navigateur.
PHP 5 intègre bien la programmation orientée objet, car finalement on c'est aperçut que les gens partageais des sources illisibles et le group réfléchit toujours à cette problèmatique.
Tu dis que la prise en main de se langage est assez primaire et tu n'as pas tort mais PHP est un langage très haut niveau et très puissant. Il faudra donc obliger les programmeurs à rentrer dans des conventions.
Pour cela, un programme sur l'implémentation du design pattern MVC est discuté et nous encourageons maintenant les utilisateurs à aller vers les frameworks pour développer plus vite et adopter des conventions strictes. De plus, si le développeur à des notions en framework, à l'avenir il aura surtout une autre vue sur ses futures projets, si il ne l'utilise pas.
Ce qui est "de la merde" c'est ce que les utilisateurs peuvent souvent faire
11 De Trollux - 21/04/2010, 09:54
php un langage "très haut niveau" je ne savais pas tiens ... Allez je vais coder un driver en php ! just fo the fun ! :D
12 De mageekguy - 21/04/2010, 17:32
@Trollux : Un langage de haut niveau offre un niveau d'abstraction élevé par rapport à l'architecture de la machine et du système d'exploitation qui fait tourner le code final, par opposition à un langage de bas niveau qui est fortement dépendant de la machine hôte.
J'avoue donc avoir du mal à comprendre le sens de ton commentaire.
A moins que ce ne soit un troll velu ET débile ?
13 De genokiller - 24/11/2011, 19:07
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.
14 De mehiradev - 02/12/2011, 19:21
Je confirme le PHP c'est de la merde mais pas pour les même raisons évoquer sur ce post.
"----- 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. ----"
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.
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...
Mon activité ma pousser à m'orienter vers le Web puisque aujourd’hui on souhaite accéder a tous de partout sur le web.
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.
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.
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.
- Une concurrence déloyale des langages de programmation.
- Des développeurs qui ont été séduit par des solutions qui n'ont pas été évalué en terme de performances.
- une guerre des standards gagner par ceux qui ont sue s’imposer commercialement.
- 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 !!).
- 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.
Je vais vous les décrire tous ça.
- 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.
- 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.
- 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.
- 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).
- 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.
- 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.
- 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.
- 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.
- 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
Code PHP
< ?php
$Compteur = 0.0 ;
While ($Compteur <= 1000000.0)
{
$Compteur = $Compteur + 1.0 ;
} ;
>
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.
- 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 ?).
- 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.
- 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.
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.
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 !!).
15 De JB - 02/12/2011, 21:14
@mehiradev : 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...
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.
16 De Guile - 02/12/2011, 21:43
Boujaa!! Et bien mehiradev, ce sujet a réveillé furax le troll qui sommeille en toi!
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é).
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".
Travailler à plusieurs :
Faire des mises à jour :
Moins "systèmes dépendant", dit "portabilité" :
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.
L'informaticien ne cherche pas à réinventer la roue à chaque fois, et c'est pour ça que les langages évoluent comme ça.
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.
17 De mehiradev - 03/12/2011, 12:10
Salut,
Oula les gars vous vous êtes enflammer contre moi et vous avez pas compris ce que je disait.
Primo.
Le problème de l’interpréteur est connus depuis longtemps.
Bon visiblement tous le monde n'a pas compris la différence entre un programme compilé et un programme interpréter (ref: wikipedia).
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.
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.
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.
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.
Secondo.
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.
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.
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.
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.
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.
troisièmement
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?.
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.
Dernièrement.
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.
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.
Guile, T'a fais du jeu vidéo je suis déçu que tu rejoigne pas mon avis.
Pour le déploiement des programme c'est la dessus qu'il fallait travailler c'est clair.
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
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.
Ce qui est parfaitement logique. C'est en apprenant des ses erreurs que l'ont acquière de l'experience.
il en va de même pour le système économique ou on vie.
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.
Même si je trouve que le script de langage PHP est plutôt moche, mais ça c'est une question de goût.
[EDIT] pour rassembler deux commentaires en un seul.
18 De mageekguy - 03/12/2011, 16:12
@mehiradev : Merci pour ces 2 fois 5 minutes de franche rigolade !
Quelques petites précisions, car je pense que l'on s'est très mal compris.
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).
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.
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 !
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.
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.
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é.
Et en parlant du Web, il se standardise de plus en plus, et c'est tant mieux.
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.
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 !
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.
Je pense que tu en es resté à PHP/FI... depuis, de l'eau a coulé sous les ponts !
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.
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.
19 De Mix78 - 19/07/2013, 14:39
PHP c'est vraiment de la m....
C'est moche, indebuggable et illisible. C'est pire que du pascal.
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.
Le seule moyen c'est de le connaître assez bien pour éviter les exceptions.
Alors, je sais, vous me direz que je trolle a tout va et que c'est moi qui suis un con.
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...
Enfin c'est pas demain que j’arrêterais de coder avec ce truc. Mais je le déteste sincèrement.
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.