D'où ma question : est-ce que mon interrogation est naïve,
Ton interrogation est effectivement très naïve: tu remarques que tu as une structure du données, une procédure pour l'initialiser et des traitements sur cette structure. Cela veut juste dire que tu as introduit (sans le dire) un type de données, cela n'a rien à voir avec la programmation orientée objet. Ce qui caractérise la programmation objet c'est la relation d'héritage et les constructions qu'elle permet. Tu ne parles pas d'héritage, donc tu ne parles pas de programmation objet.
Je sais bien que fonctionnel/objet ne sont que des représentations d'un même code,
C'est faux, tu ne peux pas facilement traduire tout programme écrit pour le langage objet beta dans un langage fonctionnel alpha, et vice-versa.
J'accepte que l'on me réponde que le code est trop simpliste pour pouvoir mettre en évidence une différence, mais je voulais justement tester un cas réel et éloigné des constructions mathématiques que l'on retrouve habituellement en exemple…
Je ne comprends pas trop ce qu'il y a de plus réel dans ton exemple que dans d'autres… Si les exemples de ton livre de programmation sont mauvais, le livre est mauvais: il ne t'apprends pas à programmer. Le langage Caml est un des meilleurs livres de programmation qui soit, tu peux le télécharger sur le site de l'INRIA:
(Attention le sujet est Caml light pas OCaml, donc il y a de petites différences, la plus importante sont les parsers de flots qui sont un composant externe dans OCaml).
Je vois bien que j'ai utilisé des concepts propre au fonctionnel (pattern matching, code récursif, fermeture) mais je m'attendais à quelque chose de différent.
Attention, même si c'est un point fort de OCaml le pattern matching n'a rien à voir avec le paradigme de programmation fonctionnelle.
Quelques remarques en vrac sur ton code:
Tu devrais le réécrire pour n'appeler qu'une fois Str.regexp.
concat a; concat b se réécrit List.iter concat [a; b]: la séparation code et données est plus claire.
Pour ton code la regexp n'apporte vraiment rien, tu devrais essayer de traduire ton code en transformant ton texte en char Stream.t.
Courage avec OCaml, n'hésite pas à poser tes questions!
# Naïvité
Posté par Michaël (site web personnel) . En réponse au message Paradigme fonctionnel : juste un habillage ?. Évalué à 3.
Ton interrogation est effectivement très naïve: tu remarques que tu as une structure du données, une procédure pour l'initialiser et des traitements sur cette structure. Cela veut juste dire que tu as introduit (sans le dire) un type de données, cela n'a rien à voir avec la programmation orientée objet. Ce qui caractérise la programmation objet c'est la relation d'héritage et les constructions qu'elle permet. Tu ne parles pas d'héritage, donc tu ne parles pas de programmation objet.
C'est faux, tu ne peux pas facilement traduire tout programme écrit pour le langage objet beta dans un langage fonctionnel alpha, et vice-versa.
Je ne comprends pas trop ce qu'il y a de plus réel dans ton exemple que dans d'autres… Si les exemples de ton livre de programmation sont mauvais, le livre est mauvais: il ne t'apprends pas à programmer. Le langage Caml est un des meilleurs livres de programmation qui soit, tu peux le télécharger sur le site de l'INRIA:
http://caml.inria.fr/pub/distrib/books/llc.pdf
(Attention le sujet est Caml light pas OCaml, donc il y a de petites différences, la plus importante sont les parsers de flots qui sont un composant externe dans OCaml).
Attention, même si c'est un point fort de OCaml le pattern matching n'a rien à voir avec le paradigme de programmation fonctionnelle.
Quelques remarques en vrac sur ton code:
regexpn'apporte vraiment rien, tu devrais essayer de traduire ton code en transformant ton texte enchar Stream.t.Courage avec OCaml, n'hésite pas à poser tes questions!