- Qu'attendez-vous du cours ?
-
Motivation
-
évolution des archis
- concurrence
-
évolution des applis
- cloud
- big data
-
propriétés recherchées
-
productivité
- concision de la syntaxe
- haut niveau d'abstraction
- JVM
-
sûreté de fonctionnement
- langage/typage statique
- haut niveau d'abstraction
-
scalabilité
- des scripts aux applis d'entreprise
-
constructions du langage
- extension par bilbiothèque
- concurrence
-
Syllabus
- voir portail
-
Préz Scala
-
caractéristiques
-
OO
-
inspiration
- smalltalk
- simula / Eiffel
- Java / C++ / C#
-
caractéristiques
- encapsulation/masquage d'information
- héritage
- polymorphisme/liaison tardive
- tous les types prédéfinis sont des objets
- toutes les opérations sont déclenchées par des envois de messages aux objets
- tous les types utilisateurs sont des objets
-
fonctionnel
-
inspiration
- ML
- haskell
-
caractéristiques
- fonctions d'ordre supérieur
- clôtures
- assignation unique
- filtrage par motifs
- inférence de types
- optimisation de la récursivité terminale
- listes en compréhension
- effets monadiques
-
concurrence
-
traditionnellement
- threads
- problème
- conditions de course
- interblocage
- raison
- mémoire partagée
-
alternative
- échange de messages
- acteurs
- inspiration
- Erlang
-
JVM
- portabilité
-
performances
- optimisation à la volée
-
OO vs Fun
-
OO
- noms à qui on attache verbes
- top-down
-
objet
- identité
- comportement
- état
-
pb
- interactions doivent être dans objets
- classes de service
-
Fun
- verbes et leurs combinaisons
- bottom-up
- combinaison et application de fonctions
-
fonctions
- pures
- transparence référentielle
- affectation unique
- suppression/retardement des effets de bords
-
histoire un chat attrape un oiseau et le mange
- OO
- Fun
-
scalabilité
-
syntaxe concise et extensible
- opérateurs comme nom de méthodes
- appel de méthodes sans .
- appel par nom
- repeat ... until ...
- inférence de types
- REPL
- interaction simple avec Java
- acteurs