SlideShare une entreprise Scribd logo

Introduction à scala

SOAT
SOAT

Cette présentation aura pour objectif d’introduire le langage de programmation Scala. Ce dernier bénéficie depuis plusieurs mois d’un véritable engouement qui se reflète au regard de la communauté française croissante. Pour cela Ludwine Probst et Florent Lagrede reviendront donc sur les notions fondamentales, illustrées d’exemples sur des problèmes récurrents de programmation, afin de dégager les spécificités de ce langage et certains de ses atouts. Aucune connaissance de Scala n’est donc nécessaire, seulement l’envie de découvrir un nouveau langage.

1  sur  42
Télécharger pour lire hors ligne
Introduction à
     Scala




   Introduction à Scala par Ludwine et Florent
Florent Lagrède
développeur Java chez voyages-sncf.com
@flowlag


Ludwine Probst
développeuse Java chez voyages-sncf.com
DuchessFr et GDG member
@nivdul
Plan de la soirée

            Introduction à Scala...
Partie 1
  Généralités
Partie 2
  Présentation des concepts
Partie 3
  Démonstration avec une appli
Histoire

Nom : scala vient de "scalable langage"
Auteur: Martin Odersky
Création : 2003
Lieu : EPFL (Lausanne)




But : être élégant et concis, mais pas que...
Dans la communauté

PSUG (Paris Scala User Group)
•   soirée chaque mois avec 60-100 membres
•   sujets techniques, retours d'expériences,
    présentations de projets open-source...
Scala en quelques mots

• langage mélangeant programmation orientée-
    objet et fonctionnelle
•   tourne sur la JVM
•   compatible avec les librairies Java
•   statiquement typé
•   soucis de la concurrence (immutable)
•   inférence de type
•   tout est objet (hiérarchie des classes)
•   et ça se veut être concis

Recommandé

BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian Lilia Sfaxi
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & SparkAlexia Audevart
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceLilia Sfaxi
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataLilia Sfaxi
 
Chp1 - Introduction à l'Informatique Décisionnelle
Chp1 - Introduction à l'Informatique DécisionnelleChp1 - Introduction à l'Informatique Décisionnelle
Chp1 - Introduction à l'Informatique DécisionnelleLilia Sfaxi
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)Heithem Abbes
 

Contenu connexe

Tendances

Cours data warehouse
Cours data warehouseCours data warehouse
Cours data warehousekhlifi z
 
Projet BI - 2 - Conception base de données
Projet BI - 2 - Conception base de donnéesProjet BI - 2 - Conception base de données
Projet BI - 2 - Conception base de donnéesJean-Marc Dupont
 
Introduction à BPMN 2.0 - Business Process Modeling Notation
Introduction à BPMN 2.0 - Business Process Modeling NotationIntroduction à BPMN 2.0 - Business Process Modeling Notation
Introduction à BPMN 2.0 - Business Process Modeling NotationSanae BEKKAR
 
Tp Sql Server Integration Services 2008
Tp  Sql Server Integration Services  2008Tp  Sql Server Integration Services  2008
Tp Sql Server Integration Services 2008Abdelouahed Abdou
 
Chp2 - Les Entrepôts de Données
Chp2 - Les Entrepôts de DonnéesChp2 - Les Entrepôts de Données
Chp2 - Les Entrepôts de DonnéesLilia Sfaxi
 
Chp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation MultidimensionnelleChp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation MultidimensionnelleLilia Sfaxi
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...ENSET, Université Hassan II Casablanca
 
Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETLLilia Sfaxi
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkAmal Abid
 
Alphorm.com Formation Big Data avec Apache Spark: Initiation
Alphorm.com Formation Big Data avec Apache Spark: InitiationAlphorm.com Formation Big Data avec Apache Spark: Initiation
Alphorm.com Formation Big Data avec Apache Spark: InitiationAlphorm
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : SparkLilia Sfaxi
 
Apache SPARK ML : principes, concepts et mise en œuvre
Apache SPARK  ML : principes, concepts et  mise en œuvre Apache SPARK  ML : principes, concepts et  mise en œuvre
Apache SPARK ML : principes, concepts et mise en œuvre MICHRAFY MUSTAFA
 
