Cours CAML programmes et structures polymorphes

Les ouvrages vivement recommandés

– Le langage Caml, Pierre Weis et Xavier Leroy, DUNOD, Paris 1999 (deuxième édition)
– Développement d’applications avec Objective Caml E.Chailloux, P.Manoury, B.Pagano, O’REILLY 2000
– Approche fonctionnelle de la programmation, Guy Cousineau et Michel Mauny, Ediscience (Collection Informatique),
Paris 1995
Il y en a d’autres . . .

Historique

Au début des langages de programmation, deux modèles de programmation coexistent :
Le modèle de Von Neumann du quel sont sortis les langages impératifs.
Le Lambda Calcul modèle théorique des langages fonctionnels.
LISP : premier langage fonctionnel proposé dans les années 60.
De nombreux langages ont suivi, au début handicap d’efficacité
Aujourd’hui, grâce aux progrès de la compilation, de nombreux compilateurs efficaces pour des langages fonctionnels existent.

Domaines d’utilisation

Ils sont utilisés dans de nombreuses applications(emacs, gimp, autocad, jeux (langage SCOL), téléphonie (langage ERLANG), démonstrateurs. . .)

Domaines de prédilection :

– manipulation de symboles (compilation, traduction, intelligence artificielle, documents web,. . .) ;
– conception de logiciels complexes (grâce au niveau d’abstraction),
– apprentissage de la programmation.
Dans la famille ML je demande. . .

Histoire de la famille ML

– L’ancêtre : ML = meta-langage du projet LCF(1980)
– Les premières machines abstraites :
– La FAM : Cardelli
– La CAM : Curien, Cousineau
– Une spécification théorique : 1994 (Milner)
– Plusieurs implantations : CAML : (1987) ; SML/NJ : (1988)
– Les différentes branches évoluent constamment.Pour CAML :
– Caml-light :1990 (Xavier Leroy, Damien Doligez)
– Modules paramétrés et code natif : CSL (1995)
– Extension objet : (Didier Rémy et Jérôme Vuillon)(1996)
– Étiquettes documentant les arguments et arguments optionnels (Jacques Garrigue)(1999)
– . . .

Choix de OCAML comme langage support

Caractèristiques générales

– Possède une sémantique simple, compréhensible et rigoureuse
– Autorise de nombreux modes de programmation fonctionnel basé sur la notion de calcul impératif basé sur les notions d’état et d’effet orienté objet multi-threadée avec des processus légers inclus
programmation par filtrage il est possible d’utiliser conjointement ces différents modes.
– communique sur le réseau Internet,
– indépendant de l’architecture machine.
Facilite une programmation sûre

Lire sur cLicours.com :  Compiler un module avec ocamlc ocaml -c

Écriture et Compilation

– Typage statique fort : vérifie des propriétés ensemblistes.
– Typé statiquement sans nécessité d’annotations (qui restent possibles). Garanti une exécution sans erreur dues au typage
– Typage polymorphe (par le compilateur).
Permet un grand taux de réutilisation sans alourdir la tâche du programmeur.
– Déclaration obligatoires des types complexes.
– Programmation par cas, vérification de l’exhaustivité.
– Gestion claire des erreurs et des cas exceptionnels.
– Des bibliothèques puissantes.évite de réinventer la roue

Exécution

– Gestion automatique de la mémoire
– Déclenchement d’exceptions et non génération d’un bus error core dump par :
– Vérification dynamique de la validité des accès
Cette vérification dynamique automatique est un atout de sécurité.
Elle a un coût.
Elle est débrayable (option de compilation de ocamlopt) au risque et péril de l’utilisateur.
– Vérification de l’exhaustivité du filtrage
Adapté pour des petits et des grands projets
– petits projets :
– Interfacé avec l’éditeur emacs
– permet la mise au point rapide
– Outils de mise au point : trace, printf, deboggueur avec retour arrière
– Grands projets
– Un système de modules très puissant
– Compilation séparée
– Ouvert au monde : interface aisée avec le langage C
– utilisation des Makefile

Programmation fonctionnelle
Programmation fonctionnelle et/ou impérative
Récursif ou itératif
Programmes et structures polymorphes
Gestion des cas exceptionnels Comment le faire proprement ?
Programmation par contrat
Structurer le code Pour faciliter la réutilisabilité et la maintenance.
Développement en équipe

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.