
Lesley Fowler
0
5100
463
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 fonctionnelle dans de nombreuses langues, il y en a quand même où vous vous sentirez beaucoup plus à l'aise.
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, cela pourrait vous laisser 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 altérer des données ou des états 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 genre 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 a plusieurs fonctions qui fonctionnent avec des tableaux comme carte()
, réduire()
, filtre()
, et d'autres, qui sont tous 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 fourre-tout var
mot-clé pour la définition des variables, vous avez maintenant const
et laisser
. Le premier vous permet de définir des constantes, comme son nom l’indique. La deuxième, laisser
, 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 . , mais la programmation fonctionnelle n'en fait pas partie. Il y a même une introduction à la programmation fonctionnelle dans la documentation officielle de Python.
Pour commencer, vous trouverez plusieurs des mêmes carte()
, filtre()
, réduire()
, et fonctions similaires mentionnées ci-dessus intégrées. 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 forme de lambda
mot-clé.
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 être parfait 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 qu'il 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 “prouvable,” mais encourage à utiliser des fonctions pures autant que possible.
4. orme
Un des langages les plus récents de cette liste, Elm est 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 générique filtre()
, carte()
, et des fonctions similaires. Au lieu de cela, ils sont définis par type de données comme 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.
Le standard carte()
, filtre()
, réduire()
, 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 dans la 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. 6 Langages de programmation les plus faciles à apprendre pour les débutants. 6 Langages de programmation les plus faciles à apprendre pour les débutants. Apprendre à programmer consiste à trouver le bon langage autant que le processus d’édification. Voici les six langages de programmation les plus faciles pour les débutants. . Vous remarquerez qu'il y a un croisement entre les deux listes.