un nouveau langage pour Internet ?

On réalise des sites dynamiques en programmant… Avec un langage de programmation donc.

Si, théoriquement, on peut faire des services internet avec n’importe quel langage, en réalité, il existe pas tant que ça de solutions :

  • C# dans .Net : proposé par Microsoft, c’est un très bon langage, avec un environnement de développement pil poil. C’est du propre : compilé, typé… Le problème est que quand on met un doigt là dedans, on en sort « full microsoft » avant d’avoir compris ce qui se passait… Et la facture licence peut faire peur…
  • Java : Solution normalement aussi propre que C#, avec l’avantage d’avoir des outils gratuits… Bon, la réalité est que, bien souvent, les architectures Java sont un peu lourdes, un peu verbeuses… On a rapidement des « délires UML » cher à développer et à maintenir.
  • PHP : LA solution Web par excellence. Langage simple à prendre en main, bien adapté à la production de pages dynamiques. Tout est fait pour faciliter l’écriture de petits programmes… Mais le contexte à bien changé depuis les débuts du langages. Ce langage est en fait utilisé par un nombre incroyablement grand de sites web (30 % ?), et PHP motorise donc des petits sites, mais également quelques monstres (comme Flickr !). Le fait que la plupart des hébergeurs proposent des solutions PHP clés en main accélère la diffusion de ce langage.
  • Autres langages interprétés (Python, Perl, Ruby…) : il existe pas mal d’autres langages, orientés Web. Ruby est par exemple une solution assez puissante pour produire des sites avec peu de ligne de code (ce qui est un critère de qualité : moins de ligne, mois de bug 😉 ).
  • C et C++ : Ce sont des langages bien solides, qui permettent de faire des applications excessivement rapides… Mais finalement, aujourd’hui, peu de monde utilise ces langages pour développer des sites web… Bon, quand même : les éléments clés des algos de Google sont développés en C…

Le PHP joue donc un rôle clé dans le développement du Web aujourd’hui.

Sa flexibilité, la taille de la communauté, la gratuite, … Beaucoup de facteurs ont poussé son développement, et aujourd’hui, la communauté PHP est juste phénoménale.

Mais aujourd’hui, je trouve la situation un peu paradoxale :

Qu’un site qui se lance parte sur PHP, je comprends : coût de développement réduit, pas de frais de licences, …

Mais ces contraintes changent complètement quand un site est plus important. Pour un gros site, la qualité devient un élément fondamental. Il faut donc être certain que le programme va bien produire le résultat attendu. Et pour ça, rien ne vaut un langage compilé, avec un typage stricte.

La solution actuelle consiste à rajouter des couches sur PHP, avec Zend Framework, …

Mais je pense, surtout après ma discussion avec Zeev, que l’avenir passera à moyen terme par l’émergence d’un nouveau langage.

Le cahier des charges est, à mon avis :

  • Langage compilé et typé ;
  • Langage orienté Web : disposer de syntaxes très simple pour produire des pages HTML ;
  • Peut être intégrer dans le langage une solution native pour gérer les sessions (et arrêter de charger la base de données avec des infos qui n’ont rien à y faire) ;
  • Langage objet bien sûr, pour faire de beaux modèles 😉 ;
  • Langage open source et gratuit, parce que c’est la clé de la diffusion sur Internet, et, comme PHP, parfaitement intégré à Apache.

La barrière à l’entrée est assez élevé, parce qu’il y a pas mal de choses sur le marché…

NB : ce billet est un billet de « projection ». A court terme, on peut très bien développer de bons services avec les outils actuels. On remplace les insuffisances de tels ou tels langage par de la méthode et des outils !

