Dans un marché des outils de programmation largement dominé par Python et Java, des langages informatiques plus ou moins nouveaux et novateurs sont mis en compétition dans les années 2000. Parmi les premiers à entrer dans la concurrence, le langage Scala est ainsi créé en 2003 (rendu public en 2004).
Scala a été conçu pour donner lieu à un nouveau langage intégrant programmation fonctionnelle et orienté objet, mais avec une caractéristique plus flexible que les autres langages. Ses concepteurs ont aussi voulu un outil robuste, évolutif, plus facile et plus rapide que Java. Au résultat, Scala fait aujourd’hui partie des 10 langages de programmation les plus courants.
Origine de Scala
Scala est issu du travail de développeurs suisses ayant voulu créer une alternative à Java, celui-ci étant jugé notablement lent par la plupart des programmeurs. L’équipe en charge de son développement est montée et conduite par Martin Odersky, professeur de méthodes de programmation à l’École polytechnique fédérale de Lausanne (EPFL). Scala est la contraction de « scalable », terme anglais qui veut dire « évolutif » ou « extensible », et du mot langage. Ses concepteurs l’ont appelé ainsi en lui donnant un caractère extensif, une syntaxe concise, et la propriété d’être utilisable à toute échelle, en allant des simples scripts aux systèmes les plus larges.
De manière générale, le langage Scala est un programme fonctionnel. Sa conception s’inspire d’autres langages qui proposent un grand nombre de concepts de programmation. Ses programmes précurseurs sont des langages de programmation fonctionnels comme Lisp ou encore Haskell, mais aussi Pizza. Celui-ci est également l’œuvre de l’équipe Martin Odersky. Son développement a été abandonné en 2002. Compilé en bytecodes Java, Pizza est aussi un programme test au mélange de paradigmes.
Open source et généraliste, ce langage de programmation à paradigme fonctionnel et orienté objet est aujourd’hui un des piliers des systèmes informatiques modernes. De nombreuses entreprises se sont mises à baser certaines de leurs applications sur Scala. On peut citer la plateforme de réseau social de Twitter codée en Scala, ou encore celle de Netflix, LinkedIn et le journal londonien The Guardian. Une bonne liste de frameworks est également écrite en Scala, pour ne mentionner que le fameux Apache Spark très utilisé dans les data analytics, etc. En fait, c’est un des langages de programmation les plus utilisés en data science.
La popularité du langage Scala ne cesse de se développer, rendant son apprentissage et sa maîtrise encore plus indispensables. Mais en quoi consiste le langage de programmation Scala ?
Les particularités du langage Scala
Le caractère singulier de Scala provient de la combinaison dans un seul langage de différents concepts de programmation qui, pris individuellement, sont conventionnels pour la plupart. À noter par exemple qu’il possède un codage très semblable à celui de Java, et qu’on peut lui intégrer un bon panel de bibliothèques Java. On peut décrire 3 de ses grands concepts.
Caractère évolutif de Scala
Le terme anglais « scalable » qu’on traduit facilement par « extensible » désigne un aspect différenciant de Scala : sa propriété à pouvoir être étendue selon les besoins des développeurs. A la base, il s’agit de transférer les éléments non indispensables au fonctionnement du nouveau langage dans des bibliothèques, puis de permettre aux utilisateurs de faire appel à ces bibliothèques seulement dans l’idée d’utiliser les fonctions de base de Scala. Autrement dit, les programmes écrits en Scala n’embarquent que ce qui leur est indispensable.
Par exemple, pour prendre en charge des nombres réels d’une taille supérieure à 2^32 (à quasiment infinis), Java utilise la classe BigInteger tandis que Python met en œuvre un système natif. Cela donne toujours lieu à plusieurs opérations pour chaque entier, et donc une utilisation plus intensive du processeur. Avec Scala, le programmeur va gérer les entiers de la même manière, quel que soit son choix de mode de gestion des nombres. Cette extensibilité de Scala fait donc profiter d’un avantage double : l’allègement de sa syntaxe et l’écriture de programmes moins lourds.
Conception multi paradigme
Scala présente 3 paradigmes en tout, à commencer par la programmation orientée objet qui est la plus courante chez les programmeurs, mais aussi très largement implémentée dans les entreprises. Ce langage hérite notamment de tous les principes à la base du paradigme objet du langage Java : généricité, polymorphisme, ainsi de suite.
Ses deux autres paradigmes de programmation sont :
- la programmation impérative : écriture d’une séquence de tâches (étape par étape) que le système va exécuter. En cours d’exécution, certaines variables peuvent changer d’état (mutation). C’est un paradigme largement implémenté dans l’industrie.
- la programmation fonctionnelle est l’opposé du langage impératif : c’est un paradigme du type déclaratif mettant en avant l’application des fonctions.
Compatibilité avancée avec Java
La conception Scala répond à un besoin commun de développer un langage de programmation compatible avec différents systèmes d’exploitation et d’architectures. Ses créateurs ont donc fait en sorte de convertir les programmes Scala en bytecodes (Java) et de les rendre exécutables sur la JVM (java virtual machine). Autrement dit, le code Scala pourra s’exécuter dans tout système ou architecture qui utilise une machine virtuelle Java, sans qu’il n’y ait besoin de réécrire ou d’adapter des bibliothèques Java. Du codage Java peut être mis en route à tout moment depuis un programme écrit en Scala.
Langage Scala : mode d’utilisation
Les développeurs peuvent écrire en langage Scala de trois manières différentes : compilée, interprétée ou en script.
Le mode « compilé »
Scala dispose d’un véritable écosystème exécutable, pour ne citer que le compilateur officiel « scalac » qui compile les fichiers Scala (fichiers .scala) pour les convertir en fichiers «.class». Dans ce processus, chaque fichier obtient le bytecode d’une classe. A noter que Scala peut intégrer d’autres compilateurs que l’on recommande de n’utiliser que si le compilateur officiel est insuffisant.
Le mode interprété
On peut utiliser Scala à travers un interpréteur (mis en route par le lancement du binaire « scala sans option »). Ce programme exécute simultanément les instructions, tout en affichant la valeur éventuellement retournée par l’instruction entrée.
Écriture sous forme de script
Il s’agit d’un mode d’utilisation convivial, se résumant au placement du code Scala dans un fichier texte, dont le nom passera en argument au binaire scala. Ce même binaire va lui-même compiler puis lancer l’exécution du programme.
Évolution et application du langage Scala
Deux grandes organisations contribuent et sont aujourd’hui toujours à pied d’œuvre dans son évolution, à savoir l’entreprise Lightbend qui propose un large panel de bibliothèques Scala pour une transition douce depuis Java, et la communauté open source Typelevel qui met en avant de nombreuses bibliothèques essentiellement basées sur la programmation fonctionnelle.
On attribue un bon nombre d’avantages à Scala : sa polyvalence, ses fonctionnalités puissantes comme le pattern matching, la concision de la syntaxe de Scala avec un nombre réduit de lignes de code, la multiplicité de ses outils, etc. Il n’est pas non plus nécessaire d’avoir une machine puissante pour le manipuler. Pour tout cela, Scala est parfois préféré à Java et Python. Il trouve son terrain d’application dans presque tous les domaines de l’industrie et du business. Parmi les exemples les plus courants dans l’utilisation de Scama, on peut citer le développement d’applications Android et des logiciels bureautiques, la data science, les applications de streaming, ainsi de suite.
Vous souhaitez vous former au Big Data ? Retrouvez les formations Data Full Stack et Data Analyst qui vous forment aux métiers de Data Analyst, Data Scientist, Data Engineer et AI Scientist.
Merci pour votre lecture ! Si vous souhaitez lire nos prochains articles autour de la Data et de l’IA, vous pouvez nous suivre sur Facebook, LinkedIn et Twitter pour être notifié lorsqu’un nouvel article est publié !