Node.js vous connaissez ?
Node.js est un langage de programmation relativement récent dans le panorama des outils à disposition des codeurs, il connait pourtant un un gros boom sur ces dernières années notamment avec l’explosion de la demande pour les applications web mobiles.
L’occasion pour moi de vous présenter ce langage encore relativement peu connu et répandu et vous dire ce que j’en pense, quel est son intérêt et pourquoi cela peut-être une bonne idée d’apprendre à coder en Node.JS
Sommaire
Qu’est ce que Node.JS ?
Premièrement, le JS à la fin de node.JS vous dit peut-être déjà quelque chose si vous êtes déjà familier avec le monde merveilleux (ou devrais-je plutôt dire la jungle…) des langages web.
En effet, le JS de node.JS renvoie bien au javascript que nous connaissons tous, un langage apparu avec la généralisation du web dans les années 90 et permettant déjà à l’époque de conditionner l’affichage selon le contexte ou les actions utilisateurs.
Par exemple, javascript est ce qui permet d’afficher du contenu au survol d’un bouton, d’ouvrir une fenêtre ou encore d’intégrer un lecteur audio et ses boutons (play, pause, suivant, précédent…) à une page web.
Oui mais voilà, jusque là Javascript bien que parfaitement indispensable avait plutôt la réputation d’être un langage « gadget » comparé aux autres langages web comme le HTML, le CSS ou surtout le PHP.
Le node.JS est apparu suite à la volonté de google d’aller plus loin et de mieux exploiter un langage au potentiel important, avec notamment la création du moteur d’exécution V8 au sein de google chrome, le navigateur de google.
Ce moteur d’exécution a totalement changé la donne en terme d’exploitation du javascript en le rendant beaucoup plus rapide à executer et ouvrant donc la voie à une utilisation plus poussée.
C’est alors que Node.JS est créé afin d’exploiter pleinement ce potentiel en donnant aux développeurs une boite à outils suffisamment étoffée et conséquente pour tirer partie de ce nouveau moteur d’exécution V8 (c’est bien connu, les V8 ça fait rêver…)
A la fois opensource et complémentaire des autres langages de programmation dérivés de Javascript comme Jquery par exemple, Node.js
Pourquoi apprendre à coder en node.JS ?
Voilà pour la partie historique, voyons maintenant pourquoi un développeur voulant créer des applications web a intérêt à apprendre à coder en node.JS
Node.js est très porteur sur le marché du travail
Avant tout, sachez qu’il y a une sorte de pénurie dans le monde du web : beaucoup de demande de la part de clients voulant développer en Node.JS et au final peu de développeurs pour répondre à la demande.
Quoi de plus logique avec une plateforme de programmation libre apparue en 2009 quand on connait le temps qu’il faut pour les écoles pour former et mettre sur le marché des développeurs qualifiés…
Conséquence immédiate de ce rapport déséquilibré entre l’offre restreinte et la demande forte : les développeurs Node.js s’arrachent et ont le luxe de choisir leurs missions, leurs projets et bénéficient de conditions financières avantageuses.
Node.JS : un langage bas niveau
Bas niveau ici ne veut en aucun cas dire « au rabais » ou « mauvais langage » bien au contraire !
En programmation, un langage dit de « bas niveau » indique que celui-ci est proche du langage interne de l’ordinateur sur lequel il s’exécute.
Vous le savez, la « langue maternelle » d’un ordinateur c’est le langage binaire ou encore le langage machine : 011100…01..11…1111 qui a l’avantage de pouvoir s’exécuter nativement mais qui est avouons-le peu facile à lire pour un humain.
Voici par exemple l’équivalent en code binaire de l’URL du blog : hifipcguide.com
01101000 01101001 01100110 01101001 01110000 01100011 01100111 01110101 01101001 01100100 01100101 00101110 01100011 01101111 01101101
Plus le langage est dit de haut niveau, plus il est naturel et facile à écrire pour un humain, mais plus il est long à exécuter pour une machine.
Node.JS offre l’avantage d’un langage très simple d’un point de vue syntaxe mais qui grâce au moteur V8 dont nous avons parlé plus haut, permet une exécution bas niveau ce qui le rend hyper rapide à s’exécuter.
Un langage rapide à exécuter ce sont des applications plus réactives et faciles à utiliser, fluides et permettant de faire plus de choses : bref, que du positif.
Il s’exécute coté serveur et coté client !
Autre avantage du node.js comparé au javascript standard est sa capacité à être exécuté coté serveur.
Cela veut concrètement dire que d’une façon similaire à PHP par exemple, les instructions sont exécutées non pas sur le device client qui visite le site ou l’application mais sur la machine qui héberge cette application.
L’avantage d’un système combinant à la fois l’exécution coté client (déjà le cas du javascript) mais aussi coté serveur est qu’il peut tout faire tout seul comme un grand, alors que sinon vous seriez obligé de faire appel à deux langages différents, comme php & javascript.
Plus besoin d’avoir deux développeurs différents ou de devoir apprendre deux langages, node.js vous permet à la fois de générer des pages web et de gérer les actions des utilisateurs.
Cette polyvalence le rend particulièrement utile pour les SPA (Single Page Applications) ou RTA (Real Time Application) qui sont très répandues aujourd’hui dans le monde des applications web mobile.
Nodejs permet les instructions non bloquantes
Indispensable diront certains (pourtant javascript ne l’est pas) et on comprend facilement pourquoi paralléliser les actions est important pour gagner du temps d’exécution.
Car c’est de ça dont il s’agit ici : la possibilité qu’offre node.js en terme d’instructions non bloquantes permet en fait de paralléliser les traitements et non d’attendre la fin d’exécution d’une action pour enchaîner sur la prochaine.
Pour faire une analogie avec la cuisine, c’est comme si pour préparer disons… des pâtes bolognaises, vous aviez d’un coté quelqu’un qui :
- Fait bouillir de l’eau
- Met les pâtes à cuire
- Une fois cuite, il les égoutte
- Puis découpe les légumes
- Puis cuit les légumes
- Puis cuit la viande
- Puis mélange le tout et vous le sert (froid donc)
Et de l’autre quelqu’un qui :
- Met de l’eau à bouillir et pendant ce temps là découpe les légumes
- Met les pâtes, légumes la viande à cuire en même temps
- Vous sert le tout (chaud) et synchronisé
On comprend aisément que le fait d’utiliser les temps d’attente d’une action (un téléchargement par exemple) pour charger d’autres composants ou exécuter des calculs permet des gains de temps énormes, et c’est ce que permet node.js comparé à Javascript par exemple.
Cette propriété vient s’ajouter au fait que le moteur Javascript V8 de google permet des exécutions bas niveau et donc offrir des performances et une expérience utilisateur de tout premier ordre.
Mais ce n’est pas tout, Node.js permet encore plein d’autres choses que je n’ai pu détailler dans cet article qui reste consacré aux débutants ou à ceux qui découvrent ce framework.
N’hésitez pas à vous renseigner sur le sujet et à ajouter node.js à vos compétences en programmation !