Depuis le début de ma carrière en tant qu'ingénieur calcul, j'ai souvent été confronté a des codes de calcul, des programmes de dépouillements écrits dans différents langages tels que FORTRAN, C#, C++ voir même VISUAL-BASIC.
Ces programmes, souvent bugués, mal documentés et dont les codes sources parfois mal maintenus, m'ont amené à réfléchir sur la programmation informatique dans le domaine scientifique. Je me suis particulièrement intéressé à certains langages de programmation assez peu connus (car non enseignés dans les cursus techniques) et pourtant très intéressant pour le calcul scientifique : Les langages fonctionnels.
Parmi ces langages, on peut citer:
LISP (Le plus ancien et probablement le plus connu).
OCAML (Développé par l'INRIA).
Haskell.
Erlang (créé par Ericsson).
et quelques autres….
Pour diverses raisons, mon choix s'est porté sur : Haskell.
Haskell est un langage de programmation fonctionnel, multi-plateforme dont le développement a débuté vers 1990. Les principaux points forts de ce langage sont:
Langage fonctionnel pur (Pas d'effets de bords, pas de réaffectation de variables,… ).
Typage fort (Pas de conversions implicites des types de données et détection des erreurs de typage par le compilateur).
Évaluation paresseuse (Les fonctions ne sont évaluées qu'en cas de nécessité).
et il possède d'autres avantages:
C'est un langage compilé (bonnes performances).
Parallélisation plus facile des programmes.
Il est possible de tester ses fonctions dans un mode interactif (Facilite le développement et les tests).
L'organisation du code source est basée sur l'indentation (comme Python) et facilite (impose) la lisibilité du code.
Il est possible d'utiliser des bibliothèques écrites en C (GTK+, Cairo, wxWidget, OpenGL, GLUT, …) .
Il est possible d'appeler des fonctions écrites en Haskell à partir d'autres langages (comme le C).
Actuellement je programme quelques outils de dépouillement écrit en Haskell en combinaison avec GTK+ (Bibliothèque graphique) et Cairo (Bibliothèque de dessin) à des fins de test.
Voici quelques captures écrans de certains de ces programmes fonctionnant en ligne de commande et en mode fenêtré:
Et quelques extraits de codes sources montrant la syntaxe particulière et concise de Haskell :
Jusqu'à présent mon retour sur Haskell est très bon et je poursuis mon apprentissage sur ce langage. Je ne manquerais pas d'ici quelques mois de mettre en ligne certains de ces programmes accompagnés du code source commenté afin de pouvoir servir de base à d'autres personnes.
Si vous souhaitez en savoir plus sur Haskell ou débuter avec ce langage, je vous recommande les liens suivant:
Haskell sur Wikipédia : L'article concernant Haskell sur Wikipédia.
Try Haskell : Un tutoriel interactif en ligne pour apprendre les bases du langage.
Haskell : An advanced purely-functional programming language : Le site officiel du langage et lien vers les différentes ressources.
Haskell Plateform : La plateforme de développement de Haskell disponible sur plusieurs plateformes (Linux, Windows, Mac](The Haskell Platform).
Apprendre Haskell vous fera le plus grand bien! : Un tutoriel très complet sur Haskell traduit du tutoriel anglais "Learn You A Haskell For Great Good!".
Tutoriel Haskell sur Openclassrooms: Le tutoriel Haskell sur Openclassrooms.