Comprendre le web (2/2) : les langages de programmation haut niveau

Vous en savez maintenant plus sur les sites vitrines (cf. l’article Comprendre le web (1/2) : qu’est ce qu’un site Internet? ). Il vous faut maintenant comprendre comment utiliser des données pour permettre aux internautes de remplir un formulaire par exemple. Pour cela plusieurs solutions s’offrent à vous, la plus connue et ancienne étant PHP, la plus à la mode étant Ruby. Nous ne parlerons ici que des langages de programmation haut niveau (à l’opposé des langages bas-niveau comme qui sont plus utilisé dans les logiciels) qui sont donc les plus accessibles.

Php

Le Php est le langage phare des années 2000 sur le web. La force de ce langage est qu’il vous est possible d’insérer des petits bouts de code au sein pages HTML et qu’il est facile à apprendre. C’est un langage qui a fait ses preuve et qui n’est pas mort, loin de là. La plupart des sites clefs en main connus sont basés sur PHP (WordPress pour les blogs, Prestashop pour le e-commerce, Drupal ou Joomla pour les gestionnaire de contenus ou CMS). De ce fait, il y aura toujours un fort besoin de développeurs Php, ne serait-ce que pour développer des modules spécifiques pour ces sites tout fait. Un combo encore très populaire est le fameux LAMP (Système d’exploitation Linux, serveur Apache, base de donnée MySQL, langage Php). La communauté des développeurs Php est très grande.

Comme la plupart des besoins du web sont communs aux différents développeurs, des « framework » se sont développés pour structurer la création du site selon les bonnes pratiques acquises par l’expérience des autres développeurs. Les frameworks sont particulièrement utiles pour les gros sites qui nécessitent une certaine organisation du code. Si la prise en main du Framework peut prendre un certain temps au développeur, la productivité sera décuplée par la suite car toutes les lignes de codes des actions basiques sont déjà présentes dans le Framework. De même, la séparation entre le code qui gère les vues (l’affichage des pages), le « model » (les base de données), et les « controlleurs » (le lien entre les vues et les models) permet de simplifier la séparation du travail entre les développeurs front-end (Javascript, Html, Css) et back-end (Php, Sql). Les plus connus sur Php sont : Symfony, CakePHP ou Zend Framework.

Python

Python est un langage également populaire très utilisé pour faire des script d’automatisation de tâches répétitives. Ce langage est très répandu dans le monde scientifique et universitaire, ce qui lui permet d’avoir des librairies existantes très puissantes, dans de nombreux domaines fondamentaux des sciences (intelligence artificielle, traitement des images ou traitement sémantique, par exemple). Ce langage est sans doute moins utilisé pour le web, même si couplé avec le Framework Django il est assez puissant. Suite à mes discussions avec des entrepreneurs, l’avantage de Python est sans doute la qualité du développeur « moyen », en comparaison à celle des autres langages plus accessibles.

Python a le vent en poupe en 2015 car il est le langage de la Data Science. de plus, il est étudié par défaut dans la plupart des universités.

C#

C# n’est pas un langage de programmation haut niveau au même titre que les autres, mais je le mets ici car il est le successeur d’ASP.net qui était le principal concurrent de Php il y a quelques années. Si vous aimez les produits Microsoft, vous pourrez développer votre site en C# qui permet d’utiliser le même langage à la fois pour le web et vos logiciels. C’est un peu l’équivalent de Java, seulement en plus unifié et sans doute un peu moins complexe (mais moins ouvert). Le Framework de Microsoft est .NET.

Ruby

Ruby est un langage aujourd’hui devenu très populaire car très utilisé dans les startups californiennes comme Python. La raison du succès de Ruby n’est pas forcément ses performances ou la beauté de sa syntaxe, mais sans doute le développement fulgurant du célèbre Framework Ruby on Rails, basé en Ruby. L’avantage de Ruby on Rails est la déconcertante rapidité avec laquelle il est possible de créer une application web avec des formulaires. Une vidéo montre en effet il y a quelques années comment créer un blog depuis 0 en 15 minutes. Or la plupart des sites web reposent sur les formulaires et quelques pages statiques. Rails permet de simplifier la création du formulaire, la validation des données, puis son stockage dans la base de donnée de son choix. Rails est aussi très puissant pour gérer les interactions avec les sites tiers via leurs API, c.-à-d. l’interface fournie par des sites tiers pour accéder à des fonctionnalités qui leur sont propres. Facebook donne par exemple accès à son graph social via des API, Twitter à des fonctions sur le tweets, Google Map à des fonctionnalités de visualisation de cartes, etc. Or c’est à mon sens l’une des révolution du web actuel : il est dorénavant possible de créer des applications très puissantes en quelques heures en utilisant des services payants et gratuits de sites tiers. Il est par exemple possible d’utiliser un moteur de recherche dernier cri, un système d’authentification, Twitter Bootstrap, etc. en quelques lignes de code. Enfin Rails gère bien l’évolution du site, ce qui le rend populaire avec les méthodes de développement dites agiles et les méthodes de création de startups dites de customer development (article de Guilhem Bertholet en français ici) et de lean startup très en vogues à la Valley.

Il faut en revanche se méfier d’une chose, Rails étant facile d’accès, tous les développeurs Ruby ne sont pas d’excellente qualité. De plus, les développeurs Ruby sont très demandés, donc chers.

En savoir plus pour apprendre Ruby on Rails.

Javascript (en backend)

Il est maintenant possible d’utiliser Javascript à la fois en « frontend » (coté client, internaute) et « backend » (côté serveur) grâce à node.js. La principale raison d’utiliser le javascript comme unique langage de programmation est l’extrême simplification des interactions en temps réel avec l’utilisateur sur les différentes plateformes. Au lieu de créer des retour en Ajax (tout ce qui permet d’interagir avec l’internaute sans recharger la page web), les interactions avec l’utilisateur se font naturellement et la mise à jour de la page web est instantanée sur tous les supports notamment grâce aux WebSockets qu’il est très facile d’implémenter en Node. Il est par exemple bien plus complexe de créer un système de chat avec Rails qu’avec node.js. Node.js dispose de plusieurs frameworks qui sont très utiles pour développer des applications web, le plus connu étant Express.js.

Node est ne tourne que sur un seul Thread, mais est non-blocking, ce qui permet tout de même d’avoir des bonnes performances. Attention toutefois à JavaScript. Le langage est complexe et tout n’est pas bon à prendre (lire le livre JavaScript, the Good Parts). De plus, gare au Callback Hell induit par le côté non-blocking…

De plus, de nombreux frameworks frontend se sont développés ces dernières années, les plus connus étant React.js de Facebook et Angular.js de Google. Ces derniers sont indépendant du backend, donc ne dépendent pas de Node en particulier. Cependant, l’on voit de plus en plus de site qui partagent du code pour le frontend et le backend en Javascript, ce qui permet d’écrire le code qu’une seule fois.

Objective-C

Objective-C n’est pas non plus un langage de scripting comme Php ou Python mais je le mets ici car il est indispensable pour écrire une application iPhone, iPad ou pour Mac… Comme de plus en plus d’internautes utilisent les applications et qu’il y a plus d’appareils mobiles dans le monde que d’ordinateurs, il est indispensable aujourd’hui pour tout business d’être présent sur mobile. Pour être présent sur iPhone par exemple, soit vous développez une application en Objective-C, soit vous réalisez un site dit « responsive » qui est visible dans le navigateur web de l’iPhone avec un design optimisé pour téléphone. Le premier cas reste à mon avis à privilégier car l’application native peut marcher hors connexion alors que le site mobile moins… Seulement, vous devrez faire une autre application, en Java cette fois-ci si vous voulez que cette dernière marche sur l’OS Android, et en C#, pour l’OS Microsoft, etc.

Java

Java est l’un des langages les plus populaire pour la réalisation de logiciels (non web) car ces derniers sont portables d’un système d’exploitation à un autre (Linux, Windows, Mac OS, etc.). Java tourne sur une machine virtuelle et est compilé, donc plus rapide que des langages interprétés tels que Ruby ou Php. Java est moins utilisé pour le web sur la partie front-end (on le voit parfois grâce aux Applet ou grâce à GWT qui permet de compiler du java en javascript) mais très utilisé pour les applications sur mobile Android ou en backend pour faire des opérations complexes sur le serveur (par exemple, Twitter a réécrit son moteur de recherche en Java afin d’utiliser la librairie Lucene). Ce langage est fortement structuré, plutôt verbeux, mais extrêmement puissant. Il existe de plus de nombreuses librairies avec du code existant et la communauté des développeurs est très grande notamment dans les services Si des grandes entreprises, même si tous ne sont pas spécialisés en web. Le petit point faible est peut-être la complexité pour faire quelque chose d’aussi simple d’une application web basique.

