introduction - inriapeople.rennes.inria.fr/alan.schmitt/teaching/caml/introduction.pdf · pourquoi...
Post on 24-Sep-2020
6 Views
Preview:
TRANSCRIPT
Introduction
Alan Schmitt
3 février 2016
Informations Pratiques
▶ Équipe pédagogique▶ Alan Schmitt (cours, TP)
▶ 4 cours▶ 9 TP notés▶ pas d’examen, mais un devoir maison▶ http://www.irisa.fr/celtique/aschmitt/teaching/
alan.schmitt@inria.fr
Pourquoi apprendre OCaml ?
Objectifs de ce cours
▶ Comprendre des concepts fondamentaux de la programmation(types, récursion)
▶ Apprendre à exploiter les atouts de la programmationfonctionnelle
Pourquoi ?▶ Pourquoi s’intéresser à ce style de programmation ?▶ Peut-on résoudre les mêmes problèmes qu’en C ou Java ?
Pourquoi s’intéresser à la programmation fonctionnelle (1)
Approche favorisant des programmes▶ corrects;▶ lisibles;▶ réutilisables ou modifiables.
Un langage de programmation est un outil pointu. Les langagesfonctionnels sont le résultat de nombreuses années de recherche.
Pourquoi s’intéresser à la programmation fonctionnelle (2)
Langages fonctionnels proches des mathématiques. Ce sont deslangages de haut niveau:
▶ permettant de s’abstraire de l’architecture des machine;▶ donnant des programmes clairs et concis;▶ favorisant un développement rapide;▶ fournissant des outils pour une meilleure sûreté (types).
Pourquoi s’intéresser à la programmation fonctionnelle (3)
De nombreux langages intègrent des aspects fonctionnels:▶ Java▶ Objective C▶ JavaScript▶ Swift
Exemple: gestion de la mémoire
Allouer une liste en C:struct list * x1 = malloc(sizeof(struct list));struct list * x2 = malloc(sizeof(struct list));if (x1 == NULL || x2 == NULL) return NULL;x1->hd = 1; x1->tl = x2; x2->hd = 2; x2->tl = NULL;return x1;
Allouer une liste en OCaml1 :: 2 :: []
La gestion automatique de la mémoire a un coût à l’exécution. Lagestion manuelle de la mémoire a un coût à la programmation … età l’exécution (bug: plantage, fuite mémoire).
Peut-on tout programmer en OCaml?
Oui, répond la théorique de la calculabilité.Machine du Turing modèle abstrait du fonctionnement d’un
ordinateur (Turing, 2936)λ-calcul langage de programmation fonctionnel théorique
(Church, 1930)Ces modèles sont équivalents.
Histoire de OCaml
Préhistoire (1973 - 1983)
ML (Meta-Language)Robin MilnerAssistant de Preuve LCF
SML (1983 - présent)
Standard MLStandardisation par Robin Milneret Dave McQuenn.
Caml (1987 - 1992)
▶ Compilé vers VM Lisp▶ Gestion mémoire VM▶ Pourquoi pas SML ? Coq.
Ascánder Suárez Pierre Weis Michel Mauny
Caml Light (1990 - 2002)
▶ interpréteur de code à octets en C▶ Gestionnaire mémoire efficace
Xavier Leroy Damien Doligez
Caml Special Light (1995 - 1996)
▶ Compilateur vers code natif et système de modules
Xavier Leroy
OCaml (1996 – présent)
▶ objets et classes▶ comme les variants polymorphes▶ version courante: OCaml 4.02.3, sortie en juillet 2015
Didier Rémy Jérôme Vouillon Jacques Garrigue
OCaml aujourd’hui
Influence
Haskell Scala
F# Swift
Consortium Caml
▶ CEA▶ Citrix▶ Dassault Aviation▶ Dassault Systèmes▶ Esterel Technologies▶ Jane Street Capital
▶ LexiFi▶ Microsoft▶ MLstate▶ Mylife.com▶ OCamlPro▶ SimCorp
Grands succès▶ Unison (synchronisation de fichiers)▶ MLdonkey (client P2P)▶ Lexify (langage formel pour la finance)▶ Jane Street Capital (finance: arbitrage)
Lots of great Java programmers out there, but how tofind them? Small number of great FP hackers, but fewergreat jobs in industry. OCaml is a signal of quality, inboth directions.
▶ Ensemble (système de communication distribuée)▶ Coq (Assistant de preuve). Théorème des 4 couleurs …▶ Astrée (Analyse statique de C). Utilisé pour valider des
systèmes de vol pour A340 ou A380▶ SLAM (vérification statique de drivers pour Windows)▶ FFTW (génération automatique de transformées de Fourier)
Apprendre OCaml
http://caml.inria.fr/about/books.fr.htmlhttp://ocaml.org
http://caml.inria.fr/pub/distrib/books/llc.pdf
http://www.pps.jussieu.fr/Livres/ora/DA-OCAML/
http://programmer-avec-ocaml.lri.fr/
Apprendre OCaml
https://github.com/andrewray/iocamlhttp://gazagnaire.org/fuconf14/
Apprendre OCaml
https://www.france-universite-numerique-mooc.fr/courses/parisdiderot/56002/session01/about
top related