• [^] # Re: Et beh...

    Posté par (Mastodon) . En réponse à la dépêche Sortie de TOM 2.3. Évalué à 9.

    Je pense qu'OCaml demande un gros temps d'apprentissage (qui sera beaucoup plus réduit si on connait déjà un langage fonctionnel style Lisp), et est essentiellement utile pour faire des choses compliquées. Pour faire un logiciel simple, du genre de ceux qu'on fait en projet de programmation à la fac, le temps d'apprentissage est trop élevé pour valoir la peine. Bien sûr, une fois qu'on a appris, on peut s'en servir pour faire n'importe quoi, mais il y a une barrière assez élevée au début.

    Je ne suis pas franchement convaincu par l'idée d'enseigner aux étudiants à programmer en commençant par OCaml, comme ça a été fait dans certaines facs. Un langage de programmation, c'est un outil pour résoudre les problèmes. Si on n'a pas encore eu de problèmes, on ne peut pas correctement apprendre à les résoudre. Donc je pense qu'il vaut mieux commencer par un langage simplissime et pas trop abstrait, commencer à programmer, et quand on rencontre des obstacles, trouver des langages qui aident à les surmonter.
    Par exemple quand on se met à programmer à plusieurs et que la modularisation avec des .h atteint ses limites, on commence à mieux apprécier la programmation objet. Ou bien quand on se met à manipuler des structures de données abstraites et récursives, on se met à sérieusement apprécier la programmation fonctionnelle... du moins en ce qui me concerne.

    D'un autre côté, il y a des inconvénient à apprendre d'abord un langage comme le C et ensuite un langage comme OCaml. On commence en ayant peu de contraintes, et ensuite on se trouve face à quelque chose de beaucoup plus formel, qui demande un peu de discipline, et il est difficile de se débarrasser de ses mauvaises habitudes.
    Finalement, je ne sais pas ce qui est le mieux, comme ordre d'apprentissage, mais je comprend qu'on pense qu'OCaml est un langage sans applications quand on n'a pas encore souffert en essayant de faire quelque chose de vraiment compliqué dans ces langages préhistoriques que sont le C et ses dérivés (ce qui inclut Java, hein).