[Haskell-fr] Caractérisation des langages fonctionnels

Gautier DI FOLCO gautier.difolco at gmail.com
Fri Mar 21 14:06:42 UTC 2014


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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-fr/attachments/20140321/fd97d86a/attachment.html>


More information about the Haskell-fr mailing list