Code-Garage #9 - Comprendre le Web Assembly

Durée: 4m29s

Date de sortie: 17/01/2022

L'assembleur ça vous fait peur ? Oui mais le web assembly ça n'a rien à voir !

Notes de l'épisode :

Salut et bienvenue dans ce nouvel épisode de Codes Garage.
Je m'appelle Nicolas Brondin-Bernard et aujourd'hui on va parler d'un nouveau sujet qui s'appelle le WebAssembly.
On sait communément que les navigateurs web
peuvent interpréter qu'un seul langage de programmation qui est le JavaScript.
Il peut interpréter d'autres langages comme l'HTML CSS mais qui ne sont pas
réellement des langages de programmation au sens strict du terme,
mais ils peuvent interpréter du JavaScript.
C'est ce qu'on disait avant parce que maintenant on a un moyen d'exécuter du code écrit en C,
en C++, en Python, en C-sharp directement dans le navigateur.
Et tout ça c'est possible grâce à une techno qu'on appelle le WebAssembly.
Donc qu'est-ce que c'est exactement le WebAssembly ?
Alors on parle aussi des fois de wasm, WASM, c'est la même chose et c'est un format de bytecode
qui est spécialement fait pour être chargé, compilé et exécuté d'un navigateur.
Un bytecode c'est un langage intermédiaire entre un code qui n'est pas compilé du tout,
qui est écrit par le développeur, et un code machine,
un code qui est directement exécutable par la machine.
Le principe de WebAssembly c'est de prendre un code qui est écrit avec un langage bas niveau en entrée
pour le compiler en un bytecode qui sera chargé dans le navigateur
et surtout avec une interface disponible pour que le JavaScript et le code natif puissent communiquer facilement.
Évidemment quand on parle d'interface c'est au sens développement logiciel du terme mais pas interface graphique.
Une fois que le bytecode est chargé, il va être compilé en langage machine
et exécuté dans une sandbox spécialisée du navigateur Web.
Donc vous avez compris, le principal intérêt du WebAssembly
c'est dans sa vitesse d'exécution
parce qu'en gros maintenant on est capable d'apporter la rapidité d'exécution des langages bas niveau
directement dans une application Web.
Dans certains cas on arrive à des gains de performance qui sont jusqu'à 16 fois
meilleurs que la vitesse d'exécution du même code écrit en JavaScript.
Donc pour ceux que ça intéresse, il y a un benchmark détaillé des performances
entre JavaScript et WebAssembly, je vous le mettrai dans les notes de l'épisode.
Alors à quoi ça sert exactement le WebAssembly outre écrit du code rapide ?
C'est vrai, la vitesse d'exécution et l'optimisation mémoire
qui ça permet, on peut faire passer des applications Web
déjà très puissantes à un stade supérieur.
On est capable de développer des jeux de plus en plus complexes qui tournent dans le navigateur
par exemple Unity qui exportent la version navigateur de ces jeux en WebAssembly.
Mais on a aussi l'exemple de Figma qui est un outil de design directement dans le navigateur
qui est très puissant et qui est un des leaders sur le marché en ce moment
qui est écrit en C++ et compilé en WebAssembly.
Mais on peut aussi faire du age computing, c'est-à-dire en gros de soulager les serveurs
en effectuant certains calculs plus lourds sur la machine du client.
C'est le cas par exemple avec certains hébergers d'images
qui effectuent la compression des images uploadées directement dans le navigateur
avant les envoyer sur le serveur.
Et avec WebAssembly, on peut même faire la compression vidéo directement dans le navigateur.
Donc ça c'est effectivement une part de la réponse
mais ça permet aussi de ramener des logiciels qui ont déjà été écrits
qui existent depuis des années et qui ont des années d'expérience
et de contribution, des logiciels open source, etc.
de les faire passer du mode logiciel desktop à logiciels Web
ou en tout cas intégrés directement dans du Web.
Donc ça c'est une de force aussi de WebAssembly.
Pour ceux que ça intéresse de vraiment découvrir WebAssembly et de tester surtout,
je vais vous mettre dans les notes de l'épisode tout simplement des liens
pour vers la documentation mais aussi pour arriver à compiler son premier script CC++
vers un module wasm et l'intégrer directement dans une page.
J'espère que cet épisode vous aura plu, vous auraient été utiles et que vous aurez appris des choses
et moi je vous dis à très vite pour un prochain épisode. Salut !

Les infos glanées

Je suis une fonctionnalité encore en dévelopement

Signaler une erreur

Code-Garage

Découvrons ensemble des sujets passionnants autour du métier de dev et de la programmation en général !
Tags
Card title

Lien du podcast

[{'term': 'Technology', 'label': None, 'scheme': 'http://www.itunes.com/'}]

Go somewhere