Developpez.com

Le Club des Développeurs et IT Pro

Le PHP aurait été créé par un « faux programmeur »

Et serait aussi passionnant qu'une « brosse à dents », déclare son inventeur

Le 2010-04-21 16:48:45, par Gordon Fowler, Expert éminent sénior
Le PHP a-t-il été créé par un programmeur qui déteste développer. Et qui en plus le fait mal.

C'est la question que l'on peut se poser quand on lit les déclarations de son inventeur (qui précise : "je n'ai pas créé le PHP que l'on connait aujourd'hui […], j'ai simplement été son premier développeur").

Il faut dire que le danois Rasmus Lerdorf est expert en formules provocantes.

Il avoue ainsi "je n'avais absolument aucune idée sur la manière d'écrire un langage de programmation, j'ai juste posé pierre après pierre".

Une explication qui se corse quand on la met au regard de cet autre (vrai-faux ?) aveu : "je n'aime pas programmer. J'ai créé cet outil pour programmer moins et pour pouvoir réutiliser le code".

Rasmus Lerdorf revient souvent sur cette idée qu'un des langages de programmation les plus populaires a été imaginé par une personne qui n'aime pas ça : "Il y a des gens qui aiment programmer. Je ne comprends pas comment ils peuvent aimer ça". Et surtout par une personne qui n'en fait qu'à sa tête : "tous ces trucs que vos profs vous ont dit d'utiliser, moi j'en ai rien à foutre (don't give a crap)".

Bref, "je ne suis pas un vrai programmeur. Je tente des choses jusqu'à ce que ça marche et après je continue. Les vrais développeurs diraient "ouais, ça marche, mais y'a des memory leaks dans tous les sens. Peut-être qu'on devrait corriger ça". Moi je redémarre juste Apache toutes les 10 requêtes".

Et quand on lui demande ce qu'il pense de sa création, il répond, (faussement ?) blasé, que "le PHP est à peu près aussi excitant qu'une brosse à dents. Vous l'utilisez tous les jours, ça fait ce qu'on lui demande de faire, mais c'est un simple outil. Alors quoi ? Qui voudrait lire des articles sur les brosses à dents ?".

A part les dentistes, s'entend.

Source : Les citations sourcées de Rasmus Lerdorf

Lire aussi :

Les rubriques (actu, forums, tutos) de Développez :

PHP
Langages
Développement Web

Et vous ?

Que pensez-vous de cette comparaison entre PHP et une brosse à dents ?
Peut-on vraiment être un piètre développeur et créer un langage ?
  Discussion forum