exercices business intelligence
exercices business intelligence exercices business intelligence
exercices business intelligence Yassine Badri
 

Tendances (20)

Cours data warehouse
Cours data warehouseCours data warehouse
Cours data warehouse
 
Projet BI - 2 - Conception base de données
Projet BI - 2 - Conception base de donnéesProjet BI - 2 - Conception base de données
Projet BI - 2 - Conception base de données
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
 
Introduction à BPMN 2.0 - Business Process Modeling Notation
Introduction à BPMN 2.0 - Business Process Modeling NotationIntroduction à BPMN 2.0 - Business Process Modeling Notation
Introduction à BPMN 2.0 - Business Process Modeling Notation
 
Tp Sql Server Integration Services 2008
Tp  Sql Server Integration Services  2008Tp  Sql Server Integration Services  2008
Tp Sql Server Integration Services 2008
 
Chp2 - Les Entrepôts de Données
Chp2 - Les Entrepôts de DonnéesChp2 - Les Entrepôts de Données
Chp2 - Les Entrepôts de Données
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
 
Chp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation MultidimensionnelleChp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation Multidimensionnelle
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETL
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
 
Alphorm.com Formation Big Data avec Apache Spark: Initiation
Alphorm.com Formation Big Data avec Apache Spark: InitiationAlphorm.com Formation Big Data avec Apache Spark: Initiation
Alphorm.com Formation Big Data avec Apache Spark: Initiation
 
Partie2BI-DW2019
Partie2BI-DW2019Partie2BI-DW2019
Partie2BI-DW2019
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : Spark
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Apache SPARK ML : principes, concepts et mise en œuvre
Apache SPARK  ML : principes, concepts et  mise en œuvre Apache SPARK  ML : principes, concepts et  mise en œuvre
Apache SPARK ML : principes, concepts et mise en œuvre
 
exercices business intelligence
exercices business intelligence exercices business intelligence
exercices business intelligence
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 

En vedette

Presentation lesson14
Presentation lesson14Presentation lesson14
Presentation lesson14saaroonaa
 
Le climat a chypre 2
Le climat a chypre 2Le climat a chypre 2
Le climat a chypre 2elenakrafaela
 
Equipment testing presentation
Equipment testing presentationEquipment testing presentation
Equipment testing presentationJonoGaymaster
 
UNITED STATES - DAMAGE CONTROL TACTICS - CREDIBILITY ISSUES (French)
UNITED STATES - DAMAGE CONTROL TACTICS - CREDIBILITY ISSUES (French)UNITED STATES - DAMAGE CONTROL TACTICS - CREDIBILITY ISSUES (French)
UNITED STATES - DAMAGE CONTROL TACTICS - CREDIBILITY ISSUES (French)VogelDenise
 
I Tnation 2 0 Fr 111001 3
I Tnation 2 0 Fr 111001 3I Tnation 2 0 Fr 111001 3
I Tnation 2 0 Fr 111001 3louismaerten
 
Forteresse Soroca
 Forteresse  Soroca Forteresse  Soroca
Forteresse SorocaDana Barbie
 
Parc office présentation_rachat_reprise_informatique_telecom_mobilier_brokera...
Parc office présentation_rachat_reprise_informatique_telecom_mobilier_brokera...Parc office présentation_rachat_reprise_informatique_telecom_mobilier_brokera...
Parc office présentation_rachat_reprise_informatique_telecom_mobilier_brokera...Annonces-ParcOffice
 
Alstom crée un référentiel de ses actifs informatiques en deux mois avec Simp...
Alstom crée un référentiel de ses actifs informatiques en deux mois avec Simp...Alstom crée un référentiel de ses actifs informatiques en deux mois avec Simp...
Alstom crée un référentiel de ses actifs informatiques en deux mois avec Simp...Solutions IT et Business
 
BARACK OBAMA- UNDERSTANDING WILLIE LYNCH (French)
BARACK OBAMA- UNDERSTANDING WILLIE LYNCH (French)BARACK OBAMA- UNDERSTANDING WILLIE LYNCH (French)
BARACK OBAMA- UNDERSTANDING WILLIE LYNCH (French)VogelDenise
 
Projet computraining replay
Projet computraining replayProjet computraining replay
Projet computraining replaymjdelary
 
