Un langage fonctionnel strict comme Haskell est un langage où tout est fonction, il n'y a pas d'"instructions". Un programme est donc un ensemble de déclarations et d'équations, contrairement aux langages impératifs ( = "non fonctionnels") où un programme est une séquence d'opérations à exécuter.
Quelques avantages :
- c'est un langage de haut niveau. Un programme en Haskell est centré sur le problème et l'algorithme, pas sur la machine et l'exécution
- grand pouvoir d'abstraction : par exemple, les fonctions et les expressions sont elles-mêmes des objets du langage, on peut les manipuler ou construire à l'exécution
- "lazy evaluation" : les expressions sont calculées au moment où on en a besoin, pas au moment où l'on les déclare. Cela permet au compilateur d'optimiser l'ordre des calculs, voire de les paralléliser ou encore d'éviter des calculs coûteux si on s'aperçoit plus tard que finalement ils ne serviront pas... Sans parler du fait que ça simplifie *énormément* l'écriture du code
- programmation modulaire : Haskell pousse naturellement le programmeur à écrire du code générique, maintenable et réutilisable, avec des interfaces bien définies. Il est strictement impossible (oui, impossible) de faire des effets de bord
Quelques inconvénients :
- c'est moins connu et moins intuitif, voire un peu académique. Programmer en Haskell demande généralement un travail de réflexion plus important que Java ou C
- communauté restreinte : même si on trouve à peu près tout ce dont on a besoin pour Haskell, on est loin du nombre de bibliothèques et outils qui existent pour C par exemple
- c'est plus lourd. Même s'il existe aujourd'hui des compilateurs performants pour ce type de langage (GHC, ObjectiveCaml...), un programme bien écrit en C a toujours des chances d'être plus efficace et plus léger, surtout pour les petites applications et/ou quand le programmeur n'est pas expérimenté
[^] # Re: c'est quoi un language fonctionnel ?
Posté par Anonyme . En réponse à la dépêche Two Dozens Short Lessons in Haskell. Évalué à 0.
Quelques avantages :
- c'est un langage de haut niveau. Un programme en Haskell est centré sur le problème et l'algorithme, pas sur la machine et l'exécution
- grand pouvoir d'abstraction : par exemple, les fonctions et les expressions sont elles-mêmes des objets du langage, on peut les manipuler ou construire à l'exécution
- "lazy evaluation" : les expressions sont calculées au moment où on en a besoin, pas au moment où l'on les déclare. Cela permet au compilateur d'optimiser l'ordre des calculs, voire de les paralléliser ou encore d'éviter des calculs coûteux si on s'aperçoit plus tard que finalement ils ne serviront pas... Sans parler du fait que ça simplifie *énormément* l'écriture du code
- programmation modulaire : Haskell pousse naturellement le programmeur à écrire du code générique, maintenable et réutilisable, avec des interfaces bien définies. Il est strictement impossible (oui, impossible) de faire des effets de bord
Quelques inconvénients :
- c'est moins connu et moins intuitif, voire un peu académique. Programmer en Haskell demande généralement un travail de réflexion plus important que Java ou C
- communauté restreinte : même si on trouve à peu près tout ce dont on a besoin pour Haskell, on est loin du nombre de bibliothèques et outils qui existent pour C par exemple
- c'est plus lourd. Même s'il existe aujourd'hui des compilateurs performants pour ce type de langage (GHC, ObjectiveCaml...), un programme bien écrit en C a toujours des chances d'être plus efficace et plus léger, surtout pour les petites applications et/ou quand le programmeur n'est pas expérimenté