Elm, le langage pour ceux qui n'aiment pas le JavaScript

N’étant pas un fan du JavaScript et de son environnement, j’ai décidé de m’intéresser au langage Elm. C’est un langage qui, comme JavaScript, permet de construire des interfaces utilisateur web interactives et des applications web sur le modèle SPA (Single Page Application).

Je vais utiliser ce blog pour garder une trace de mon apprentissage et des notions de bases que je vais acquérir au cours du temps. Je souhaite également mettre à disposition une ressource d’apprentissage du langage Elm en Français pour ceux que ça intéresse.

Elm, rapide présentation

Elm est un langage créé par Evan Czaplicki en 2012, c’était son sujet de thèse. Il est embauché en 2013 par la société Prézi pour continuer ces travaux et il fonde en 2016 la fondation Elm Software Foundation pour pérénniser le projet et obtenir plus facilement des soutiens financiers.

Elm est un langage fonctionnel qui compile en JavaScript. Dans un langage fonctionnel, tout est fonction et renvoie une valeur.

Les principaux avantagesde Elm sont:

Elm inclue:

Pour installer Elm, vous devrez d’abord installer la dernière version stable de Node.js

https://nodejs.org/fr

https://oncletom.io/node.js/chapter-02/index.html

Vous pourrez ensuite installer Elm via npm

https://guide.elm-lang.org/install.html

npm install create-elm-app -g
create-elm-app my-app
cd my-app/
elm-app start
elm-app build

La version actuelle de Elm est 0.19 (09.10.2018). Attention, beaucoup de livres et tutoriels sont encore écrit pour la version 0.18 et certain aspects du code peuvent être dépréciés. Si le compilateur vous renvoie des erreurs, vérifiez que le code que vous testez (0.18 ?) ne s’appuie pas sur une version antérieure à celle que vous avez installé dans votre environnement (0.19 ?).

Quelques liens pour voir les nouveautés de la version 0.19

http://elm-lang.org/blog/small-assets-without-the-headache

https://github.com/elm/compiler/blob/master/upgrade-docs/0.19.md

https://github.com/elm/compiler/blob/master/upgrade-docs/0.19.md#changes

https://korban.net/posts/elm/2018-08-22-elm-019-whats-new-install-upgrade

Elm est fournie avec un ensemble d’outils qui facilitent la vie du développeur :

Pour plus de détails sur les commandes Elm, tapez dans votre terminal :

elm --help

Vous trouverez sur Github d’autres outils qui pourront vous être utiles.

Vous pouvez également tester Elm en utilisant un environnement Elm en ligne (éditeur, compilateur, rendu avec live reload …), un peu comme Code Pen mais pour Elm :

https://ellie-app.com

Enfin voici quelques ressources en ligne pour vous aidez à vous former à Elm :

En Anglais

https://guide.elm-lang.org

https://elmprogramming.com

http://faq.elm-community.org/

https://github.com/izdi/elm-cheat-shee

https://learnxinyminutes.com/docs/elm

En Français

https://www.elm-tutorial.org/fr/

http://ludovic.coullet.net/elm-/-ep0--introduction/

Conclusion

La nature fonctionnelle de Elm et son compilateur contraint le développeur à suivre un certain nombre de règles dans sa façon de développer. Ces contraintes permettent de générer un code qui bug moins, une bonne maintenabilité et une refactorisation aisée.

Elm étant un langage fonctionnel, la notion d’objet et de langage procédural n’existe pas. C’est peut être ce qui vous perturbera le plus au début mais Elm est un langage fonctionnel simplifié et avec un peu de pratique, vous devriez vite vous habituer et apprécier les avantages de ce langage.

Disclaimer:
Etant un total débutant dans le langage Elm et la programmation fonctionnel, il se peut que des incompréhensions ou des erreurs se soient glissées dans mes explications. Si vous en remarquez, merci de me les signaler pour que je puisse les corriger au plus vite.