recette macarons framboise
recette macarons framboiserecette macarons framboise
recette macarons framboisemjdelary
 
Formation réseaux sociaux – Commerce et Ecommerce
Formation réseaux sociaux – Commerce et EcommerceFormation réseaux sociaux – Commerce et Ecommerce
Formation réseaux sociaux – Commerce et EcommerceL'Autre Média - Formation
 
Présentationrestauration de tableaux
Présentationrestauration de tableauxPrésentationrestauration de tableaux
Présentationrestauration de tableauxatelierdesquen
 

En vedette (20)

Obsweb iscc
Obsweb isccObsweb iscc
Obsweb iscc
 
Presentation lesson14
Presentation lesson14Presentation lesson14
Presentation lesson14
 
Flintgrant
FlintgrantFlintgrant
Flintgrant
 
Le climat a chypre 2
Le climat a chypre 2Le climat a chypre 2
Le climat a chypre 2
 
Equipment testing presentation
Equipment testing presentationEquipment testing presentation
Equipment testing presentation
 
Aviones
AvionesAviones
Aviones
 
UNITED STATES - DAMAGE CONTROL TACTICS - CREDIBILITY ISSUES (French)
UNITED STATES - DAMAGE CONTROL TACTICS - CREDIBILITY ISSUES (French)UNITED STATES - DAMAGE CONTROL TACTICS - CREDIBILITY ISSUES (French)
UNITED STATES - DAMAGE CONTROL TACTICS - CREDIBILITY ISSUES (French)
 
I Tnation 2 0 Fr 111001 3
I Tnation 2 0 Fr 111001 3I Tnation 2 0 Fr 111001 3
I Tnation 2 0 Fr 111001 3
 
Forteresse Soroca
 Forteresse  Soroca Forteresse  Soroca
Forteresse Soroca
 
Comput training
Comput trainingComput training
Comput training
 
Parc office présentation_rachat_reprise_informatique_telecom_mobilier_brokera...
Parc office présentation_rachat_reprise_informatique_telecom_mobilier_brokera...Parc office présentation_rachat_reprise_informatique_telecom_mobilier_brokera...
Parc office présentation_rachat_reprise_informatique_telecom_mobilier_brokera...
 
title
titletitle
title
 
Management des idées
Management des idéesManagement des idées
Management des idées
 
Alstom crée un référentiel de ses actifs informatiques en deux mois avec Simp...
Alstom crée un référentiel de ses actifs informatiques en deux mois avec Simp...Alstom crée un référentiel de ses actifs informatiques en deux mois avec Simp...
Alstom crée un référentiel de ses actifs informatiques en deux mois avec Simp...
 
BARACK OBAMA- UNDERSTANDING WILLIE LYNCH (French)
BARACK OBAMA- UNDERSTANDING WILLIE LYNCH (French)BARACK OBAMA- UNDERSTANDING WILLIE LYNCH (French)
BARACK OBAMA- UNDERSTANDING WILLIE LYNCH (French)
 
Les canaux ioniques
Les canaux ioniquesLes canaux ioniques
Les canaux ioniques
 
Projet computraining replay
Projet computraining replayProjet computraining replay
Projet computraining replay
 
recette macarons framboise
recette macarons framboiserecette macarons framboise
recette macarons framboise
 
Formation réseaux sociaux – Commerce et Ecommerce
Formation réseaux sociaux – Commerce et EcommerceFormation réseaux sociaux – Commerce et Ecommerce
Formation réseaux sociaux – Commerce et Ecommerce
 
Présentationrestauration de tableaux
Présentationrestauration de tableauxPrésentationrestauration de tableaux
Présentationrestauration de tableaux
 

Similaire à Introduction à scala

Javascript un langage supérieur
Javascript un langage supérieurJavascript un langage supérieur
Javascript un langage supérieurFredy Fadel
 
Langage Java et Programmation Orienté Objet
Langage Java et Programmation Orienté ObjetLangage Java et Programmation Orienté Objet
Langage Java et Programmation Orienté ObjetMohammed Jaafar
 
Interface collectionsinter
Interface collectionsinterInterface collectionsinter
Interface collectionsinterRYMAA
 
