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