Cours Avancé de Langages de Programmation
Contenu du cours.
PAGE NON DEFINITIVE
le contenu du programme, les références, et les transparents seront mis à jour au fur et à mesure
Le langage de référence pour le cours est OCaml, mais nous utiliserons aussi des extraits de code Haskell, Scala, Perl 6, C#, Java, Erlang, Pascal, Python, Basic, CDuce, Xslt, ... . L'idée étant de mettre l'accent sur les concepts de la programmation plus que sur la programmation dans un langage particulier.
  • Sytèmes de modules
    - 1. Introduction à la Modularité. - 2. Modules (simples) en ML. - 3. Foncteurs. - 4. Un exemple un peu plus compliqué.
  • Classes vs. Modules
    - 5. Modularity in OOP. - 6. Mixin Composition - 7. Multiple dispatch - 8. OCaml Classes - 9. Haskell’s Typeclasses - 10. Generics
  • Computations avec effets.
    - 11. Exceptions. - 12. Traits impératifs. - 13. Continuations
  • Transformation de programmes
    - 14. The fuss about purity - 15. A Refresher Course on Operational Semantics - 16. Closure conversion - 17. Defunctionalization - 18. Exception passing style - 19. State passing style - 20. Continuations, generators, and coroutines - 21. Continuation passing style
  • Programmation Monadique
    - 22. Invent your first monad - 23. More examples of monads - 24. Monads and their laws - 25. Program transformations and monads - 26. Monads as a general programming technique - 27. Monads and ML Functors
  • Concurrence et parallelisme
    - 28. Concurrency - 29. Preemptive multi-threading - 30. Mutexes, Conditional Variables, Monitors - 31. Doing without mutual exclusion - 32. Cooperative multi-threading - 33. Channeled communication - 34. Software Transactional Memory
  • Soustypage
    - 35. Simple Types - 36. Extensions: products, records, references - 37. A simple model of objects - 38. Parametric Types - 39. Recursive Types - 40. Semantic Subtyping - 41. Covariance and contravariance
  • Programmation XML
    - XSLT. - CDuce.
Bibliographie essentielle
  1. Emmanuel Chailloux,Pascal Manoury,Bruno Pagano. Développement d'applications avec Objective Caml
  2. Philip Wadler Monads for fuctional Programming In Advanced Functional Programming, Proceedings of the Baastad Spring School, May 1995, Springer Verlag Lecture Notes in Computer Science 925.
  3. Tim Harris. A Pragmatic Implementation of Non-Blocking Linked-Lists DISC 2001
  4. Maurice Herlihy, Nir Shavit. The Art of Multiprocessor Programming. Morgan-Kaufmann Elsevier.
  5. Vladimir Gapeyev, Michael Y. Levin, Benjamin C. Pierce. Recursive Subtyping Revealed. Journal of Functional Programming, 12:511-548, 2002.
  6. G. Castagna and A. Frisch. A Gentle introduction to Semantic Subtyping. Proceedings of PPDP '05, the 7th ACM SIGPLAN International Symposium on Principles and Practice of Declarative Programming, pages 198-208, ACM Press (full version) and ICALP '05, 32nd International Colloquium on Automata, Languages and Programming, Lecture Notes in Computer Science n. 3580, pages 30-34, Springer (summary), July, 2005. Joint ICALP-PPDP keynote talk.
Pour aller plus loin :
  1. P. Sestoft and H Hansen. C# Precisely.
    A nice book on C#
  2. Bryan O'Sullivan, Don Stewart, and John Goerzen Real World Haskell.
    Online book for advanced programming in Haskell
  3. Dean Wampler, Alex Payne. Programming Scala. O'Reilly.
    Online book on Scala
  4. A. Frisch, G. Castagna and V. Benzaken. Semantic Subtyping: dealing set-theoretically with function, union, intersection, and negation types . Journal of the ACM 55(4):1-64, 2008.
    The most complete reference about semantic subtyping
  5. V. Benzaken, G. Castagna, and A. Frisch. CDuce: an XML-Centric General-Purpose Language. In ICFP '03, 8th ACM International Conference on Functional Programming, pag. 51―63, ACM Press, 2003.
    Reference paper about CDuce
  6. P.-L. Curien, G. Ghelli. Coherence of subsumption, minimum typing and type-checking in Fsub. Mathematical Structures in Computer Science, 2(1):55-91, 1992.
    Subtyping systems and algorithms for explicit polymorphic functions.
  7. T. Griffin. A Formulæ-as-Types Notion of Control. POPL 1990.
    It explains the logical role of callcc and CPS.
  8. Andrzej Filinski. Representing Monads. In Proceedings of the 21st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages,
    It nicely explains the relation between Monads and CPS
  9. K. Fraser and T. Harris. Concurrent programming without locks. ACM Transactions on Computer Systems (TOCS), 25(2):146-196, May 2007
    Lock-free programming
Travaux dirigés
Les travaux dirigés sont assurés par Ocan Sankur et leur contenu se trouve sur cette page.