Classes et Objets.pdf
Classes et Objets.pdfClasses et Objets.pdf
Classes et Objets.pdfAabidiHafid
 
11-Cours de Géniel Logiciel
11-Cours de Géniel Logiciel11-Cours de Géniel Logiciel
11-Cours de Géniel Logiciellauraty3204
 
De java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDe java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDidier Plaindoux
 
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Loic Yon
 
Csharp2 : classes et objets
Csharp2 : classes et objetsCsharp2 : classes et objets
Csharp2 : classes et objetsAbdoulaye Dieng
 
Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5Mamadou Oury Ba
 
Mix it 2011 - Clojure
Mix it 2011 - ClojureMix it 2011 - Clojure
Mix it 2011 - Clojurelolopetit
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objetsAbdoulaye Dieng
 
fdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptxfdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptxTarikElMahtouchi1
 

Similaire à Introduction à scala (20)

Javascript un langage supérieur
Javascript un langage supérieurJavascript un langage supérieur
Javascript un langage supérieur
 
Université des langages scala
Université des langages   scalaUniversité des langages   scala
Université des langages scala
 
XB-Java.ppt
XB-Java.pptXB-Java.ppt
XB-Java.ppt
 
Langage Java et Programmation Orienté Objet
Langage Java et Programmation Orienté ObjetLangage Java et Programmation Orienté Objet
Langage Java et Programmation Orienté Objet
 
expression lambda
expression lambdaexpression lambda
expression lambda
 
Interface collectionsinter
Interface collectionsinterInterface collectionsinter
Interface collectionsinter
 
Classes et Objets.pdf
Classes et Objets.pdfClasses et Objets.pdf
Classes et Objets.pdf
 
11-Cours de Géniel Logiciel
11-Cours de Géniel Logiciel11-Cours de Géniel Logiciel
11-Cours de Géniel Logiciel
 
Les Classe en Java
Les Classe en JavaLes Classe en Java
Les Classe en Java
 
Nouveautés de java 8
Nouveautés de java 8Nouveautés de java 8
Nouveautés de java 8
 
De java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDe java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvements
 
Part1
Part1Part1
Part1
 
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
 
Csharp2 : classes et objets
Csharp2 : classes et objetsCsharp2 : classes et objets
Csharp2 : classes et objets
 
Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5
 
Java
JavaJava
Java
 
De Java à .NET
De Java à .NETDe Java à .NET
De Java à .NET
 
Mix it 2011 - Clojure
Mix it 2011 - ClojureMix it 2011 - Clojure
Mix it 2011 - Clojure
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objets
 
fdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptxfdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptx
 

Plus de SOAT

Back from Microsoft //Build 2018
Back from Microsoft //Build 2018Back from Microsoft //Build 2018
Back from Microsoft //Build 2018SOAT
 
L'entreprise libérée
L'entreprise libéréeL'entreprise libérée
L'entreprise libéréeSOAT
 
Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !SOAT
 
JAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entrepriseJAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entrepriseSOAT
 
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESSOAT
 
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-DurandSOAT
 
1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-Durand1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-DurandSOAT
 
2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-Durand2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-DurandSOAT
 
Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido SOAT
 
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu ParisotDans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu ParisotSOAT
 
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014SOAT
 
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...SOAT
 
Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014SOAT
 
20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soatSOAT
 
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...SOAT
 
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014SOAT
 
ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)SOAT
 
Xamarin et le développement natif d’applications Android, iOS et Windows en C#
 Xamarin et le développement natif d’applications Android, iOS et Windows en C# Xamarin et le développement natif d’applications Android, iOS et Windows en C#
Xamarin et le développement natif d’applications Android, iOS et Windows en C#SOAT
 
A la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - SoatA la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - SoatSOAT
 
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de donnéesMongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de donnéesSOAT
 

Plus de SOAT (20)

Back from Microsoft //Build 2018
Back from Microsoft //Build 2018Back from Microsoft //Build 2018
Back from Microsoft //Build 2018
 
L'entreprise libérée
L'entreprise libéréeL'entreprise libérée
L'entreprise libérée
 
Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !
 
JAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entrepriseJAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entreprise
 
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
 
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
 
1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-Durand1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-Durand
 
2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-Durand2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-Durand
 
Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido
 
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu ParisotDans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
 
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
 
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
 
Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014
 
20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat
 
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
 
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
 
ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)
 
Xamarin et le développement natif d’applications Android, iOS et Windows en C#
 Xamarin et le développement natif d’applications Android, iOS et Windows en C# Xamarin et le développement natif d’applications Android, iOS et Windows en C#
Xamarin et le développement natif d’applications Android, iOS et Windows en C#
 
A la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - SoatA la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - Soat
 
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de donnéesMongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
 

Introduction à scala

  • 1. Introduction à Scala Introduction à Scala par Ludwine et Florent
  • 2. Florent Lagrède développeur Java chez voyages-sncf.com @flowlag Ludwine Probst développeuse Java chez voyages-sncf.com DuchessFr et GDG member @nivdul
  • 3. Plan de la soirée Introduction à Scala... Partie 1 Généralités Partie 2 Présentation des concepts Partie 3 Démonstration avec une appli
  • 4. Histoire Nom : scala vient de "scalable langage" Auteur: Martin Odersky Création : 2003 Lieu : EPFL (Lausanne) But : être élégant et concis, mais pas que...
  • 5. Dans la communauté PSUG (Paris Scala User Group) • soirée chaque mois avec 60-100 membres • sujets techniques, retours d'expériences, présentations de projets open-source...
  • 6. Scala en quelques mots • langage mélangeant programmation orientée- objet et fonctionnelle • tourne sur la JVM • compatible avec les librairies Java • statiquement typé • soucis de la concurrence (immutable) • inférence de type • tout est objet (hiérarchie des classes) • et ça se veut être concis
  • 7. // en Java class Album { private int id; private String name; public Album(int id, String name) { this.id = id; this.name = name; } } // en Scala class Album(id: Int, name: String)
  • 8. La programmation fonctionnelle • exprime les fonctions au sens mathématique • exclut le changement d'état lors de l'évaluation de fonctions • élimine les effets de bords • s'oppose à la programmation impérative
  • 9. Scala dans le milieu professionnel
  • 10. Quelques outils pour coder en Scala • REPL (Read-Evaluate-Print Loop) • sbt (simple-build-tool) • éditeur de texte (sublimtext,notepad++...) • Eclipse/IntelliJ http://typesafe.com/stack/downloads/scala-ide • scaladoc http://www.scala-lang.org/
  • 11. Démo • création d'un projet scala via Eclipse • utilisation du worksheet • petits tests en scala via le REPL • compilation/exécution (tests) d'un projet via sbt
  • 12. Objectifs de la soirée • présenter les bases, du moins certaines o mutable/immutable, trait, case class, sealed, List, high order function, pattern matching... o voir la syntaxe • regarder de près une appli en Scala
  • 14. Introduction à Scala par Ludwine et Florent
  • 15. Les classes Définition : • définition standard • pas de mot clé public • un fichier source peut contenir plusieurs classes et elles sont toutes par défaut public
  • 16. Les case classes Définition : • objet non modifiable après instanciation • méthodes equals, toString, hashcode... implicitées • constructeur implicité • pas de new • peut se décomposer avec la notion de Pattern Matching
  • 17. Exemples case class Album(id:Int, name:String) Ces 3 écritures suivantes sont équivalentes : val album = new Album(3, "Paris") val album = Album(3, "Paris") val album = Album.apply(3, "Paris") album.name = qu'obtient-on???
  • 18. Les getters/setters (1/2) //Java public class Image() { private String name; public String getName() {...} public void setName(String name) {...} } //Scala class Image(var name:String)
  • 19. Les getters/setters (2/2) En scala, • les getters/setters sont générés pour la JVM • on peut les surcharger • ils sont privés si l'attribut est privé • il est possible d'empêcher leur génération avec la syntaxe suivante private[this] name:String
  • 20. Val & Var Définition : • val o déclaration d'attribut : variable non modifiable o déclaration de paramètre de classe : getter implicite • var o déclaration d'attribut : variable modifiable o déclaration de paramètre de classe : getter et setter implicite
  • 21. Exemples class Image(var name: String) val imageA = new Image("MyImageA") val imageB = new Image("MyImageB") Si on écrit ça : imageA = imageB Que se passe-t-il ?
  • 22. Les traits Définition : c'est comme une class sauf qu'il y a le mot-clé trait. C'est l'équivalent de l'interface en Java sauf qu'on peut y implémenter des méthodes. trait ImageInfos { val image:Image def ImageInfos:String = image.name }
  • 23. Exemples Possibilité d'un héritage multiple : trait ComputeAverageScore trait AnotherOne class Image extends ImageInfos with ComputeAverageScore with AnotherOne { val name = "Paris" } Pas de paramètres de 'classe' : trait ImageInfos(image: Image) // ne compile pas
  • 24. Les Collections • Utilise le trait Iterable • Immutable par défaut • Fonctions d'ordre supérieure o map o filter o foreach Exemples de collection : List, Map, Set, Vector...
  • 25. Les Lists Définition : La classe List repose sur les deux case classes : • Nil représente une liste vide • :: (se prononce “cons”), où x::xs représente la liste dont le premier élément est x, suivi du reste des éléments xs.
  • 26. Les Lists Les 3 fonctions clé à retenir : • head : renvoie le premier élément d’une liste • tail : renvoie la liste excepté son premier élément • isEmpty : renvoie true si la liste est vide, false sinon
  • 27. Quelques exemples... val scores = List(1,2,3)val names = List(“a”,“b”, “b”) val list = List(List(1,0),List(1,1),List(0,1)) val empty: List[Nothing] = List( ) val scores = 1 :: 2 :: 3 :: Nil val names = “a” :: (“b” :: (“b” :: Nil))
  • 28. Fonction partielle Définition : • une fonction partielle qui s'exécute ou non en fonction de ses paramètres • elle doit obligatoirement définir 2 méthodes o isDefinedAt (condition d'exécution) o Apply (code exécuté)
  • 29. Fonction partiellement appliquée Définition : • fonction à laquelle on n'applique pas tous les arguments, créant ainsi une autre fonction. • peut appliquer aucun ou tous les arguments d'une fonction
  • 30. Les fonctions de plus haut niveau • Expression lambda o x: Int => x + 1 est équivalent à f(x: Int) = {x + 1} • Peut prendre une autre fonction en paramètre • Peut être retournée en tant que résultat • Peut être déclarée à l'intérieur d'une autre fonction • Peut-être stockée dans une variable Exemples : map, filter, flatten, flatmap...
  • 31. Les options (1/2) Définition : Le type Option désigne une valeur optionnelle et c'est une Collection.
  • 32. Les options (2/2) L'intérêt des Options ? Imaginons que l’on veuille trouver une personne dans une BDD... def findImage(id: Int): Option[Image]
  • 33. Pattern Matching Définition : Le pattern matching peut être assimilé au switch case d'autres langages comme Java. e match {case p1 => e1 ... case pn => en } pi représente les patterns et ei la valeur renvoyée dans le cas où le pattern pi match e. Erreur MatchError renvoyée si besoin.
  • 34. Exemples (1/4) def applyEvent(event: Event) = event match { case AddImage(image) => add(image) case RemoveImage(withId) => remove(withId) case SearchImages(term) => search(term) case _ => this.image } C'est quoi ce "_" ?
  • 35. Exemples (2/4) Avec les options : case SortImages(criteria) => criteria match { case Some(criteria) => sort(criteria) case None => this.images }
  • 36. Exemples (3/4) On peut faire du Pattern Matching sur un peu tout ! def describe(x: Any) = x match { case 5 => "five" case true => "truth" case "hello" => "hi!" case Nil => "the empty list" case _ => "something else" }
  • 37. Exemples (4/4) Avec les listes : def eval(list:List[Int]) = list match { case Nil => println("vide") case x::Nil => println("un seul élément") case x::xs => println("au moins 2 élemts") }
  • 38. Sealed Trait Définition : le mot-clé sealed devant un trait : ça facilite le Pattern Matching ! Exemple : sealed trait Criteria case class ByName extends Criteria case class ByDate extends Criteria
  • 39. Présentation de l'application • moteur de recherche d'image • le modèle : Image, Album • technos : scala 2.10
  • 40. Quelques liens Programming in Scala Scala in Depth Scala for the impatient Pour apprendre scala par la pratique : https://www.coursera.org/