Comprendre les bases du langage Scala et ses paradigmes (orienté objet et fonctionnel).
Apprendre à manipuler les collections et travailler avec des données en Scala.
Découvrir les bibliothèques et frameworks Scala pour le Big Data (Spark, Akka, etc.).
Appliquer Scala dans des projets de fouille de données et d’analyse de grandes quantités de données.
Public cible
Étudiants ou professionnels ayant des bases en programmation et un intérêt pour le Big Data ou la fouille de données. Des connaissances préalables en Python/Java et sur les concepts de Big Data (Hadoop, Spark, etc.) seraient un plus.
Modules
Introduction à Scala
Introduction
Histoire et contexte de Scala
Scala (acronyme de Scalable Language) est un langage de programmation créé en 2003 par Martin Odersky à l'École polytechnique fédérale de Lausanne (EPFL).
Inspiré par Java, Scala s'exécute sur la JVM (Java Virtual Machine).
Fusionne programmation orientée objet et programmation fonctionnelle.
Particulièrement apprécié dans les domaines du Big Data et de l’ingénierie logicielle avancée.
Caractéristiques principales
Syntaxe concise et expressive.
Interopérabilité complète avec Java.
Support des concepts avancés comme l’immutabilité, les fonctions pures, et les collections immuables.
Avantages de Scala pour le Big Data
Scala est largement utilisé pour le Big Data en raison de ses fonctionnalités avancées :
Compatibilité Spark : Scala est le langage natif d'Apache Spark, l'un des frameworks Big Data les plus populaires.
Performance : Grâce à la JVM, Scala combine vitesse et robustesse.
Écosystème riche : Accès aux bibliothèques Java et Scala pour des tâches complexes comme la gestion de données, la parallélisation, ou l’analyse.
🧪 Mini-lab Scala : Les bases et la data
Objectif : Découvrir les bases de Scala à travers des exemples pratiques, puis manipuler une petite liste de données comme un Data Scientist !
Variables et types
val nom = "Alice" // immutable
var age = 30 // mutable
println(s"Bonjour $nom, tu as $age ans.")
Collections et opérations
val notes = List(12, 15, 17, 8, 13)
val moyenne = notes.sum.toDouble / notes.length
val notesSup12 = notes.filter(_ > 12)
println(s"Moyenne : $moyenne, Notes > 12 : $notesSup12")
Fonctions et map/filter
def maj(x: Int): Int = x + 1
val notesMaj = notes.map(maj)
println(notesMaj)
Case class et pattern matching
case class Etudiant(nom: String, note: Int)
val etudiants = List(Etudiant("Alice", 15), Etudiant("Bob", 10))
for (e <- etudiants) e match {
case Etudiant(n, note) if note >= 12 => println(s"$n a la moyenne")
case Etudiant(n, note) => println(s"$n n'a pas la moyenne")
}
Mini-analyse de données
val ventes = List(
("stylo", 10, 1.5),
("cahier", 5, 2.0),
("stylo", 7, 1.5),
("livre", 3, 10.0)
)
val totalParProduit = ventes.groupBy(_._1).map {
case (produit, items) =>
val total = items.map { case (_, qte, prix) => qte * prix }.sum
(produit, total)
}
println(totalParProduit)
Tu viens de manipuler des listes, des fonctions, des classes et de faire une mini-analyse comme un pro du Big Data !
Outils, Installation et configuration (Scala REPL, sbt, IntelliJ IDEA)
Outils nécessaires
Pour commencer avec Scala, il faut avoir les outils suivants :
Coursier
Coursier est un gestionnaire de paquets et de dépendances pour l’écosystème Scala et Java. Il simplifie l'installation des outils nécessaires pour travailler avec Scala et permet de gérer les dépendances d'un projet de manière rapide et efficace.
Principales fonctionnalités de Coursier
Installation d'outils Scala
Permet d’installer Scala, sbt, et d'autres outils comme ammonite et bloop.
Remplace ou complète des outils comme SDKMAN ou les installateurs manuels.
Gestion des dépendances
Télécharge rapidement les bibliothèques nécessaires pour un projet Scala ou Java depuis Maven Central, Ivy, ou d’autres dépôts.
Résout les conflits entre versions de dépendances.
Exécution d'applications
Peut exécuter directement des applications Scala ou Java depuis les dépôts Maven (par exemple, un exécutable JAR).
Multi-plateforme : Fonctionne sur Windows, macOS, et Linux.
Pourquoi utiliser Coursier ?
Rapidité : Téléchargement et résolution des dépendances plus rapides que les outils traditionnels.
Légèreté : Conçu pour être léger et efficace.
Interopérabilité : Compatible avec des projets Java et Scala.
Praticité : Offre une interface simple pour installer et gérer plusieurs versions de Scala ou d’autres outils.
Le REPL (Read-Eval-Print Loop) est un environnement interactif qui permet d’écrire et d’exécuter des morceaux de code de manière immédiate.
Le REPL est souvent décrit comme une "calculette pour le code", offrant une manière simple et interactive d’expérimenter un langage de programmation.
L'acronyme décrit les étapes de son fonctionnement :
Read : Le REPL lit une commande ou une expression entrée par l’utilisateur.
Eval : Il évalue (exécute) cette commande ou expression.
Print : Il affiche le résultat de l’évaluation.
Loop : Il revient au début pour attendre une nouvelle commande ou expression.
C’est un outil précieux pour les développeurs, en particulier pour tester rapidement des idées, expérimenter du code, ou encore pour apprendre un langage de programmation.
Caractéristiques principales du REPL
Interactivité : Permet de tester du code ligne par ligne sans avoir à écrire un programme complet.
Rapidité : Idéal pour valider de petites portions de code ou pour déboguer.
Flexibilité : Très utile pour les débutants ou pour découvrir les fonctionnalités d’un langage.
Le REPL dans Scala
Scala dispose de son propre REPL. Il est accessible en ligne de commande après l’installation de Scala.
Lancer le REPL Scala
Ouvrez un terminal.
Tapez la commande :
scala
Nous allons voir apparaître un environnement interactif comme ceci :
Welcome to Scala 2.13.x (OpenJDK 64-Bit Server VM, Java 11).
Type in expressions for evaluation. Or try :help.
Nous pouvons alors saisir des expressions Scala :
println("Hello, Scala!")
val x = 42
println(x * 2)
Commandes utiles dans le REPL Scala
:help
: Affiche les commandes disponibles.
:quit
: Quitte le REPL.
:load filename.scala
: Charge un fichier Scala et exécute son contenu.
:reset
: Réinitialise l’état du REPL (supprime les variables et définitions).
Applications pratiques du REPL
Apprentissage : Parfait pour les débutants pour essayer et comprendre les concepts de base.
Prototypage rapide : Tester des fonctions, des algorithmes ou des idées avant de les intégrer dans un projet.
Exploration des APIs : Permet de découvrir et tester les bibliothèques et fonctions d’un langage.
Giter8: .g8
Qu'est-ce que Giter8 ?
Giter8 est un outil qui permet de générer des projets basés sur des modèles prédéfinis. Ces modèles incluent des fichiers et des configurations nécessaires pour commencer rapidement un projet Scala, sbt, ou autre.
Pourquoi utiliser .g8 ?
Automatisation : Facilite la création rapide de projets avec une structure standard.
Personnalisation : Les fichiers peuvent inclure des variables dynamiques pour personnaliser des éléments comme le nom du projet, la version Scala, etc.
Standardisation : Garantit que tous les projets respectent une structure cohérente.
Exemple avec sbt et Giter8
Quand vous utilisez la commande suivante :
sbt new scala/hello-world.g8
Voici ce qui se passe :
scala/hello-world.g8 est un modèle de projet hébergé sur GitHub (par exemple, dans un dépôt https://github.com/scala/hello-world.g8).
sbt utilise Giter8 pour cloner ce modèle et l’appliquer localement.
Le projet généré contient déjà une structure avec des fichiers comme build.sbt, src/main/scala/Main.scala, etc., prêts à l’emploi.
Fichiers typiques dans un projet Giter8
Un projet .g8 contient généralement :
Des fichiers modèles pour le code et la configuration (par exemple, build.sbt, Main.scala).
Un fichier default.properties pour définir des variables (nom du projet, organisation, version).
Des scripts pour personnaliser le processus de génération.
Avantages pour Scala
Possibilité de démarrer avec une base solide sans perdre de temps à configurer manuellement votre projet.
Idéal pour les débutants et les équipes souhaitant utiliser une structure homogène.
Pour en savoir plus sur Giter8, consultez la documentation officielle.
sbt (Simple Build Tool) : Outil de gestion des projets Scala.
IDE : IntelliJ IDEA (recommandé) ou Visual Studio Code avec le plugin Metals.
Étapes d'installation
Installation de Scala
Téléchargez et installez Scala via le gestionnaire de versions Coursier par exemple.
Vérifiez l'installation
scala -version
Installation de sbt
Téléchargez sbt à partir du site officiel.
Vérifiez l'installation :
sbt about
Installation d’IntelliJ IDEA
Téléchargez IntelliJ IDEA Community Edition : IntelliJ IDEA.
Installez le plugin Scala :
Ouvrez IntelliJ IDEA.
Allez dans File > Settings > Plugins.
Recherchez Scala et installez-le.
Premiers pas avec Scala
Lancement du REPL Scala
Le REPL (Read-Eval-Print Loop) permet d’exécuter du code interactivement.
Ouvrez un terminal.
Lancez le REPL avec :
scala
Essayez quelques commandes simples :
println("Bonjour Scala!")
val x = 10
val y = 20
println(s"La somme de x et y est : ${x + y}")
Bases du langage
Syntaxe de base.
Types de données, variables et constantes.
Entrées et sorties (lecture de fichiers simples).
Paradigmes de programmation
Programmation orientée objet en Scala (classes, objets, traits).
Environnement de développement Scala : IntelliJ IDEA (Community ou Ultimate Edition) ou Visual Studio Code avec le plugin Metals.
Accès à un cluster Spark ou configuration locale avec Hadoop/Spark.
Jeux de données réels : Kaggle, UCI Machine Learning Repository, etc.
Documentation officielle de Scala, Spark, et bibliothèques associées.
Méthodes pédagogiques
Cours théorique : concepts clés et exemples pratiques.
TP/TD : exercices réguliers pour manipuler Scala et Spark.
Projets pratiques : application des connaissances dans des cas concrets.
Évaluation : quizz, exercices notés et présentation de projet final.
Publié le 25/09/2026
🍪 Gestion des Cookies
Nous utilisons des cookies pour améliorer votre expérience. Certains sont essentiels au fonctionnement du site, d'autres nous aident à analyser l'utilisation et à personnaliser le contenu.