Suite à la 6ème édition de la conférence ScalaIO  au CPE de Lyon, Lunatech vous détaille ses coups de coeur !

Suite à la 6ème édition de la conférence Scala IO au CPE de Lyon, Lunatech vous détaille ses coups de coeur !

Mardi 29 Octobre

La journée du mardi était entièrement dédiée aux Workshops portant sur divers sujets tel que :

  • Introduction à Spark dans le contexte d’un pipeline
  • Introduction à Tensorflow en Scala
  • Comment construire une application web purement fonctionnelle en Scala avec HTTP4S et ZIO
  • GADTs par cas d’utilisation dans Scala

Ces workshops étaient destinés aux utilisateurs souhaitant s’initier ou se perfectionner dans le langage Scala.

Introduction à Tensorflow en Scala
Xavier Tordoir / Vincent Brule 

Lors de ScalaIO 2019 le workshop sur L’introduction a Tensorflow en Scala s’est déroulé avec succès avec une vingtaines de participants qui ont préalablement préparé l’installation des composants requis sur leur machine, ce qui a permit de gagner du temps et se concentrer sur les différents cas d’utilisations du machine learning en scala.

Mercredi 30 Octobre

Composition by Juxtaposition: A PostScript on Functional Geometry
Einar W. Høst

Une présentation sur des transformations géométriques (translations, rotations …) en programmation fonctionnelle, avec pour objectif de faire des compositions de ces transformations. En se basant sur un article qui générait du postScript à partir d’un code java, la présentation porte sur l’écriture d’un code fonctionnel entièrement en postScript (avec une présentation rapide du langage et du fonctionnement de postScript). Étant une des rares présentations qui ne portait pas sur Scala il s’agissait dès le départ d’un sujet un peu exotique, et postScript est un langage rarement visible en conférence, ce qui rend le sujet intéressant mais probablement peu utile à la majorité des participants.

Une API affinée 18 mois
Damien Gouyette

Un problème récurrent dans de nombreuses API (scala ou REST) est la difficulté de placer des restrictions sur les types en entrée, par exemple qu’une valeur numérique doit être positive. Pour appliquer ces restrictions il est possible d’utiliser l’API Refined qui ajoute la possibilité d’ajouter des prédicats aux valeurs d’entrée, le tout basé sur shapeless.
Il est assez facile d’ajouter des prédicats sur des valeurs existantes, un exemple simple de code est Int Refined Positive (entier qui doit être positif).
Pour une API Rest il est possible de générer automatiquement une documentation du schema JSon (par exemple pour swagger). Les erreurs sont aussi générées automatiquement par Play-json (via une librairie supplémentaire Play-Refined).
Il existe aussi un concurrent nommé tAPIr.

Metals – your next IDE?
Tomasz Godzik 

Metals utilise le Language Server Protocol, un projet open-source qui permet d’alimenter des éditeurs de texte avec des informations utiles d’un IDE (auto complétion, vérification automatique des erreurs…). Ceci permet d’avoir un IDE scala avec un éditeur de texte comme Vim ou Atom, ou même sur éclipse.
Après avoir rapidement présenté l’intérêt de metals une explication du principe de fonctionnement a été donnée. Un serveur composé de trois parties alimente l’IDE : un build tool (sbt ou Mill par exemple), des informations sémantiques tirés d’une compilation à chaud via Bloop, et un compilateur Scala basé sur celui utilisé par le repl/Ammonite.
Ensuite une liste des features déjà disponibles et de celles en cours d’implémentation a été discutée, entre autres le support de Scala 3 ou des worksheets. Il est possible de faire des propositions de features sur le GitHub de metals https://github.com/scalameta/metals . Il est également possible de tester metals via gitpod.

Jeudi 31 Octobre

Un développeur fonctionnel dans le monde du jeu
Fred “Azarty” Cecilia

Ce sujet était un retour d’expérience d’un développeur Scala et java qui s’est retrouvé confronté à la création d’une installation interactive en utilisant Unity 3D. Ce moteur 3D utilise le langage C#, dans une version récente, et théoriquement il est possible de faire de la programmation fonctionnelle avec. En pratique par contre c’est plus compliqué, et c’est le sujet de la première partie de la présentation après une introduction rapide de l’éditeur Unity (interface, ajout d’objets…).
L’immutabilité est présent, mais est limitée (disponible uniquement pour les types primitifs par exemple), les options ne sont pas vraiment disponibles. Il existe une librairie d’extension (la bien nommée langage-ext) qui rajoute de nombreuses options de programmation fonctionnelle, et est dans une certaine mesure un équivalent à Cats ou Scalaz. Les options, les maps, les try sont par exemple ajoutés ou améliorés.
D’autres fonctions bien pratiques en scala existent aussi mais sont un peu douloureuses à utiliser pour un habitué de scala (par exemple les Record, qui sont des équivalents aux case class).
La dernière partie de la présentation d’unity concernait le nouveau système Entity Component System (ECS) ajouté récemment pour exploiter le multi threading plus efficacement, et qui reprend pas mal de caractéristiques de la programmation fonctionnelle.
Enfin, en conclusion, nous avons eu droit à une présentation d’un projet Unity actuel axé apprentissage de la musique.

Les speakers Lunatech ainsi que l’équipe présente sur le stand remercient ScalaIO pour cette édition riche en conférences, workshops, et rencontres.

À l’année prochaine !