// BLOG

Elm #1 - Présentation

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).

Rédigé le 08.10.2018
Par Gilles Vauvarin

Elm Programmation fonctionnelle

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:

- Pas de runtime exception, de null ou de undefined.

- Bonne maintenabilité et refactoring aisé.

- Messages d’erreurs à la compilation particulièrement soignés.

- Architecture du code bien pensée.

Elm inclue:

Des fonctions pures.
Cela signifie qu’elles prennent des paramètres en entrée et renvoient un résultat, point. Elles ne peuvent manipuler que les paramètres que vous leurs avez fournies. Les fonctions pures n’affectent pas les valeurs de données extérieures à la fonction.

Des structures de données immuables.
Cela signifie qu’une valeur ne peut pas changer après avoir été créée.

Un typage statique.
Cela signifie que les types des objets manipulés sont connus.

Une interopérabilité avec HTML, CSS et JavaScript.
Cela signifie que Elm fonctionne bien avec l’HTML, le CSS et le JavaScript.

Un virtual DOM.
Cela signifie que Elm travaille avec une abstraction du DOM ce qui le rend plus performant.

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 :

Elm make.
Permet de construire et compiler un projet Elm.

Elm install.
Permet de télécharger et installer des packages du catalogue en ligne Elm.

Elm publish.
Permet de publier des packages sur le catalogue en ligne Elm.

Elm repl.
Permet d’executer des expressions et fonctions Elm dans votre terminal. Une valeur et son type vous sera renvoyé. (Existe aussi en version en ligne: http://elmrepl.cuberoot.in/)

Elm format.
Reformate automatiquement votre code selon les conventions Elm.

Elm reactor.
Créer un serveur de développement Elm en local.

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://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.Conclusion