180 commentaires
  • guilhem91
    Membre régulier
    Bonjour

    À mon avis, une chose est certaine : il n'est pas possible de créer un langage de programmation quand on n'y connaît rien. Rasmus Lerdorf cherche plus ici à faire de la provocation qu'autre chose. Lui, un piètre développeur ? Ça m'étonnerai. Peut-être n'était-il pas un expert, mais forcément il devait déjà programmer un peu.

    Et puis la comparaison avec la brosse à dents... Ça n'a rien à voir. Certes, PHP n'est qu'un outil, mais certains (dont moi) programment en PHP plus par passion qu'autre chose : ça existe. J'ai rarement vu des passionnés du brossage de dents...

    Pas très constructives, les remarques de Rasmus Lerdorf. Comme ça a été dit, il veut plutôt jouer les provocateurs.
  • beekeep
    Rédacteur/Modérateur
    Envoyé par mekal
    pour en arriver la il faut avoir ete formé car c'est incomprehensible pour celui qui n'a jamais programmé
    il ne reste plus qu'a le mettre en latin
    il faudrait que tous les langages s'écrivent comme en windev ? (du français presque ..)

    moi j'écris pas du code de façon à ce que mon boulanger puisse le maintenir.
  • Sowa
    Membre du Club
    J'entrerais dans ce débat en vous collant ici juste une citation tiré de du livre PHP IN ACTION. Désolé pour ceux qui ne seraient pas à l'aise avec l'anglais. Je pense qu'il a tout dit.

    One thing I like about PHP is the attitude of the people who use it. PHP has always
    been a pragmatic solution to real problems. It’s only natural that PHP programmers
    tend to be pragmatic rather than dogmatic, humble and open rather than conceited
    and pretentious. They like PHP, but they know that there is no perfect technology, no
    perfect programming language. Everything has its pros and cons, its advantages and
    disadvantages. PHP programmers tend not to start language wars. That’s fortunate;
    often arrogance on behalf of a programming language—or any other software—is
    based in ignorance. You know all the things your favorite language can do, and you
    don’t know how to do the same things in other languages. It’s easy to assume that
    these things can’t be done. But that’s rather like assuming that your car is the only one
    in the universe that has air conditioning.
    Finding faults with a programming language is easy. If it lacks a feature you desperately
    feel you need, you can use that as a reason to put it down. If it has a feature
    you think is totally unnecessary, you can frown upon that. PHP 4 had no visibility constraints
    such as private methods; this of course was a Bad Thing to programmers who
    were used to languages such as C++ and Java. PHP 5 has visibility constraints, and I'm
    sure there are others—who are accustomed to other languages that lack these features—
    who find this appalling.
    The fact is you don’t know how a feature or the lack of it works in real life until
    you’ve used it for a while. PHP has been criticized for having too many functions, in
    contrast to Perl, which has fewer. I’ve used both languages extensively, and I happen
    to prefer the way lots of functions are easily available in PHP. Someone else may feel
    differently, but the most important point is that the difference is much less dramatic
    than some people think. Language wars are too often fought over differences that may
    have a marginal impact on overall productivity.
  • bens9
    Candidat au Club
    Salut les pros, puisque vous parlez des programmeurs du dimanche en voici un qui amène sa fraise
    Moi je dis merci Rasmus quand je vois tout ce que j'ai réussi à faire avec PHP (+Mysql) : une dizaines de sites web (perso et pros) dont certains ont eu beaucoup de succès dans leur domaine, des applis perso et des développements pour le boulot (simples mais qui nous ont économisés des dizaines de milliers d'euros).

    Les avantages énormes de PHP sont :
    - la simplicité pour démarrer qui permet de faire concrètement des choses simples sans pratiquement rien connaitre de la programmation mais avec une progression possible et relativement facile vers des choses complexes.
    - les ressources colossales qu'on trouve sur le web en matière de tutoriels, de forum, de code voire d'applications complètes.
    - la gratuité du language lui-même et du serveur local, le très faible coût d'hébergement et son coté universel chez les hébergeurs
    - l'association efficace avec Mysql (et maintenant Postgresql)

    Les défauts de PHP ne pèsent pas lourds par rapport aux avantages évoqués ci-dessus.
    De toutes façons je pense qu'on peut faire du très bon boulot avec PHP et qu'on peut faire du code horrible et inopérant avec JSP ou ASP (j'ai des exemples à la pelle... tous développés par des programmeurs dits "professionnels".

    Cela dit par rapport à ses débuts je pense qu'il y a de moins en moins de programmeurs débutants/amateurs, ceux-ci s'orientant directement vers des solutions type CMS (Joomla, Drupal,...) qui n'existaient pas au démarrage de PHP.
  • akiro06
    Membre à l'essai
    salut ,

    je suis dev. actionScript et viens mettre ma ptite graine dans la discussion, je peux ? Vais-je être victime d'une cabale .

    Pour ce qui est du typage, j'ai pu voir mon language favori passer de typage faible, du code étalé partout ect...
    a un language hyper-structuré basé sur ecmascript4. Et pour moi il n'y a pas photo.

    +
    - moins de perte de temps dans le débogage, le compilo travaille presque a ma place.
    - l'optimisation des perfs par apport au type et a l'architecture materielle. (ceci grace a l'avm2 qui interprete as3 en JIT dans le player).
    Ainsi le type "int" et 2 fois plus rapide que le type "Number" et 4 fois plus que le type "uint"(x86 MMX,SSE). Sans compter l'optimisation mémoire bien entendu.
    - la quasi obligation de s'intéresser a l'architecture logiciel et donc de progresser.

    -
    - perte de temps a typé ses variables.
    - la quasi obligation de s'intéresser a l'architecture logiciel et donc de progresser, et oui ca peut être un inconvénient selon notre implication ou notre passion pour la programmation.


    Pour la montée en charge, cela est, je pense humblement, une affaire architecturale, c'est sur, mais aussi philosophique.


    Je pense personnellement qu' il existe 2 philosophies:

    - jm'en fous. Tout comme mon client, je veux rapidement gagner des sous et jvais pas essayer de me prendre la tête avec des "gadjets" de geek.
    De toute façon il n'y aura jamais de monter en charge, et pour le moment mon "truc" rempli son rôle, le client est content, que demande le peuple?
    .. des design patterns ? ...non, des sous .
    Bien entendu, une partie de ces sous risque d'être perdus, lors de la maintenance, mais ca n'est pas grave, on verra, puis surtout si j'arrive a la faire casquer au client, a part la gloire, j'ai tout gagné.

    - Je suis passionné, veut faire les choses bien, et donc la montée en charge, l'architecture ect... est le "premier" de mes soucis(au delà de l'implémentation pur et dur), mon application doit être : stable, solide, et agile. J'espère aussi fortement être reconnus et gagner beaucoup de sous.

    Donc si une appli PHP est peu scalable ou evolutive, ce n'est pas a cause du langage PHP en lui même, mais plutôt a la culture du scripting qu'il induit.

    Bon c'est caricaturale, je n'ai pas apporté grand chose a ce qui a déjà été dit, mais c'est un sujet qui me plait, donc j'avais besoin de réagir.
  • Franck SORIANO
    Expert confirmé
    Envoyé par yann2
    Bla bla bla Typage fort statique vs typage faible dynamique, éternel débat.

    Alors,

    * Tes fonctions, méthodes variables PHP tu documenteras et complétion tu auras (Type Hinting tu utiliseras ).
    * Ton application PHP tu testeras et problèmes tu n'aura pas (ou presque )

    De toutes façons des tests unitaires et d'intégration sont quasi obligatoire lors de développement pro.
    Oui, on peut s'en sortir dans un monde idéal où on a le temps de mettre en place tous les palliatifs à ce qu'on n'a pas.
    Mais soyons réaliste. Dans la vrai vie, on a des délais de livraison à tenir.
    Lorsqu'on est loin de la deadline, on a plein de grands principes, on va faire ci, on va faire ça, on va respecter toutes les règles de l'art... Bref on perds du temps pour se faire plaisir.
    Et plus la deadline approche, et plus ça devient : "peut importe ce qu'on fait, ce qui compte c'est que ça marche" :
    - En générale, la doc est sacrifiée en premier pour récupérer du temps pour que ça marche.
    - Puis on supprime les tests unitaires, (quoique beaucoup n'en font pas de toutes façon).
    - Ensuite on supprime les tests d'intégrations.
    - On finit par se contenter de quelques tests fonctionnels superficiels qui ne couvriront même pas toutes les fonctions essentielles.
    - Et parfois, on livre même en sachant que ça ne marche pas

    Si on ajoute à celà qu'en informatique, les retards font parti des règles de l'art, et que lorsque on estime une charge, on peut être sûr qu'on l'a sous-estimée...

    J'ai qu'en même tendance à dire que pour avoir une application fiable malgré tout, le meilleur moyen de ne pas avoir de bugs c'est de commencer par ne pas en faire
    Et de ce côté, le typage statique est qu'en même très utile pour empêcher d'écrire n'importe quoi à la source. On détecte immédiatement bon nombre d'erreurs de conception au moment même où on écrit le code (plutôt qu'au moment des tests).
    C'est con à dire, mais si on se retrouve à additionner des choux et des carottes, c'est que la formule est fausse. Donc que toute l'analyse est fausse.
    Il est qu'en même dommage de devoir attendre les tests pour ce rendre compte que l'approche du problème était erronnée !

    Moi je trouve que les langages sans vérification des types à la compil ne font pas gagner du temps et ne simplifient rien. Ce sont des pièges à débutant !
    Je connais pas mal de développeurs PHP a qui je n'ai jamais réussir à faire comprendre la différence entre une date et son format d'affichage (idem pour les nombres et le séparateur décimal).
  • Paul TOTH
    Expert éminent sénior
    Il y a du vrai dans ce qu'il dit.

    PHP est a peu près tout ce que je n'aurais pas fait comme vrai langage de programmation ^^

    Mais s'il est aussi populaire c'est que justement il n'est pas conçu comme un langage de programmation

    Par exemple, on va me dire que Java c'est super génial, et c'est sans doute vrai, mais pour expliquer à un gamin de 10 ans comment faire un Hello World en Java, il faut commencer par lui expliquer ce qu'est un objet, que c'est la méthode truc (suivant le contexte) qui démarre, puis l'évènement machin pour faire telle chose...en PHP tu tapes "Hello World"

    Et les derniers ajouts sur PHP sont douteux car on veut faire d'une brosse à dents un outil professionnel...ce qui n'est pas facile !

    Envoyé par guilhem91 
    Bonjour

    À mon avis, une chose est certaine : il n'est pas possible de créer un langage de programmation quand on n'y connaît rien.

    Moi j'ai toujours été bluffé de voir ce que pouvait faire un "programmeur du dimanche"

    j'ai déjà vu ce genre de code :
    Code BASIC :
    1
    2
    3
    4
    5
    6
     
    IF a = 1 THEN b = c + d 
    IF a = 2 THEN b = d + e 
    IF a = 3 THEN b = c + d 
    IF a = 4 THEN b = d + e 
    ...
    aucun programmeur ne ferait ça...mais ça fonctionne tout de même et n'est-ce pas le résultat qui compte ?
  • beekeep
    Rédacteur/Modérateur
    Envoyé par Paul TOTH
    aucun programmeur ne ferait ça...mais ça fonctionne tout de même et n'est-ce pas le résultat qui compte ?
    généralement ce qui mérite d'être fait mérite d'être bien fait.
    et en informatique ce qui fonctionne n'est pas forcément correct, alors je dirai non il n'y a pas que le résultat qui compte.
  • Envoyé par Paul TOTH

    par exemple, on va me dire que Java c'est super génial, et s'est sans doute vrai, mais pour expliquer à un gamin de 10 ans comment faire un Hello World en Java, il faut commencer par lui expliquer ce qu'est un objet que c'est la méthode truc (suivant le contexte) qui démarre, puis l'évènement machin pour faire telle chose...en PHP tu tapes "Hello World"

    Et les derniers ajouts sur PHP sont douteux, car on veut faire d'une brosse à dents un outil professionnel...ce qui n'est pas facile !
    Pas tout faux du tout. T'as tout dit. Tout est dans la dernière phrase.
  • helmi.dridi
    Membre actif
    Envoyé par Paul TOTH
    il y a du vrai dans ce qu'il dit.

    PHP est a peu près tout ce que je n'aurais pas fait comme vrai langage de programmation ^^

    Mais s'il est aussi populaire c'est que justement il n'est pas conçu comme un langage de programmation

    Par exemple, on va me dire que Java c'est super génial, et s'est sans doute vrai, mais pour expliquer à un gamin de 10 ans comment faire un Hello World en Java, il faut commencer par lui expliquer ce qu'est un objet, que c'est la méthode truc (suivant le contexte) qui démarre, puis l'évènement machin pour faire telle chose...en PHP tu tapes "Hello World"

    Et les derniers ajouts sur PHP sont douteux car on veux faire d'une brosse à dents un outil professionnel...ce qui n'est pas facile !
    Dans ce cas ça ne concerne pas que PHP, certains diront que PHP est flexible et permet toutes les constructions possibles et imaginables,
    d'autre dirons qu'il permet toutes les horreurs possibles et imaginables.

    Envoyé par doctorrock
    Si le programmeur décide d'écrire des horreurs (en connaissance, ou ignorance de cause) alors oui je suis d'accord : le langage ne l'en empêchera pas
    Un programmeur averti saura tirer vers lui les avantages du langages (et tirer partie de sa puissance), et laissera de côté les inconvénients (les possibilités d'écrire des horreurs).