Scala.IO 2018 : aperçu de Scala 3 avec Martin Odersky

/Scala.IO 2018 : aperçu de Scala 3 avec Martin Odersky

Scala.IO 2018 : aperçu de Scala 3 avec Martin Odersky

Artik Consulting a eu le plaisir d’assister à la Scala.IO qui s’est tenue à Lyon entre les 29 et 31 octobre 2018. C’est Martin Odersky (le créateur du langage de programmation Scala) en personne qui a tenu la conférence d’ouverture de l’événement. Il a passé en revue les nouveautés qui seront disponibles dès la sortie de Scala 3. Cette version est une évolution dans la continuité qui vise à assoir les paradigmes originaux et améliorer l’intégration des composants. Les évolutions évoquées ont été naturellement discutées et validées en amont par les contributeurs sur le forum officiel .

Voici la RoadMap présentée lors de la conférence :

Scala 3 embarquera nativement le compilateur Dotty stabilisé pour l’occasion ; l’information est officielle depuis avril 2018. L’objectif de Martin Odersky et de la communauté reste inchangé depuis la première version du langage : tirer le meilleur parti du paradigme fonction – pour la logique – et du paradigme objet – pour la modularité. Scala 3 consolide donc les versions existantes avec des nouveautés regroupées en quatre catégories : cohérence, sécurité, ergonomie et performance. Dans la suite de l’article, nous allons illustrer ces nouveautés avec quelques exemples significatifs.

Cohérence : ajout de paramètres aux traits

Les traits peuvent désormais posséder des paramètres. Ces derniers s’utilisent comme dans une simple class.

Copy to Clipboard

Sécurité : multiversal equality

Scala 2 permettait l’égalité universelle, c’est à dire que les opérateurs == et != permettent de comparer deux valeurs de n’importe quel type. A partir de Scala 3, l’égalité devient « multiverselle ». Ainsi l’opérateur == vérifiera que les variables de part et d’autre sont de même type et de même valeur. Il s’agissait d’une ambiguïté majeure présente depuis les origines du langage.

Ergonomie : énumération

Comme dans de nombreux langages, les énumérations offrent un moyen simple d’exprimer un type avec un ensemble fini et explicite de valeurs. Actuellement, les énumérations sont créées à partir de la classe abstraite scala.Enumeration définie dans la librairie native. L’utilisation est souvent déroutante. Un inconvénient majeur réside dans le fait que toutes les énumérations possèdent le même type. En outre, le compilateur n’effectue pas de vérification d’exhaustivité, ce qui peut conduire à des erreurs scala.MatchError à l’exécution. En substitution des énumérations de nombreux développeurs utilisent des traits scellés.
Il s’agit d’une lacune avérée du langage qui sera corrigée dès la version 3. Cette dernière contiendra le mot clef enum et fonctionnera comme en Java.

Copy to Clipboard

Performance : mot clef opaque

L’alias « opaque » permettra au développeur de créer un type qui existe uniquement à la compilation et se comporte comme un wrapper. Les opérations sur ces types d’encapsuleurs ne créent aucune surcharge supplémentaire au moment de l’exécution, tout en offrant une utilisation sécurisée du type au moment de la compilation. Le ticket SIP (Scala Improvement Process) -35 présente plusieurs cas d’usage. Parmi toutes les fonctionnalités citées lors de la conférence c’est la moins avancée aujourd’hui, aussi bien en terme d’implémentation qu’en terme d’approbation par la communauté. Nous ne connaissons donc pas encore précisément comment le mot clef s’utilisera.

Copy to Clipboard

Décommissionnement : exemple de la fonctionnalité « XML Literals »

En outre, plusieurs fonctionnalités peu utilisées et sources de problèmes récurrents seront définitivement supprimées. La liste exhaustive (contenant à l’heure actuelle treize items) est disponible ici.

Prenons pour exemple le décommissionnement de la fonctionnalité « XML Literals ». Pour rappel, cette dernière permet de créer un élément XML avec la seule ligne ci-dessous.

Copy to Clipboard

Après le décommissionnement, le code précédent ne compilera plus, le compilateur ne parsera le XML qu’après avoir été explicitement signalé (voir ci-dessous).

Copy to Clipboard

Comme d’habitude, cette modification est le fruit d’une décision approuvée par la communauté. Chacun pouvait s’exprimer librement  sur la page dédiée. 94 contributeurs ont discuté ensemble pendant plusieurs mois, aujourd’hui la suggestion est approuvée et la discussion clôturée.

Pour finir

En résumé, la troisième version majeure de Scala s’inscrit dans la continuité des versions précédentes. Elle prévoit d’une part la correction de lacunes identifiées depuis la première version sortie en 2003 et d’autre part l’amélioration de son utilisation grâce à l’ajout de nouvelles fonctionnalités. En parallèle, l’entreprise Lightbend continue de structurer l’offre commerciale autour du langage et l’écosystème Scala poursuit lui aussi son développement. L’avenir semble radieux et les difficultés observées en 2010, notamment le retard de quasiment d’un an de la version 2.8, sont en passe d’être définitivement oubliées.

By | 2018-11-26T22:12:18+00:00 novembre 14th, 2018|Categories: Big Data, Technologie|Tags: , |0 Comments

About the Author:

Leave A Comment

Artik Consulting / Informations de contact

40 Rue d'Oradour-sur-Glane 75015 Paris

Phone: 01 84 06 36 09

Fax: 09 82 63 63 58