13 commentaires

  1. Bonjour François.

    Je ne comprends pas pourquoi .NET ou JEE ne conviennent pas aux exigences de qualité dès qu’on atteint des projets de taille conséquente.

    Autant pour .NET je peux comprendre du fait de son manque d’ouverture mais JEE est désormais ouvert, public (avec des JVM libres), les serveurs d’applications sont pour certains gratuits, avec des solutions émergentes qui permettent également de faire de l’hébergement gratuit (Google App Engine), ce qui permet de réaliser un POC sans investissement massif (comme PHP).

    Le monde Java dispose d’une multitude d’outils et de framework permettant industrialiser la production de code, d’en vérifier la qualité, de réaliser des applications riches…
    Ce qui lui manque peut être pour le e-commerce, c’est une solutions type Magento OpenSource. Il existe à ce jour certaines solutions propriétaires mais rien à ma connaissance dans le monde libre sur ce sujet.

    Par rapport à ton cahier des charges :

    opensource, objet, typé et compilé
    il y a des framework permettant d’avoir des syntaxes simplifiées pour le web (GRails, le nouveau GWT2 qui sort bientôt…)
    en ce qui concerne les sessions, j’ai pas bien compris ton besoin, donc je ne peux dire

    Le JEE est selon moi une solution perenne qui penne à s’imposer sur une échelle plus large car il est forcément plus complexe : mais ceci est cohérent avec ton analyse je pense :
    Soit on a langage très souple et permissif comme PHP, ce qui en fait à la fois sa force et sa faiblesse

    Soit on utilise un langage plus structuré comme Java mais les compétences requises sont plus élevées

    J’espère que initiatives comme Google App Engine permettront de démocratiser cependant cet environnement très riche pour le monde du web grand public.

  2. Très intéressante réflexion. Il ne faut pas oublier non plus que l’adoption d’un langage est liée surtout à sa facilité d’apprentissage et de prise en main. Si le PHP est si répandu, c’est aussi parce qu’il est facile de s’y mettre, et que bon nombre de développeurs web ne connaissent que ca (et je m’inclue dedans :)). Pour que ces développeurs là lachent le PHP et se mettent à apprendre autre chose (que ca soit du JEE ou autre, pourquoi pas du Go tiens), il faut qu’il y ait un réel intérêt à changer, et pour l’instant je ne le vois pas cet intérêt…

  3. @Damien> ça pourrait partir de Java, mais il faudrait peut être revoir JEE pour que ça soit moins verbeux pour développer et probablement simplifier les serveurs d’applications, pour une montée en charge plus performante et plus simple à gérer.

    @David> Oui, tu as raison. C’est pour ça que je penses pas que Java soit la solution : parce que justement, il est pas si facile à prendre en main…

  4. Bonjour François,

    Je ne suis pas non plus d’accord avec toi, notamment sur Java, PHP et Ruby.

    Des trois langages, seul PHP a été conçu dans une optique Web. Il dispose de ce fait de nombreuses facilités pour produire du contenu par HTTP. Ce qui l’a longtemps handicapé, c’est ses nombreuses carences pour implémenter les couches « métier » et « techniques » des applications volumineuses (par exemple l’absence de conception objet ou d’abstraction SGDB, là où Java dispose nativement de JDBC depuis bien longtemps). Aujourd’hui c’est fort bien compensé par des framework comme Symfony ou Zend, pour ne citer qu’eux.

    En ce qui concerne Java, son handicap a été l’inverse. Très bon pour la logique applicative, très facile à debugger, mais l’écriture de Servlets est extrêment laborieuse (doPost() { out.println(«  »); }, cétypa un rien compliqué pour pas grand chose ?)
    Ce fut compensé par l’implémentation dans les serveurs d’applis de JSP, JSF, etc…
    Puis il a fallut faire du lien entre les couches, et là c’est devenu le terrain de jeu de Struts, puis Spring, etc…

    Ruby et Python ne sont « orientés Web » que parceque Ruby on Rails ou Django l’ont bien voulu, sans quoi on en parlerait même pas ici et les deux langages resteraient de « simples » langages de scripting ou d’applications lourdes.

    Concevoir une appli Web complète n’implique pas seulement des facilités à produire du HTML ou du RSS, mais aussi une manière robuste de concevoir les parties métiers des applis et de lier facilement mais sans couplage fort tous les composants d’une application.

    Aujourd’hui Java + Spring, PHP5 + Symfony, Ruby + Rails ou encore Python + Django remplissent ces critères parfaitement.
    Je n’envisage pas l’avènement d’un nouveau langage car selon qu’on préfère souplesse, simplicité ou robustesse les précedemment cités remplissent déjà tous les besoins.

    La conception d’applis Web dignes de ce noms passent aujourd’hui par la qualité des frameworks employé (même si il s’agit d’un framwork maison non cité, le tout est d’en avoir un). Un langage seul ne peut se permettre d’imposer l’utilisation du MVC ou de l’injection de dépendance, c’est bien le rôle du framework de s’acquitter de cette tâche, et de la simplifier au maximum.

    A mon avis, le futur de la conception Web se fera avec les langages que nous connaissont déjà, mais avec des briques logicielles de plus en plus simple et puissantes. L’évolution des langages passera plutôt par l’ajout de fonctionnalité permettant de rendre les couches intermédiaires de plus en plus performantes :
    Il suffit par exemple de constater avec quelle facilité il est possible d’implémenter une injection de dépendance en PHP 5.3 (lire Fabien Potencier, par exemple), alors que cette même injection de dépendance ne saurait à mon sens faire partie intégrante du langage PHP lui même.

    Qu’en pensez-vous ?

  5. FabienM> Très intéressant.

    Effectivement, tu as raison sur le fait qu’on ne peut pas considérer un langage sans le framework associé.
    A ne pas oublier non plus : l’environnement de développement.

    Bref, à écrire un article sur un sujet aussi riche est forcément extrêmement réducteur ;).

    Il n’empêche, je reviens sur mon point clé : je pense que le faible typage et la non compilation sont des obstacles pour faire de PHP le langage du futur.

  6. Salut Francois,

    Je ne suis pas d’accord avec toi en ce qui concerne le développement .NET. Aujourd’hui tu peux développer une application (web ou autre) sans tomber dans le piège du full microsoft.
    Il existe des projets OpenSource tel que Mono.Net qui est un portage du framework .Net sous linux (qui est même utilisé dans certains centre de calcul). Pour ce qui est environement de développement, tu as aussi Sharpdevelop qui n’est peut être pas aussi puissant que Visual Studio mais qui peut largement suffir pour certains types de projets.

    Pour ce qui est des pièges des licences, j’ai été étonné de voir le cout d’une « maintenance » type Red Hat qui après calcul revient au même prix qu’une licence microsoft avec la software assurance. OpenSource ne veut pas dire gratuit 😉

    Cependant, à aujourd’hui, je pense que PHP reste le meilleur langage pour le Web 🙂

    Vincent.

  7. @Vincent> Personne n’est donc d’accord avec moi 😉

    Encore une fois, un billet aussi court sur un sujet aussi vaste, ça fait prendre des raccourcis…

    Sur les solutions alternatives .Net, je ne les connais pas. Elles sont pro ? Avec débugger et tout et tout ?

  8. Vincent>
    Néanmoins les choix technologiques de .Net sont tout de même plus que fortemment liés aux choix de Microsoft et pensés pour son intégration avec Windows.
    Il y a des avantages et des inconvénients à celà, mais dire qu’on peut faire du .Net en esquivant totalement Microsoft me paraît un abus.

    Je te suis par contre quand tu dis que PHP est sans doute le meilleur langage pour le Web, mais uniquement parceque PHP5 a comblé les énormes carences de PHP4 en terme d’architecture.

    François>
    Je n’en suis pas aussi certain que toi au sujet de la compilation, les « accélérateurs PHP » rattrapent plus que sensiblement les performances de PHP vis à vis de ses concurrents et le typage faible est un choix assumé depuis les premières versions. Il est vrai que ce fut un long travail mais aujourd’hui une bonne partie des développeurs PHP sont sensibilisés à la propreté de leur code.
    Il est toutefois vrai de dire que c’est toujours plus facile d’écrire un code immonde en PHP qu’en Java ou ASP.Net 😀

  9. Pour ce qui est de Sharpdevelop, il y a effectivement un debugger et beaucoup de fonctions qui simplifient la vie du développeur. Notamment, l’intégration d’outils OpenSource tel que SVN, NUnit…

    Par contre, en ce qui concerne Mono, je ne connais pas exactement les solutions mais cela m’étonnerai que MonoDevelop ne propose pas de debugger 😉

  10. Je pense que la plupart des professionnels du web sont bien sûr attachés à LAMP, mais aussi agnostiques. Pour ma part, je ne dirait jamais qu’Oracle est mauvais, ca dépend de la taille du projet, et les ressources du client.

  11. @FabienM : il est clair que .Net est fait pour fonctionner avec Windows avant tout. Je voulais surtout indiquer que l’on était pas obligé d’avoir un SI full Microsoft pour déployer un applicatif .NET 🙂

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.