Cela fait quelque mois que j’essaie d’apprendre le language scala et aujourd’hui, je souhaite partager mon exppérience et mes retours les différents aspects de la programmation avec scala.
Q’est ce que c’est scala ?
Selon wikipedia:
Scala est un langage de programmation multi-paradigme conçu à l’École polytechnique fédérale de Lausanne (EPFL) pour exprimer les modèles de programmation courants dans une forme concise et élégante. Son nom vient de l’anglais Scalable language qui signifie à peu près « langage adaptable » ou « langage qui peut être mis à l’échelle ». Il peut en effet être vu comme un métalangage.Scala intègre les paradigmes de programmation orientée objet et de programmation fonctionnelle, avec un typage statique. .Il est prévu pour être compilé en bytecode Java (exécutable sur la JVM), ou .Net.
Comme dans mon travail, je ne développe pas avec scala, malheuresement, je me suis dis que ça serait une bonne idée de développer une application à la maison, de préférence web afin d’apprendre ce langage. Donc, j’ai commencé par télécharger la dernière version en date (2.8.1) de scala. C’est en même temps que j’ai connu le framework web lift qui est basé sur scala. Ce dernier était utilisé par foursquare.com (4sq) pour des raison de performance et de sécurité. Donc, je suis parti avec ce framework, et en plus, avec la base de donnée mongodb qui est aussi utilisé par 4sq. D’ailleurs , je souhaite vous en parler aussi dans pas longtemps.
Au début, afin de créer mon environnement de développement, avec les reflexes d’un développeur java, je suis parti à la recherche d’un plugin scala pour eclipse, mais actuellement il est très instable même si récemment la société de Martin Odersky, le cérateur du language Java a prise en charge son développement, aujourd’hui il est déconseillé d’utiliser eclipse pour la programmation avec scala. Après un peu de recherche, je suis tombé sur la version opensource du fameux outil Intellij IDE avec le plugin scala. Je l’utilise depuis presques deux mois, et appart quelques racourcis sympa d’eclipse, rien ne me manque dans Intellij en terme de fonctionnaité, d’assistance au codage.
Après tout, voici la déscription de mon environnement de développement:
- Machine virtuel d’Ubuntu 10.10 desktop dans Windows 7
- Intellij IDE avec le plugin scala qui inclut le support de débuggage
- Scala 2.8.1
- Maven 3.0.x (j’ai essayé sbt mais pour l’instant je continue avec maven)
- JRebel for Scala (payant pour Java, gratuit pour Scala
)
Après mon lancement dans la programmation scala, j’ai appris une chose, qui n’est pas toute nouvelle avec d’autre language comme Ruby, mais peu appliqué dans le domain de Java. Ce sont les REPL ou read-eval-print loop.
Ce genre d’outils permettent de tester, d’évaluer rapidement une expression dans une console. Je dois vous dire que cela m’a changé ma manière de programmer. Par example, pour extraire des données depuis mongodb, j’ai utilisé leur API officiel casbah, et comme ce n’est pas du SQL, mais un DSL scala, pour extraire la donnée, la transformer avec des map, des list, des seq dans scala, ou début j’avais beaucoup de difficulté pour tester ma requête je perdais un peu de temps à chaque fois que je modifier ma requête, même si j’ai utilisé Jrebel. Depuis que j’ai découvert scala console, l’outil de REPL de scala, tout est alllé plus vite.
Il y a plusieurs manière de lancer scala console, mais dans le context de mon projet, afin d’avoir mes classes scala ainsi que les dépendances du projet dans le classpath, je suis passé par maven avec la commande
mvn scala:console
Voici un hello world dans la console scala:

Dans cette console, on peut définir des classes, des fonctions, des traits, céer une connexion à la base de donnée, faire des requêtes et les faire évaluer en temps réel.
Si vous voulez gouter à scala tout de suite sans installer quoi que ce soit, je vois conseille d’aller à cette address où vous pouvez utiliser une console scala depuis votre navigateur avec des exemples très intéressants.
Moi qui est dévenu un fan de la console javascript de chrome, je trouve un réel intéret dans les REPL en générale, et celui de scala marche vraiement bien.