langage fonctionnel et programmation fonctionnelle
Dans un langage objet, tout est objet, tu n'as pas de type primitifs (1 et true et "hello" sont des objets, pas des valeurs primitives).
Dans un langage fonctionnel, les données sont immutables et les fonctions sont des données.
En Javascript, tu ne peux pas passer une fonction en tant que valeur à un Worker (thread/process) par exemple. Ce qui veut dire que la fonction n'est pas une valeur. Ce n'est donc pas un langage fonctionnel.
Toujours en Javascript, 1 n'est pas un objet, ce n'est donc pas un langage objet.
Cela n'empêche pas d'appliquer du mieux qu'on peut les concepts de ces 2 paradigmes.
A ma connaissance, seul Smalltalk est un vrai langage objet (le code en lui même est un objet que tu peux manipuler).
Concernant les langages fonctionnels, on va identifier 2 types :
purement fonctionnel (les effets de bords sont abstrait par le runtime) : Haskell / Purescript
les autres : Erlang / Elixir
Et donc par cette définition, non ni Javascript, ni Go, ni Python, ni C++, ni beaucoup de langages ne sont "objets" ou "fonctionnels". Ultimement tout ces langages se retrouvent exécuté par un CPU, donc représenté d'une manière ou d'une autre par une suite d'instruction assembleur. Donc a partir du moment ou ton langage est Turing-Complete, tu peux réutiliser ces paradigmes.
[^] # Re: J'ai pas écouté le podcast, mais mon grain de sel
Posté par David Delassus (site web personnel) . En réponse au lien Is functional programming the hipster programming paradigm?. Évalué à 3.
Parce que je fais la différence entre :
Dans un langage objet, tout est objet, tu n'as pas de type primitifs (
1ettrueet"hello"sont des objets, pas des valeurs primitives).Dans un langage fonctionnel, les données sont immutables et les fonctions sont des données.
En Javascript, tu ne peux pas passer une fonction en tant que valeur à un Worker (thread/process) par exemple. Ce qui veut dire que la fonction n'est pas une valeur. Ce n'est donc pas un langage fonctionnel.
Toujours en Javascript,
1n'est pas un objet, ce n'est donc pas un langage objet.Cela n'empêche pas d'appliquer du mieux qu'on peut les concepts de ces 2 paradigmes.
A ma connaissance, seul Smalltalk est un vrai langage objet (le code en lui même est un objet que tu peux manipuler).
Concernant les langages fonctionnels, on va identifier 2 types :
Et donc par cette définition, non ni Javascript, ni Go, ni Python, ni C++, ni beaucoup de langages ne sont "objets" ou "fonctionnels". Ultimement tout ces langages se retrouvent exécuté par un CPU, donc représenté d'une manière ou d'une autre par une suite d'instruction assembleur. Donc a partir du moment ou ton langage est Turing-Complete, tu peux réutiliser ces paradigmes.
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg