Connaissance des
langages de programmation
Ph. Narbel
Cours de MASTER 1 BORDEAUX 1 (2006-2007)
Sujet :
Comparaison
des langages de programmation au travers de leurs systèmes de types.
Langages
considérés: C, C++, C#, Java,
Eiffel, Ada, SML, OCaml, Haskell, Lisp, CLOS, Scheme, Python,
Coq, Scala, Nice, Moby, Cyclone, etc.
Thèmes abordés :
- Notions de type et de systèmes de types.
- Langages fonctionnels statiquement typés (surtout ML, Haskell).
- Polymorphismes : surcharge, polymorphisme
paramétrique/généricité, sous-typage/polymorphisme d'inclusion,
etc.
- Mécanismes de la programmation objet : typages, héritages,
algorithmes de sélection, liaisons dynamiques, redéfinitions,
multi-methodes, covariance, etc.
- Outil d'aide à la spécification et à la preuve (surtout Coq).
Notes de cours :
- Introduction au cours, plan (ps,
pdf)
- Introduction à ML (OCaml) (ps,
pdf)
- Introduction à ML (fonctions et types) (ps, pdf)
- Introduction à ML (types composites) (ps, pdf)
- Introduction à ML (modules et foncteurs) (ps, pdf)
- Types (notions de base) (ps, pdf)
- Types (propriétés des systèmes de type) (ps, pdf)
- Polymorphismes 1 (introduction et polymorphisme ad hoc) (ps, pdf)
- Polymorphismes 2 (polymorphisme non ad hoc) (ps, pdf)
- Polymorphismes 3 (Compatibilités et
programmation objet) (ps, pdf)
- Introduction à Coq 1 (ps, pdf)
- Introduction à Coq 2 (ps, pdf)
Bibliographie :
- Articles de base :
- Fundamental Concepts in Programming
Languages, C. Strachey (1967) (aussi dans Higher-Order and Symbolic
Computation, 13, 11–49, 2000).
- Cardelli, L. and Wegner, P. : On Understanding Types, Data
Abstraction, and Polymorphism. ACM Computing Surveys, 17, 4, 1985.
- Cardelli, L. : Type Systems. Computer Science and Engineering
Handbook. A.B. Tucker Ed., CRC Press, 1997,
- MacQueen, D. : Adaptation in HOT Languages Comparing
Polymorphism, Modules, and Objects. Engineering Theories of
Software Construction, C. A. R. Hoare, M. Broy, and R. Steinbrüggen
Eds., IOS Press, 2001.
- Livres :
- Abadi, M. and Cardelli, L.: A Theory of Objects,
Springer-Verlag, 1996.
- Bertot, Y. et Castéran, P.: Interactive Theorem Proving and
Program Development. Springer-Verlag, 2004.
- Ian Craig: The Interpretation of Object-oriented Programming
Languages. Springer-Verlag, 2001.
- Louden Kenneth C. : Programming Languages: Principles and
Practice. San Jose State University, 2003.
- Mitchell, J.C.: Foundations for Programming Languages, MIT
Press, 1996.
- Mitchell, J. C.: Concepts in Programming Languages, Cambridge
University Press, 2003.
- Narbel Ph : Programmation fonctionnelle, generique et objet.
Vuibert. 2005.
- Pierce, B. C. : Types and Programming Languages. MIT
Press, 2002.
- Sebesta, R. : Concepts of Programming Languages. Addison
Wesley, 2001.
- Sethi, R. : Programming Languages. Addison-Wesley,
1996.
Liens divers
: