Développement d'applications avec Objective Caml

Posté par . Modéré par trollhunter.
Tags :
0
5
mar.
2001
Doc
Extrait:
"Le livre d'O'Reilly le Développement d'applications avec Objective Caml traite d'un langage de programmation connu par un certain nombre d'universitaires qui ont débuté la programmation par ce langage."





























Développement d'applications avec Objective Caml
Auteur Emmanuel Chailloux, Pascal Manoury et Bruno Pagano
Editeur O'Reilly
ISBN 2-84177-121-0
Pages 700
Prix Prix indicatif 250F
Rédacteur bugattiFan



Couverture
<!-- Ceci est a mettre comme texte de la news annoncant la revue<br/> du livre -->


Le livre d'O'Reilly le Développement d'applications avec Objective
Caml traite d'un langage de programmation connu par un certain nombre
d'universitaires qui ont débuté la programmation par ce langage.


<!-- Fin du texte de la news -->





Il y a un objectif plus précis qui est de montrer que OCaml, petit
nom d'Objective Caml,
n'est pas seulement un langage d'apprentissage mais un langage pour le développement d'application
de taille et de complexité conséquente.
Ce livre est articulé en quatre grandes parties :


  • Noyau du langage : présentation du langage et de l'interface graphique
  • Outils de développement : description des bibliothèques standard de la distribution de l'INRIA.
  • Organisation d'application : explication de la programmation modulaire et programmation orienter objet.
  • Concurrence et répartition : explication de la programmation concurrente c'est à dire la programmation multiprocessus.



La première partie nous décrit d'abord la programmation
fonctionnelle.



Ce type de programmation est mal connue du grand public,
mais je pense qu'elle mériterait un peu plus de considération.
Ocaml dérive de ML qui est un langage fonctionnel. Par conséquent, ce
chapitre mériterait plus de pages. Ce n'est pas dans une
cinquantaine de pages que le non initié peut apréhender la richesse de
cette forme de programmation



Puis nous voyons que Ocaml est aussi un langage de programmation
impérative, une programmation que vous connaissez certainement car
c'est le style de programmation par défaut de C, Pascal, Fortran... ,
cette partie courte comme celle de la partie fonctionnelle nous
indique que ce livre s'addresse avant tout à
un utilisateur de Ocaml ou bien de Caml-Light.



Je ne serai pas aussi critique sur ce chapitre.
Récursif ou itératif, fonctionnel ou impératif, là est la question. En
vingt quatre pages les auteurs essayent de faire une liaison
entre deux styles qui s'opposent à l'aide d'exemples d'algorithmes qui
sont implémentés avec les deux méthodes.
N'oublions que le choix d'un style de programmation est aussi lié à
l'architecture de la machine.




La seconde partie décrit des aspects plus complexes tels le
fonctionnement des compilateurs.
Ocaml a un compilateur natif ou code-octet exécutable sur une machine
virtuelle appelé Zinc (Zinc Is Not Caml),
comme en Java, avec un test intéressant de performance entre ces deux
modes d'exécution.
Ce chapitre sur les modes de compilation demande un bon niveau de
connaissance des techniques de compilation.
Un autre chapitre ardu est celui du Récupérateur automatique de
Mémoire. Et oui, il existe d'autres langages que Java qui ont un Garbage
Collector.
Les auteurs expliquent l'algorithme qu'utilise Ocaml pour effectuer
cette tache. Bien que, théoriquement nous n'avons pas besoin de gérer la mémoire,
cette explication est obligatoire pour utiliser efficacement les
modules de gestion de la mémoire :


  • Garbage Collector (nommé GC)
  • Pointeur (nommé Weak)



La description des bibliothèques est complète mais je regrette la
non-explication de la bibliothèque d'accès des bases de données,
les auteurs s'expliquent du fait qu'elle ne marche que sur UNIX
(NDBD)
La mise au point des programmes : trace, déboguage et profilage sont exposés dans le
chapitre 10 à l'aide de courts exemples.



L'utilisation des utilitaires Ocamllex et Ocamlyacc est exposée
mais les auteurs n'approfondissent pas les grammaires régulières,
contextuelles, context-free, ambiguë ...
dont je conseille l'étude préalablement à leur utilisation.
Etant donné l'importance de ces deux utilitaires il est regretable
que seulement 25 pages y soient consacrées.



L'interopérabilité avec C est un chose dont la
mise en oeuvre n'est pas évidente, mais la solution se trouve dans ce livre il faut
souligner que les différents aspects de cette solution ( GC, Valeurs,
fonctions ...) sont étudiés.




le graphisme est présent dans cet ouvrage, puisque les auteurs
présentent une API graphique dont le nom est UPI qui utilise le module
Graphics d'OCaml vous y voyez les composants de bases, les callbacks
selon Caml. La pièce de résistance de ce chapitre est une application de
recherche de chemin minimal dans un graphe en ultilisant l'algorithme
de Dijkstra avec une très jolie interface graphique.



Après cette description de Ocaml
nous passons à la méthode de développement d'application.
Une nouvelle question se pose : Modulaire ou Objet ?


Cette partie est découpée en trois sous parties : la programmation
modulaire, la programmation par objets et la comparaison des modèles
d'organisation.



Les deux premiers chapitres sont plus une description
d'application de ces techniques à l'aide d'Ocaml qu'un cours
d'approche objet et d'approche modulaire.



Le troisième chapitre de cette partie compare les deux méthodes de développement,
l'éfficacité et la limitation des modèles. Les auteurs démontrent que ces modèles sont
finalement complémentaires.




La dernière partie est celle qui s'adresse plus aux utilisateurs
d'UNIX puisque entres autres choses, aux valeurs de retour près ( cf
cas d'échec de fork() ) est on ne peut plus familière aux Unixiens. En fait
c'est l'API Posix Caml-isée. Attention de nombreux exemples ne tournent pas
sous Windows.



Le chapitre consacré à la programmation concurente est on ne peut plus
classique ce qui justement permet d'appréhender la démarche de CAML.
cette fonctionnalité est assurée par
le module Unix mais certaines fonctions sont accessibles
par les utilisateurs de Windows, pour ma part je ne conseille pas ce
type de programmation sur Windows.



Nous avons l'exemple de ce type de programmation sur un serveur HTTP.
Finalement nous avons une conclusion pertinente sur le langage sur le
fait de sa syntaxe, par exemple sur l'invocation d'une méthode par #
au lieu de . habituel. Mais aussi les auteurs évoquent d'autres
langages fonctionnels (ML, Scheme, Miranda, Haskell...). Chaque
chapitre est agrémenté par des exercices dont les solutions sont sur
le cédérom. Et chaque partie est illustrée par des applications
détaillées qui sont pertinentes comme par exemple une interface graphique, un serveur
HTPP.
Les lien Internet disséminés dans le livre sont source
d'approfondissement sur les sujets qui vous intéressent. Il en est
de même de la
bibliographie. Donc je conseille ce livre pour les amateurs de Ocaml
et ceux qui veulent comprendre la différence entre fonctionnel et
impératif, mais le déconseille pour apprendre le langage.




Les captures d'écran et les schémas d'explication agrémentent
la lecture du livre. En ce qui concerne les tableaux recapitulatifs sur les
bibliothèques, ils sont un aide mémoire précieux.



A noter que cet ouvrage est accessible gratuitement en ligne sur le site
d'OReilly
J'ai trouvé que certains chapitres étaient vraiments trop courts tel, par
exemple celui consacré aux outils d'analyses lexicale et syntaxique.

En outre, la francisation à outrance conduisant aux termes
code-octet et prise de communication pour
les termes byte code et soket utilisés par la profession
m'agace.



Pour exemple d'une application réelle réalisable avec ce langage,
nous avons Hevea, le convertisseur Latex HTML, qui a
convertit ce livre en page HTML ce qui est une belle démonstration
du potentiel de ce langage.









Table des matières



  • 1 : Comment obtenir Objective Caml
  • 2 : Programmation fonctionnelle
  • 3 : Programmation impérative
  • 4 : Styles fonctionnel et impératif
  • 5 : Interface graphique
  • 6 : Applications
  • 7 : Mode de compilation et portabilité
  • 8 : Bibliothèques
  • 9 : Récupérateur automatique de mémoire
  • 10 : Outils d'analyse des programmes
  • 11 : Outils d'analyses lexicale et syntaxique
  • 12 : Interopérabilité avec C
  • 13 : Applications
  • 14 : Programmation modulaire
  • 15 : Programmation par objets
  • 16 : Comparaison des modèles d'organisation
  • 17 : Applications
  • 18 : Communication et processus
  • 19 : Programmation concurrente
  • 20 : Programmation répartie
  • 21 : Applications
  • 22 : Développement d'applications en Objective Caml
  • Annexe A : Types cycliques
  • Annexe B : Objective Caml 2.99




Références



Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.