[Haskell-fr] Caractérisation des langages fonctionnels

Valentin Robert valentin.robert.42 at gmail.com
Fri Mar 21 14:51:55 UTC 2014


Je serais plutôt de l'avis de Gautier et pense que la caractérisation de
Stéphane est un peu réductrice.

En pratique je trouve qu'un langage semble fonctionnel dès qu'il inclut des
mécanismes pour manipuler des fonctions comme citoyens de première classe
(valeurs fonctionelles, création de fonctions anonymes, fonctions d'ordre
supérieur).

C'est très général mais en première approximation, cela capture ce que
j'attends de tout langage qui se dit fonctionnel.

Il y a beaucoup de fonctionnalités qui sont souvent attachées aux langages
fonctionnels, mais que je ne considère pas nécessairement clés (types de
données algébriques, pureté, typage statique/dynamique ou non-typage,
portée statique/dynamique, ...).

- Valentin


2014-03-21 7:06 GMT-07:00 Gautier DI FOLCO <gautier.difolco at gmail.com>:

> Le 21 mars 2014 13:15, Stéphane Payrard <cognominal at gmail.com> a écrit :
>
> Etant autodidacte, je n'ai pas d'autorité particulière pour parler
>> d'un sujet d'origine académique. :)
>> De plus ma réponse est biaisée par mon intérêt pour les langages elm et
>> idris .
>>
>> La programmation fonctionnelle moderne tourne autour de deux thèmes,
>> celui de la
>> référence transparentielle et celui de type.
>>
>> Le premier est déjà mentionné implicitement sans indiquer le bénéfice
>> espéré : l'absence d'états permettrait aux compilateur de paralléliser
>> et d'utiliser au mieux les architectures multiprocesseurs.
>> En pratique, sauf dans des cas spécialisés (grosses matrices, rendu
>> graphique), ce bénéfice ne s'est guère matérialisé.
>> Pourtant, c'est cette perspective qui a motivé le développement des
>> langages fonctionnels pour résoudre le goulot d'étranglement de
>> l'architecture de Von Neumann. Voir le papier de Backus en 1977 :
>>
>> https://www.cs.ucf.edu/~dcm/Teaching/COT4810-Fall%202012/Literature/Backus.pdf
>>
>>
>> La notion de type permet pour les langages les moins "riches"
>> (polymorphiques de niveau
>> 1) d'offrir l'inférence de type. Tandis des langages langages comme
>> idris proposent des types paramétrés par des valeurs ce qui permet un
>> système plus riche mais oblige à beaucoup d'annotations de type. C'est
>> pourquoi ces langages étaient jusqu'à maintenant spécialisés dans des
>> domaines comme la création de prevues formels.
>> Le domaine est encore revitalisé par la découverte des similarités
>> entre un champ de la topologie et la théorie des types. Mais je ne
>> sais pas si (ou quand) cela aura un impact en dehors des milieux
>> académiques. Voir http://homotopytypetheory.org/
>>
>> Il est intéressant de noter que la syntaxe de beaucoup de langages
>> fonctionnels est héritée d'ISWIM, un langage hypothétique présenté par
>> Landin dans un papier de 1966.
>> http://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf
>>
>> Finalement, un sujet connexe est la programmation réactive
>> fonctionnelle. Un des intérêts est de permettre
>> le type de programmation interactive prônée par Bret Victor mais
>> probablement impossible dans tout autre contexte. Bret Victor semble
>> délibérément ignorer cette contrainte en proposant des démos qui la
>> cachent.
>> Dans ce domaine un langage est particulièrement prometteur :  elm.
>> La société Prezi entend utiliser elm pour les prochaines versions de
>> son produit et a embauché le créateur
>> du langage, ce qui pourrait garantir sa pérennité. Même si la
>> programmation réactive fonctionnelle est un sous champ de la
>> programmation fonctionnelle, un programme généré par elm a le mérite
>> de tourner dans un browser et de permettre des démos interactives ce
>> qui rend le sujet moins aride.
>>
>> http://elm-lang.org/blog/Interactive-Programming.elm
>> http://worrydream.com/LearnableProgramming/
>>
>>
>>
>>
>>
>> On 3/21/14, Laurent Pierron <Laurent.Pierron at inria.fr> wrote:
>> > Bonjour,
>> >
>> > Récemment je me suis posé la question avec un collègue pour introduire
>> un
>> > séminaire interne sur les langages fonctionnels, et on n'a pas réussi à
>> > trouver une réponse satisfaisante, on s'est heurté aux différents types
>> de
>> > langage fonctionnel (Lisp, ML famille, Haskell, etc.), qui peuvent
>> inclure
>> > des éléments de langages impératifs, des objets, des types algébriques
>> ou
>> > uniquement des types simples et qui ont des stratégies d'évaluation
>> > différentes.
>> >
>> > Personnellement, je dirais que dans un langage de fonctionnel
>> l'exécution
>> > d'un programme se fait uniquement par substitution d'expression sans
>> > modification de l'état d'une machine alors que dans un langage impératif
>> > l'exécution se fait par évaluation d'expression et modification de
>> l'état de
>> > la machine.
>> >
>> > On peut aussi dire que les langages fonctionnels sont basés sur le
>> > lambda-calcul de Church, alors que les langages impératifs sont basés
>> sur la
>> > machine de Turing, mais il faut expliquer ce qu'est le lambda-calcul.
>> >
>> >
>> > Laurent Pierron
>> >
>> > Le 20 mars 2014 à 11:26, Gautier DI FOLCO <gautier.difolco at gmail.com> a
>> > écrit :
>> >
>> > Bonjour,
>> >
>> > Je vais peut-être poser une question très générale, mais qu'est-ce qui
>> > caractérise un langage de programmation fonctionnel ?
>> > Je m'explique :
>> >  - je sais qu'un LPF se base sur des expressions
>> >  - je sais en reconnaître un quand j'en vois un
>> >
>> > mais chaque fois qu'on me pose la question, je ne suis pas foutu de
>> donner
>> > des éléments caractéristiques clairs.
>> >
>> > Est-ce que vous auriez une "phrase toute faite" ou quelque chose qui me
>> > permette de l'expliquer simplement/clairement de manière juste ?
>> >
>> > Merci par avance.
>> > _______________________________________________
>> > Haskell-fr mailing list
>> > Haskell-fr at haskell.org
>> > http://www.haskell.org/mailman/listinfo/haskell-fr
>> >
>> > _______________________________________________
>> > Haskell-fr mailing list
>> > Haskell-fr at haskell.org
>> > http://www.haskell.org/mailman/listinfo/haskell-fr
>> >
>>
>>
>> --
>> cognominal stef
>> _______________________________________________
>> Haskell-fr mailing list
>> Haskell-fr at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-fr
>>
>
> Je suis un peu dans le même cas, mais comme dans mes cercles je suis "le
> plus calé en FP" et qu'en plus je tente "d’évangéliser", j'ai de gros
> efforts pédagogiques à fournir (ce qui n'est pas mon point fort).
> Le soucis avec ces critères, transparence référentielle et typage
> fort/statique, c'est que du coup tu sors Scala et Clojure par exemple.
>
> PS : je suis sur du Data-flow en ce moment du coup je connais un peu le
> FRP, mais j'avoue ne pas avoir fait le lien avec Bret Victor.
>
> _______________________________________________
> Haskell-fr mailing list
> Haskell-fr at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-fr
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-fr/attachments/20140321/6b9919ce/attachment.html>


More information about the Haskell-fr mailing list