Apprenez à programmer en Caml Light

Venez découvrir le langage de programmation Caml Light !

a marqué ce sujet comme résolu.

Bonjour à tous,

J'ai commencé (il y a quelques temps) la rédaction d'un tutoriel dont l'intitulé est Apprenez à programmer en Caml Light.
J'aimerais obtenir un maximum de retour sur celui-ci, sur le fond ainsi que sur la forme, afin de proposer en validation un texte de qualité.

Si vous êtes intéressé, rendez-vous ici :

Sachez par ailleurs deux choses :

  • Tout d’abord ce tutoriel a été auparavant publié sur OC. La version que je vous propose ici a été un peu modifiée/avancée depuis, afin de fournir un meilleur contenu.
  • Ensuite, je suis en deuxième année de prépa, il ne faut donc pas compter que j’avance la rédaction avant quelques temps je pense ! Mais je reprendrai bien volontiers dès que j’en aurai le temps, bien sûr ! ;) Et ce n’est pas parce que je n’ai pas le temps de me consacrer à la rédaction que je ne peux pas lire vos réactions, alors n’hésitez pas à me faire vos remarques. Merci d'avance pour votre aide

PS : Je ne sais en revanche pas dans quelle catégorie classer ce tutoriel, puisqu’il ne s’agit pas d’OCaml… Que feriez-vous ?

+0 -0

PS : Je ne sais en revanche pas dans quelle catégorie classer ce tutoriel, puisqu’il ne s’agit pas d’OCaml… Que feriez-vous ?

On créera une catégorie au besoin. Cela ne devrait pas poser de pépins.

+0 -0

Question bête mais attendue : Pourquoi Caml Light et pas OCaml (éventuellement en se restreignant à un sous-ensemble de celui-ci) ?

Il n'y a pas eu de realese depuis 2002, et même le site officiel recommande de lui préférer OCaml (« For most other uses [que l'éducation], we recommend switching to its successor OCaml. »).

+0 -0

Tout simplement parce que je n'ai pas appris le OCaml mais le Caml Light, et que tant que j'en aurai besoin pour mes concours (en fin d'année), je ne veux pas me mélanger les pinceaux antre ceux deux langages ! Donc je ne compte pas apprendre OCaml pour le moment.

De plus, il y a encore des prépas comme la mienne où le langage enseigné reste encore le Caml Light et que les infos là-dessus ne sont pas facilement trouvables sur le net, ou alors pas assez complètes… (ou alors je suis très difficile :p ). J'espère bien sûr que les profs de prépa se modernisent et passent à OCaml, mais en attendant, le cours est sur Caml Light. :)

J'espère bien sûr que les profs de prépa se modernisent et passent à OCaml, mais en attendant, le cours est sur Caml Light. :)

vinc'

En fait, c'est le programme qui impose Caml Light.

+2 -0

Je trouve ça aussi déplorable, mais c'est toujours mieux que Pascal. Après, je ne doute pas qu'un langage très fonctionnel est important en prépa MP, mais faut aussi savoir qu'en physique en tout cas, Python a été introduit il me semble.

Il y a l'informatique pour tous (Python, deux heures par semaine, pour tout le monde) et l'option informatique (Caml Light, trois heures par semaine, pour certains (les autres faisant SI)).

+0 -0

En fait, c'est le programme qui impose Caml Light.

Vayel

Exact, après vérification (ici), le Caml Light est le seul langage recommandé.

Le Python a bien été introduit pour tous mais il y a ici des gens qui ont bien plus de connaissances que moi sur ce sujet, je ne suis qu'un novice dans ce langage ^^ .

En fait, c'est le programme qui impose Caml Light.

Vayel

Exact, après vérification (ici), le Caml Light est le seul langage recommandé.

Le Python a bien été introduit pour tous mais il y a ici des gens qui ont bien plus de connaissances que moi sur ce sujet, je ne suis qu'un novice dans ce langage ^^ .

vinc'

C'est étrange, on ne fait que du OCaml nous, on nous a dit que ce n'était pas important, et plus intéressant de faire du OCaml … et pourtant je suis loin d'être dans une mauvaise prépa !

Mais de toute façon, on sait pas vraiment ce qu'ils vont pondre pour les concours, j'ai déjà eu des retours de prof me disant que les sujets centrales de l'info commune serait en Scilab … jusqu'à ce que les profs d'info viennent rappeler que seul python était au programme. :'D

C'est une bonne initiative en tout cas ! ça change des langages usuels, et en plus c'est fait par des chercheurs pour des chercheurs, avec toute rigueur !

Certains prof se sont mis à jour, mais vu que tous les bouquins d'options info sont en Caml light, la plupart des profs continuent de s'en servir. En prépa, on utilisait aussi Caml Light, mais au final pour le concours, vu que la syntax des deux est la même à peu près et que tes correcteurs ne feront sûrement pas attention à la différence, ça ne changera rien. Pour les épreuves sur machine on avait eu le choix en Caml/OCaml sur Linux, sur Windows c'était Caml Light imposé. Mais bon, si j'ai bien compris le programme a bien changé depuis l'an dernier.

Au sujet de ton tuto, je trouve ça bizarre d'annoncer au lecteurs que tu vas leur apprendre un langage dont plus personne ne se sert, personnellement ça me rebuterait. Mais bon, c'est vrai que le pas à franchir n'est pas si grand que ça entre Caml et Ocaml.

Au niveau du contenu, je trouve tes chapitres assez courts, notamment celui sur le protocole. De plus, il manque des exemples pratiques à mon avis, par exemple dans le chapitre sur la récursivité, tu pourrais parler des tours de Hanoï.

En tout cas je te souhaite bonne chance pour ton tuto car OCaml est un bon langage qui mérite d'être connu.

Mais de toute façon, on sait pas vraiment ce qu'ils vont pondre pour les concours, j'ai déjà eu des retours de prof me disant que les sujets centrales de l'info commune serait en Scilab … jusqu'à ce que les profs d'info viennent rappeler que seul python était au programme. :'D

Le programme reste assez flou sur ce point en fait ; cf http://prepas.org/ups.php?article=23 lien "informatique" ; avec des phrases assez alambiquées et limites contradictoires :

Au premier semestre, l’enseignement se fonde sur un environnement de programmation (langage et bibliothèques) basé sur un langage interprété largement répandu et à source libre. Au moment de la conception de ce programme, l’environnement sélectionné est Python.

....

Avant la fin du premier trimestre, un environnement de calcul scientifique est présenté et utilisé en lien avec l’étude des problèmes de simulation. Afin d’en permettre rapidement une utilisation dans d’autres enseignements, une séance de présentation de cet environnement sera prévue en fin de premier trimestre. Au moment de la conception de ce programme, l’environnement sélectionné est Scilab.

L’étude approfondie de ces divers outils et environnements n’est pas une fin en soi et n’est pas un attendu du programme. Des textes réglementaires ultérieurs pourront mettre à jour ces choix d’outils et d’environnements en fonction des évolutions et des besoins.

(Partie ingénierie numérique) Au moment de l’élaboration de ces programmes d’enseignement, l’atelier logiciel Scilab ou le langage de programmation Python, avec les bibliothèques Numpy/Scipy, sont les environnements choisis.

– Juste pour la précision et désolé pour le HS.

Et juste pour revenir au sujet : pourquoi ne pas penser à, après les concours, modifier le cours pour la syntaxe OCaml, lorsque tu auras un peu de temps libre, si les langages sont si proches ça devrait pas poser trop de problèmes de migrer ?

+0 -0

Oulah, beaucoup de lecture ! Merci pour vos remarques, je vais tâcher de répondre à chacun. :)

@alexandre.janniaux : Je ne sais pas quelle est ta prépa, mais selon le texte officiel dont j’ai mis le lien plus haut, le programme recommande seulement le langage Caml Light. Mais cela ne me surprendrait pas que tu puisses te servir d'OCaml dans tes programmes, car pour les choses « de base » la syntaxe n’est probablement pas si éloignée entre ces deux langages. Et le OCaml est effectivement bien plus intéressant puisque ce langage est encore maintenu et qu’il permet de faire de la programmation orientée objet !

@cyru : Effectivement, peut-être que cela fait bizarre… J’avais ajouté cette précision à la suite de remarques faites lors de ma première pré-version (postée sur OC à l’époque…) mais il est vrai que cela ne fait pas très vendeur disons ! :p
En ce qui concerne davantage d’exemples, c’est une excellente idée, mais il faut pour cela des idées, ce que je n’ai pas vraiment actuellement ! Mais si tu as quelque chose à proposer, je serai enchanté de voir ce que je peux en faire.
Pour finir, merci pour ton encouragement, mais je te rappelle que mon tuto est sur le Caml Light et non le OCaml ! ;)

@Goeland-croquant : Je ne suis pas tellement chaud pour modifier ce cours, pais plutôt pour en faire un second, quitte à reprendre une bonne partie du travail déjà accompli pour celui-ci sur le Caml Light. Mais je ne pense pas faire disparaitre totalement le cours sur Caml Light (si du moins je le publie) car je me suis lancé dans la rédaction de celui-ci suite à ma frustration de ne pas avoir trouvé de « bon » cours dessus, donc ce serait contre mon idée de départ ^^. En revanche, pourquoi pas me mettre à l’OCaml après les concours et avoir intégré surtout, c’est ça qui compte le plus ! :D

Voilà, j'espère n'avoir oublié personne dans la bataille ! Je suis en vacances demain matin, j'aurai donc probablement un peu plus de temps à consacrer à Zeste de Savoir dans les jours à venir. N'hésitez pas à continuer à me faire des remarques sur ce que j'ai déjà rédigé, que je puisse ajuster ce qui ne va pas. Et encore merci pour votre aide !!

Salut, comme exemple, tu peux déjà donner des applications un peu simple, du genre un calcul d'approximation de pi en générant des point aléatoires, dans le cercle, dans ce genre ou par exemple le crible d'Eratosthène. Un exemple de TP, ça pourrait être une calculatrice en notation polonaise.

J'ai lu aussi un peu ton tuto, et je trouve que le rythme est très bon pour quelqu'un qui n'a jamais programmé. Un truc qui est gênant dans les interpréteurs comme CamlLight/Ocaml, c'est l'impossible d'utiliser les touches directionnelles pour éditer la ligne que tu as entré dans la ligne de commande, du coup tu peux installer un utilitaire comme rlwrap qui va s'occuper de gérer la ligne de commande, quand tu lances: rlwrap camllight, l'interpréteur est lancé et tu as la possibilité d'éditer tes commandes. C'est une astuce sympa que tu peux ajouter aux tuto.

Je n'ai pas tout lu, j'essayerai de le faire ce weekend, mais dans "Conditions et boucles", tu dis à un moment que 'a n'est pas un type, puis tu dis "un type 'a", en vérité c'est un type (si je ne me trompe pas), je pense qu'il vaut mieux même si c'est pour mieux expliquer ne pas faire d'approximation, surtout que le système de type de Caml est l'une des choses les plus dures à comprendre quand on débute dans ce langage. Ce serait bien dans une autres partie de détailler le système de type de Caml une fois que tu auras présenté les types sommes et enregistrements.

Salut,

En fait, c'est le programme qui impose Caml Light.

Vayel

Exact, après vérification (ici), le Caml Light est le seul langage recommandé.

vinc'

C'est étrange, on ne fait que du OCaml nous, on nous a dit que ce n'était pas important, et plus intéressant de faire du OCaml … et pourtant je suis loin d'être dans une mauvaise prépa !

alexandre.janniaux

Juste pour confirmer : le programme impose Caml Light (et il a enfin viré le Pascal avec le changement de programmes \o/), mais en pratique, on ne vous tiendra pas rigueur aux concours1 d’écrire en OCaml à la place : la syntaxe est pratiquement la même (de mémoire, l’une des seules différences concerne la définition de type (type truc == A|B en Caml Light vs. type truc = A|B en OCaml) et même les sujets font parfois la confusion. Ce qui peut être un peu plus gênant, c’est tous les noms des fonctions standards qui changent avec l’apparition des modules (string_lengthString.length, vect_lengthArray.length, etc.), mais d’une part la traduction paraît assez directe, et d’autre part vous n’aurez normalement pas à utiliser la bibliothèque standard dans les écrits. Donc c’est possible que l’examinateur ne voit même pas de différence. Et puis je pense qu’ils sont compréhensifs sur ce point (blâmer quelqu’un parce qu’il utilise la variante à jour — et largement ressemblante — du langage au lieu de la périmée ?). Bon, bien sûr, si vous commencez à programmer des objets, ça risque de tirer plus la tronche…

Voilà, pardon pour ces considérations HS et de pur bachotage.


Pour revenir au sujet, je trouve aussi dommage de se consacrer à Caml Light plutôt qu’OCaml. Si tu ne trouves pas beaucoup de ressources pour Caml Light (il y a ce cours de référence), il y a une raison : c’est un langage mort depuis des années qui n’est utilisé que dans les classes préparatoires françaises. OCaml est son prolongement actif, et c’est donc à OCaml que se consacre tout le monde.

Et, rassure-toi, OCaml n’est pratiquement qu’un sur-ensemble de Caml Light, donc l’adaptation ne sera pas très difficile. Ci-dessus j’ai déjà listé pratiquement toutes les modifications au langage existant. Si besoin, je peux dresser une liste plus complète (j’en avais faite une quand je craignais pour mes propres concours, je peux la retrouver), mais elle sera courte.
Édit : Bon, la liste de gasche fera très bien l’affaire. Comme tu vois, rien de bien dramatique pour les concours.

Je comprends bien que tu ne veuilles pas interférer avec tes concours, mais dans ce cas pourquoi ne pas attendre la fin de l’année pour te consacrer à l’écriture d’un cours ? J’ai de toute façon du mal à voir comment tu pourrais progresser dans la rédaction cette année…

Ceci dit, même si c’est Caml Light et pas OCaml, je suis très content que quelqu’un écrive un cours là-dessus pour ZdS. Bonne continuation, quoi que tu fasses !


  1. Au moins à X/ENS, aux autres peut-être un peu plus mais pas tant que ça, ça c’est très bien passé pour moi. 

+1 -0

Moi, m'sieur, j'ai une question !

Je suis en train de m'initier à OCaml. Je ne connais pas la syntaxe et j'ai du mal avec la programmation fonctionnelle. Qu'est-ce que la lecture de ce cours peut m'apporter ? À partir de quel moment est-ce que OCaml devient vraiment différent de Caml (Light) ?

En réponse à ta dernière question, OCaml ne se « différencie » pas vraiment de Caml Light à proprement parler. Il ne fait que le prolonger avec de nouvelles fonctionnalités. Tu peux programmer de la même façon en OCaml qu’en Caml Light. Simplement, tu as accès à plus de « techniques » en OCaml (les foncteurs par exemple). Quant à la syntaxe, il n’y a que des différences assez mineures et l’adaptation est rapide. Donc tu peux très bien apprendre avec un cours de Caml Light et t’en contenter dans un premier temps, quitte à poursuivre ensuite avec un cours d’OCaml en t’adaptant aux petites différences (à mon avis, la barrière la plus importante est le renommage des fonctions standards). Bien sûr, tant qu’à faire, autant prendre directement un cours d’OCaml…

+0 -0

Juste pour suggérer : un exercice qui peut s'avérer intéressant est de calculer automatiquement les dérivés de fonctions.

Tu génères un type pour les fonctions qui permet de représenter la plupart des fonctions de base (plus cos, sin, ln, exp si tu veux) et ensuite il y a plus qu'à faire un gros pattern matching pour dériver les fonctions.

Merci à tous les deux pour vos réponses, j'y vois un peu plus clair. :)

Le problème, Maëlan, c'est que les cours d'OCaml que je trouve sur Internet sont surtout des listings de fonctionnalités et d'éléments de syntaxe ; c'est pas vraiment (voire pas du tout) adapté à moi qui débute en programmation fonctionnelle. C'est surtout l'intérêt pour moi du cours qui est ici. :)

Et j'en suis pas là du tout, Saroupille. J'essaie déjà de faire un Plus ou Moins, alors un calcul de dérivée, tu penses xD

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte