Innov and Co

Blog

Scala 3, un langage de plus haut niveau sur la machine virtuelle Java

Scala 3, un langage de plus haut niveau sur la machine virtuelle Java

Créé par le LAMP group à l' Ecole Polytechnique Fédérale de Lausane (EPFL), conduit par le professeur Martin Odersky, Scala est un langage de programmation universel conçu pour permettre un code concis et simple. Il est proche de Java avec des emprunts à divers autres langages mais apporte aussi des innovations et des simplification, ce qui fait penser à JavaScript. Cela se traduit par un compilation plus lente.

Il s'inspire de la programmation orienté-objet autant que des langages fonctionnels. Selon les auteurs, le code Scala est de deux à trois fois plus concis que le code équivalent en Java. Mais il est aussi possible d'écrire du code aussi illisible que celui de Perl. Comme Perl d'ailleurs, il permet de faire la même chose de façons très différentes.

Le code peut être compilé en bytecode Java ou .NET et il est compatible avec leurs runtimes respectifs. En février 2015, Scala.js le compilateur en JavaScript est déclaré utilisable en production.

Le mot scala est un raccourci pour SCAlable LAnguage et signifie aussi escalier en italien, ce qui symbolise la programmation par paliers.

Le compilateur scalac est sous licence BSD. Depuis 2014, les principaux développeurs du compilateurs travaillent sur un nouveau langage, Dotty, version simplifiée de Scala, qui doit permettre de supprimer des problèmes difficiles à résoudre pour perfectionner ce compilateur.

Le language de programmation Scala

Le 14 mars 2017, est annoncé Scala Native. (Article en anglais). Il s'agit de remplacer la machine virtuelle Java par LLVM et donc de créer des binaires exécutables. Ce n'est réellement utilisable en production toutefois que si cela s'accompagne d'une bibliothèque suffisante.

Caractéristiques de Scala

Il faut savoir que de nombreux éléments du langage comme par exemple return ou for ne fonctionnent pas comme on en à l'habitude dans les précédents langages.

Syntaxe et constructs:

Fonctionnel: les fonctions sont des valeurs.

Orienté-objet: toutes les valeurs sont des objets.

Statiquement typé.

Les déclarations sont inversées par rapport à C: on donne le nom d'une variable puis on définit son type.

Une fonction est définie par l'opérateur def et l'en-tête est comme en Pascal.

Pas de terminateur tel que ; à la fin des instructions (mais on peut l'ajouter en option).

On définit une classe avec le constructeur en en-tête, ce qui est plus concis. Voir exemples.

Les traits sont des interfaces comme en Java, mais dont les méthodes peuvent être définies ou non. Quand on utilise un trait pour compléter une classe, on doit définir les méthodes qui ne le sont pas. Donc leur action dépend du contexte d'utilisation.

Les actors sont des objets qui fonctionnent en concurrence (en mode synchrone ou asynchrone) et communiquent par messages. On définit un acteur par une liste des messages qu'il peut recevoir. Il peut réagir à un message en envoyant un autre, ainsi un système d'échanges peut être créé.

Pas de break et de continue.

Le type val équivaut à une constante, mais on peut l'initialiser avec une variable.

De nombreuses structures de collections: List, Vector, Set, Map, Seq, Pair, Triple.

Du code XML peut être inclut dans le source, comme le fait le langage Scriptol.

Autres possibilités:

Fonctions anonymes.

Fonctions de premier ordre.

Une fonction peut contenir des fonctions.

Classes génériques.

On définit une case class pour le pattern matching, autrement dit pour sélectionnet une classe parmi d'autres dans une liste selon une condition.

Méthodes polymorphiques. Les arguments peuvent changer de type.

Extensible: une méthode peut être utilisée comme opérateur.

Abstractions.

Fonctions imbriquées.

Expressions régulières définies par du code procédural.

Pourquoi utiliser Scala?

Scala facilite l'évolution progressive des programmes dans le temps.

Le code Scala peut facilement s'interfacer avec du code Java prééxistant. Il est en fait compilé en bytecode Java. On peut donc utiliser les deux langages dans un même programme, Scala offrant notamment l'avantage d'une plus grande concision.

Scala permet de traiter facilement des documents XML.

Le site social Twitter a abandonné le langage Ruby pour le backend et programmé ses services en Scala, cela pour profiter de la nature évolutive du langage. Le site augmente progressivement son audience et offre de nouveaux services avec le temps, d'où le besoin d'un langage qui facilite l'extension des programmes sans les réécrire.

Et pourquoi ne pas utiliser Scala?

Parmi les inconvénients, un temps de compilation très long même pour de petits programmes, la complexité de la syntaxe, une pauvre documentation, passer d'une bibliothèque à l'autre suppose réapprendre le role des opérateurs.

Il faut être spécialiste de Scala pour l'utiliser.

Nous contacter

Nos bureaux sont situés à Paris, Compiègne et Lille.
Notre siège social est situé au 11, avenue du Maréchal Foch 60200 Compiègne

Pour le Service Client : contact@innovandco.net

Pour le Service Ressources Humaines et Sourcing : sourcing_rh@innovandco.net