A "generic" lexer in Caml Light

mariano@soleil.decnet.citilille.fr
Thu, 22 Oct 92 08:36:41 +0100

Date: Thu, 22 Oct 92 08:36:41 +0100
From: mariano@soleil.decnet.citilille.fr
To: @camlist@inria.fr

A quoi sert CAML???
*******************
Je repose ma question sur l'utilite de CAML(light) mais de facon
plus directe, je n'ai sans doute pas ete assez clair...

choisissez parmi les questions suivantes celle qui vous interpelle
le plus!

A) Du point de vue UTILISATEUR ("quelconque",scientifique ou non)
(et j'insiste sur l'aspect 'utilisation')
a quoi servent les langages de la famille ML?

B) les CAMLs peuvent ils remplacer le C (par ex.) pour developper?
B1) dans (tous les)(la plupart des)(en aucun) cas ?
B2) y a-t-on interet ?

C) peut on envisager raisonnablement une application complexe
(de haut niveau, style calcul formel, syst. exp. etc) utilisant
toutes les ressources d'une machine (utilisation graphique, gestion
souris, gestion de fichiers...) ecrite en CAML(light)?

*************
Autre sujet : Le livre "Concepts et outils de programmation
style fonctionnel style imperatif CAML et ADA"
(Editions InterEditions)

* Peut on intervenir ici a propos de ce livre?
(y a t il un public interesse par ce sujet?)
* Notamment, une comparaison entre ce livre et
"Structure et interpretation des programmes informatiques" aux
meme editions me semble interessante...
* Je suppose que les auteurs sont a` l'ecoute, me trompe-je?
Doit-on s'adresser directement a` eux? et ou?

P.S. Mes reponses a d'eventuels correspondants risquent de se faire
attendre, je suis en effet sous les drapeaux actuellement et
je profite de mes permissions pour repondre...toutes mes excuses...

Georges.

[Note du mode'rateur:
Mes re'ponses a` vos questions:

A) A programmer vite et bien.

B) La re'ponse est OUI.
B1) Dans tous les cas ou` il s'agit d'e'crire des programmes
complexes, en particulier des programmes qui font de la
manipulation symbolique. Egalement dans les cas ou` la gestion me'moire
a` la main serait un casse-te^te source d'erreurs tre`s difficiles
a` e'radiquer. En revanche, pour e'crire des programmes de
tre`s bas niveau, tre`s proches du syste`me d'exploitation,
comme un pilote d'imprimante (et plus ge'ne'ralement un pilote
de pe'riphe'rique (en anglais device driver)) restez en C.
Il faut aussi remarquer que l'interfac,age de C et de CAML est
possible, voir bien de'crit (Caml Light). Il est donc possible
d'e'crire certaines parties de votre logiciel directement en C.
B2) On y a inte're^t pour e'crire des programmes ayant de grandes chances
de marcher dans tous les cas. Le typage fort et le filtrage
(pattern-matching) sont des avantages de'cisifs pour e'crire du code
lisible et correct.

C) Il n'y a aucun proble`me a` ge'rer une souris, a` faire du
graphique et a` ge'rer des fichiers en CAML. On a me^me un avantage de'cisif
avec les entre'es-sorties structure'es de CAML qui permettent
d'e'crire n'importe quelle VALEUR CAML sur disque puis de la relire en
pre'servant sa structure (partage y compris).
Une application de calcul formel constitue e'videmment une application
typique de CAML. On pourrait facilement y faire de la re'e'criture,
comple`ter des syste`mes de re`gles (KB est notre benchmark favori!).
Nous ne l'avons jamais fait parceque nous n'avons pas la
compe'tence dans l'algorithmique utilise'e en calcul formel. Mais je
suis persuade' que ce genre d'application serait tre`s facilement et
tre`s proprement e'crite en CAML (il y faut absolument un GC, un
me'ta-langage, des traitements formels comme de la re'e'criture, tous
domaines ou` CAML excelle).
D'ailleurs, la bibliothe`que de calcul des grands nombres (rationnels
en pre'cision arbitraire), de'ja` e'crite en CAML, est un outil de base pour
ce genre de logiciels, qui illustre tre`s bien le point B): cette
bibliothe`que est e'crite en CAML (6000 lignes) pour tout ce qui
concerne la gestion des rationnels (type ratio), des grands entiers
(type big_int), des grands nombres (type num) et de leurs ope'rations
associe'es. En effet les algorithmes employe's sont de haut niveau et
CAML permet bien d'exprimer les optimisations utilise'es.
En revanche la couche basse ope`re en place sur des entiers non
signe's stocke's dans des chai^nes de caracte`res (par exemple
l'addition de ces nombres stocke son re'sultat dans le premier
argument!). Cette couche est e'crite dans un langage de bas niveau:
en C par de'faut pour la portabilite', mais pour la plupart des
machines directement en assembleur (on gagne un facteur 4). On
be'ne'ficie ainsi d'une grande efficacite', a` la fois dans
l'expression d'optimisations complexes (au niveau CAML) et dans les
calculs bruts (au niveau assembleur).

*****************
Autre sujet: "Concepts et outils de programmation ..."

* On peut intervenir (mais rester poli!). Nous sommes tous plus ou
moins interesse's car plus ou moins professeurs aussi.

* Comparez, comparez ...

* Vous ne vous trompe-je pas. On peut s'addresser directement a` eux
s'il s'agit de les insulter ou dans cette tribune pour les fe'liciter
ou apporter des critiques constructives. Leurs adresses e'lectroniques
sont donzeau@margaux.inria.fr et hardin@margaux.inria.fr.

Pierre Weis
----------------------------------------------------------------------------
Formel Project
INRIA, BP 105, F-78153 Le Chesnay Cedex (France)
E-mail: Pierre.Weis@inria.fr
Telephone: +33 1 39 63 55 98
----------------------------------------------------------------------------
]