Java est très utilisé dans les grandes entreprises ainsi que dans les backends du monde de la tech. Le framework Spring et l’utilisation d’annotations et de lambdas (Java 8) permettent d’avoir un code moins verbeux…

Scala et la programmation fonctionnelle

Scala est un langage qui permet de faire efficacement de la programmation fonctionnelle tout en gardant les préceptes de la programmation orientée objet (paradigme omniprésent en C++ et Java). La programmation fonctionnelle est très adaptée pour faire tourner des programmes sur plusieurs processeurs en parallèle, ce qui sera de plus en plus le cas avec l’émergence des processeurs multi-cores et les applications sur le web à fort trafic qui tournent sur plusieurs serveurs en parallèle. Scala est par exemple utilisé chez Twitter ou Linkedin qui ont de fortes problématiques de croissance (500 000 tweets par seconde chez Twitter par exemple en 2013…).

Attention à Scala, le langage est très puissant mais vaste et reste très académique. Vous aurez sans doute beaucoup de mal à recruter ou à former vos équipes…

Les langages fonctionnels les plus connus sont : Erlang, Clojure, Haskell, OCaml, F#, Lisp et Scheme.

Et les autres langages tels que C ou C++ ?

Il existe de nombreux autres langages de programmation qui ne sont pas cités ici. Les plus connus sont C, C++, Perl, ou même le petit nouveau de Google, Go, etc. En revanche, ils sont moins utilisés pour faire des site Internet purs. Si C est par exemple très utilisés par les startups Web pour les opérations critiques ou qui nécessitent une performance optimale (par exemple,  Google utilise beaucoup C et Java, de plus en plus Go, par gain de performance) il est plus compliqué et inutile de faire un site web en C… Néanmoins, avec l’arrivé du Web des objets, ces petits objets connectés à Internet, il y a aura une recrudescence de l’utilisation des langages tels que C pour l’Internet car le C est très proche de l’électronique et permet d’optimiser l’utilisation de la mémoire, de la puissance de calcul et donc de la batterie de ces objets…

Conclusion, comment choisir?

En somme, chaque développeur aura sa préférence pour un langage de programmation et sera affable sur les choix de ses préférences. En tant que chef d’entreprises / de projet, n’écoutez pas tout ce que l’on vous dit et choisissez la solution la plus adaptée à vos besoins. Si vous n’avez pas de développeurs, je vous conseille de prendre une solution toute prête de type WordPress, Joomla ou Prestashop (j’y reviendrai dans un futur article). Vous n’aurez alors pas le choix de l’architecture et du langage (sans doute Php et MySQL). C’est la solution à utiliser pour la très grande majorité des sites (e-commerce, blogs, sites vitrines, etc.)

Si votre site demande plus de complexité, je vous invite à trouver un bon développeur et à faire le choix avec lui… Pour le frontend, vous ne pourrez vous passer de JavaScript. Pour le backend, le choix est beaucoup plus vaste et tout dépendra de vos besoins!

Comprendre le web (2/2) : les langages de programmation haut niveau

3 réflexions au sujet de « Comprendre le web (2/2) : les langages de programmation haut niveau »

  1. Son plaisir de comprendre geekmeup.fr . Les articles ci-dessus est assez extraordinaire, et j’ai vraiment apprécié la lecture de votre blog et des points que vous avez exprimées . J’aime vraiment à apparaître en arrière sur une base régulière , poster un plus grand nombre dans le sujet. Merci pour le partage … continuez à écrire ! ce qui concerne

    1. admin dit :

      Merci pour votre message de soutien. Je continuerai à écrire d’autres articles régulièrement (un ou deux par semaines) et je m’efforcerai aussi à mettre à jour les articles existants…

  2. RaphTal dit :

    A quelqu’un qui souhaite débuter from scratch (avec un bon esprit geek 😉 ) je recommande sans hésitation node.js + express (le framework qui va bien)

    Certes un peu plus compliqué au démarrage, mais je suis convaincu que c’est l’avenir dans le sens où c’est le seule langage qui permette d’avoir des sites web comparables à des logiciels.

    1) Partage du code entre serveur et client
    2) Intégration des API d’autres sites ultra facile (json, anyone ?)
    3) Vitesse d’exécution inégalée (pas la lourdeur d’un framework comme RoR ou symfony2)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *