Petites expériences de programmation

Je suis en train de terminer le MOOC sur la programmation fonctionnelle en OCaml proposé par France-Université-Numérique. C'est une suite logique dans mes expérimentations de langages nouveaux après les MOOC de Coursera  (ici et ) sur la programmation fonctionnelle en Scala de l'année dernière.

Ma formation de base m'a principalement initié à la programmation impérative, légèrement matinée d'objet qui commençait à apparaître en industrie à l'époque. Le développement informatique n'étant pas ma spécialité, le reste a dû venir sur le tas, avec pas mal de lecture. Depuis le temps que certaines de mes connaissances me bassinaient avec la programmation fonctionnelle, il était temps de rafraîchir un peu mes connaissances.

L'intérêt d'un MOOC est qu'on est à nouveau en classe, avec des leçons et des devoirs pour s'entraîner, tout en étant capable de moduler selon des emplois du temps qui ne sont plus du type étudiant. C'est un assez bon compromis, même si ça grêve quand même le budget temps libre...

La programmation fonctionnelle et réactive a le vent en poupe en ce moment dans les technologies web qui veulent passer à l'échelle. L'autre grande application abordée lors des cours Ocaml concerne la réduction des bugs et la preuve de programme dans l'industrie (peut-être un MOOC sur Coq ?). Bref, ça semble effectivement très alléchant, mais qu'en est-il au final ?

Après ces deux expériences, je crois que ma manière de programmer a assez changé sur plusieurs points :

  1. Je réfléchis beaucoup plus en terme de calcul de valeur que d'algorithme à mémoire de style impératif. Par exemple, je me surprends à utiliser plus (trop ?) souvent la forme ternaire x=[prédicat]?y:z en C plutôt qu'une forme où j'initialiserais une variable à une valeur inutile avant de l'affecter dans une structure if..then..else .
  2. Ces cours m'ont donné une plus grande aisance sur l'application mathématique de la récursivité en programmation. J'ai un faible particulier pour ce raisonnement en maths et en général, mais avec des difficultés à le porter en informatique. Bien sûr, ce n'est pas très utile car la plupart du temps, la récursion n'est pas simplifiée par les compilateurs, ce qui la rend parfaitement contre-indiquée. Mais bon, c'est une bonne aide à écrire en mode « diviser et conquérir »
  3. L'introduction des monades et de fonctions de haut ordre a été une révélation qui a vraiment servi dans l'utilisation quotidienne de python.
  4. Culturellement, c'est toujours bon d'avoir quelques nouveaux points de répères pour aborder des problèmes de programmation, et ça joue de manière inconsciente.

Je suis très satisfait de ces expériences et s'il venait à apparaître des MOOC en Haskell, Lisp ou Erlang, je me laisserais sûrement tenter.

GodSlayer Sunday 06 December 2015 at 11:16 am | | Logiciels libres

No comments

(optional field)
(optional field)
Remember personal info?
Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.