5 langages de programmation fonctionnels à connaître
Publicité
Si vous passez du temps à lire les tendances de la programmation sur Internet, vous avez entendu parler de la programmation fonctionnelle. Le terme est utilisé assez souvent, mais que signifie-t-il?
Même si vous savez ce qu'est la programmation fonctionnelle, vous ne savez peut-être pas quelles langues lui conviennent le mieux. Après tout, tous les langages de programmation ne sont pas créés égaux. Bien que vous puissiez appliquer des paradigmes de programmation fonctionnels dans de nombreuses langues, vous pourrez vous sentir beaucoup plus à l'aise dans certains cas.
Qu'est-ce que la programmation fonctionnelle?
Si vous avez une formation en mathématiques, vous avez une longueur d'avance sur la programmation fonctionnelle. En effet, le paradigme de la programmation fonctionnelle traite l’informatique comme des fonctions mathématiques. Si vous n'avez pas de formation en mathématiques, vous risquez de vous sentir confus.
Fondamentalement, la programmation fonctionnelle considère les fonctions et les données comme immuables. Vous transmettez des données à une fonction, qui renvoie généralement les données transformées ou un autre type de données. En programmation fonctionnelle, la fonction ne doit jamais changer les données d'origine ni l'état du programme.
Il existe une similitude avec la philosophie Unix selon laquelle chaque programme devrait bien faire une chose. Une fonction ne doit pas toucher différentes parties de votre programme. Au lieu de cela, il devrait prendre son entrée et vous donner une sortie.
Idéalement, les fonctions doivent être pures autant que possible en programmation fonctionnelle. Cela signifie que, avec la même entrée, la sortie de la fonction restera toujours la même.
Programmation fonctionnelle ou orientée objet
C'est une rupture radicale avec quelque chose comme la programmation orientée objet. En programmation orientée objet, vous avez souvent un objet de base avec différentes méthodes dédiées à la modification des données ou de l'état faisant partie de cet objet. Une méthode peut même modifier les données ou l’état si elle n’est pas explicitement indiquée.
Dans les programmes pratiques, cela a parfois du sens. Cela dit, cela peut rendre les programmes plus difficiles à gérer, car ce qui modifie l'état ou les données n'est pas toujours clair. La programmation fonctionnelle était à l'origine utilisée dans les environnements universitaires, mais peut également aider à prévenir ce type de problèmes.
1. JavaScript
Certains langages de programmation permettent une programmation fonctionnelle, d’autres l’encouragent ou même l’appliquent. JavaScript tombe dans la première catégorie. Bien que vous puissiez utiliser des paradigmes de programmation fonctionnels dans le langage, vous pouvez tout aussi facilement utiliser une approche orientée objet.
Cela dit, de nombreux paradigmes de programmation fonctionnels sont intégrés à JavaScript. Prenons, par exemple, les fonctions d'ordre supérieur. Ce sont des fonctions qui peuvent prendre d’autres fonctions comme arguments.
JavaScript possède plusieurs fonctions qui fonctionnent avec des tableaux tels que map()
, reduce()
, filter()
et autres, qui sont toutes des fonctions d'ordre supérieur. Cela vous permet de les chaîner ensemble pour faire rapidement toutes sortes de choses avec un tableau.
Au début, javascript posait des problèmes de mutabilité, mais les nouvelles versions de la norme ECMAScript apportent des correctifs. Au lieu du mot-clé var
-catch pour la définition des variables, vous avez maintenant const
et let
. Le premier vous permet de définir des constantes, comme son nom l’indique. La seconde, let
, limite la portée d'une variable à la fonction dans laquelle elle est déclarée.
2. Python
Comme JavaScript, Python est un langage généralisé avec lequel vous pouvez utiliser un grand nombre de paradigmes de programmation. Python peut avoir ses inconvénients 4 raisons pour lesquelles Python n'est pas le langage de programmation pour vous 4 raisons pour lesquelles Python n'est pas le langage de programmation pour vous Le langage de programmation Python est extrêmement populaire, mais voici quelques raisons pour lesquelles vous voudrez peut-être éviter Python . Lisez-en plus, mais la programmation fonctionnelle n'en fait pas partie. Il existe même une introduction à la programmation fonctionnelle dans la documentation officielle de Python.
Pour commencer, vous trouverez bon nombre des mêmes fonctions intégrées map()
, filter()
, reduce()
et similaires mentionnées ci-dessus. Comme avec JavaScript, ce sont des fonctions d'ordre supérieur, car elles prennent d'autres fonctions en argument. En Python, la programmation fonctionnelle présente un avantage sous la forme du mot clé lambda
.
Vous pouvez utiliser les expressions lambda de plusieurs manières. Une façon de l’utiliser est comme raccourci pour des fonctions simples. Lorsque vous affectez une variable, vous pouvez appeler des expressions lambda exactement comme vous le feriez avec une fonction Python standard. Le véritable avantage des expressions lambda réside dans leur utilisation en tant que fonctions anonymes.
Les fonctions anonymes fonctionnent également en JavaScript et dans d'autres langues de cette liste. Elles sont particulièrement utiles lorsqu'elles sont utilisées avec des fonctions d'ordre supérieur, car vous pouvez les définir sur place. Sans fonctions anonymes, il vous faudrait prédéfinir des ajouts, même simples, en tant que fonctions sur mesure.
3. Clojure
Contrairement à JavaScript et à Python, Clojure n'est peut-être pas un nom familier, même parmi les programmeurs. Si vous ne le connaissez pas, Clojure est un dialecte du langage de programmation Lisp, qui remonte à la fin des années 50. Cela apporte une manière très spécifique de faire des choses qui se révèlent parfaites pour la programmation fonctionnelle.
Comme les autres dialectes Lisp, Clojure traite le code comme une donnée. Cela signifie que le code peut effectivement se modifier. Contrairement aux autres dialectes Lisp, Clojure fonctionne sur la plate-forme Java et est compilé en bytecode JVM. Cela signifie que cela peut fonctionner avec les bibliothèques Java, qu'elles aient été écrites ou non dans Clojure.
Contrairement aux langages précédents de cette liste, Clojure est un langage de programmation fonctionnel complet. Cela signifie qu’il préconise l’immuabilité dans la mesure du possible, en particulier au sein des structures de données.
Clojure ne s'attend pas à ce que tous les programmes soient mathématiquement «prouvables», mais encourage l'utilisation de fonctions pures autant que possible.
4. orme
Elm est l’un des langages les plus récents de cette liste. Il s’agit d’un langage purement fonctionnel, conçu à l’origine par Evan Czaplicki en 2012. Ce langage a gagné en popularité parmi les développeurs Web, en particulier pour la création d’interfaces utilisateur.
Contrairement à toutes les entrées précédentes de cette liste, Elm utilise la vérification de type statique. Cela permet de garantir l'absence d'exceptions d'exécution, les erreurs étant interceptées au moment de la compilation. Cela signifie des erreurs moins visibles pour les utilisateurs, ce qui est un atout majeur.
Le compilateur Elm cible HTML, CSS et JavaScript. De la même manière que vous pouvez utiliser Clojure pour écrire des programmes fonctionnant en Java, vous pouvez écrire des applications qui utilisent des bibliothèques JavaScript dans Elm.
Une différence majeure entre Elm et les autres langues est que vous ne trouverez pas de filter()
générique filter()
, de map()
et de fonctions similaires. Au lieu de cela, ils sont définis par un type de données tel que List.map
ou Dict.map
.
5. Haskell
Haskell est un autre langage purement fonctionnel typé statiquement. Contrairement à Elm, Haskell existe depuis un moment. La première version du langage a été conçue en 1990. La dernière norme est Haskell 2010, tandis que la prochaine version est prévue pour 2020.
Comme nous l'avons déjà expliqué, la nature purement fonctionnelle de Haskell signifie que, de par leur conception, les fonctions ne devraient pas avoir d'effets secondaires. Cela le rend bien adapté à la résolution de problèmes concrets malgré les racines de la programmation fonctionnelle dans le monde universitaire.
En dépit de son manque de popularité, Haskell a été utilisé dans certains projets largement utilisés. Le gestionnaire de fenêtres Xmonad est entièrement écrit en Haskell. Pandoc, qui convertit différents types de balises vers et à partir d'autres formats, utilise également le langage.
Les fonctions standard map()
, filter()
, reduce()
et d'autres fonctions d'ordre supérieur sont présentes, ce qui devrait vous permettre de passer des concepts de JavaScript ou Python à Haskell. Si vous voulez en savoir plus sur la langue, apprendre un Haskell est un point de départ populaire.
Êtes-vous nouveau en programmation?
Certains des termes et langues ci-dessus peuvent sembler quelque peu ésotériques si vous n'êtes pas encore un codeur chevronné. C'est bien, car savoir ce que vous ne savez pas est l'une des premières étapes pour devenir un meilleur apprenant.
Certaines des langues énumérées ci-dessus sont meilleures pour les débutants que d’autres. Consultez notre liste des meilleurs langages de programmation pour débutants. Vous remarquerez qu'il y a un chevauchement entre les deux listes.
Et si cela vous intéresse, consultez notre guide pour créer un site Web simple en PHP. Comment créer un site Web simple en PHP. Comment créer un site Web en PHP simple. Vous souhaitez créer un site Web sans savoir par où commencer? Créer un site Web PHP de base vous mettra sur la voie du développement Web. Lire la suite .
Explorez plus sur: la programmation fonctionnelle, JavaScript, Python.