[Java] Programmation fonctionnelle
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

[Java] Programmation fonctionnelle



  1. #1
    invite82448160

    [Java] Programmation fonctionnelle


    ------

    Une discrète révolution est intervenue avec Java 8 : l'apparition des "functors" et des "expressions lambda qui permettent (enfin) un début de programmation fonctionnelle... On en parle ?

    -----

  2. #2
    invite82448160

    Re : [Java] Programmation fonctionnelle

    D'abord, qu'est-ce qu'un "functor" ?
    C'est tout simplement un objet-fonction ! Avant Java 8, il était impossible de passer une fonction en paramètre à une autre fonction. Depuis Java 8, c'est possible et facile !
    Prenons un exemple simple, avec un functor qui multiplie un entier par 2, qu'on passe en argument à la fonction println. Voici comment ça se passe :

    Nom : IMG_20230817_112128.jpg
Affichages : 132
Taille : 74,8 Ko

  3. #3
    pm42

    Re : [Java] Programmation fonctionnelle

    Bonjour. Sur ce forum, on demande de respecter cette formule de politesse.
    Et normalement, l'idée est plutôt de répondre à des questions, pas de servir de blog aux gens qui ont envie de parler d'un sujet.

    Pour ce qui est du sujet :
    - Java 8, c'est 2014 donc la "révolution" à presque 10 ans
    - Plutôt que functor, on parle de lambda notamment parce que la programmation fonctionnelle est liée à la théorie des catégories et qu'un functor y a une autre signification
    - avant Java 8, on faisait cela très facilement via les interfaces et leur implémentation anonyme. C'était un poil plus lourd mais pas du tout un problème
    - c'était tout sauf une révolution quand c'est apparu dans Java vu que le concept existait et était implémenté depuis des décennies dans d'autres langages.
    - la programmation fonctionnelle ce n'est pas de pouvoir passer des fonctions comme argument. On sait faire ça dans plein de langages dont le C et même l'assembleur (forcément). C'est avant tout de traiter les programmes comme de pures fonctions au sens mathématique et donc de ne pas avoir d'effets de bords ce qui veut pas pas d'affectation à des variables, des structures (listes, dictionnaires...) immuables. Java en est encore loin.
    - si on veut faire du fonctionnel, il y a des langages beaucoup plus adaptés : Haskell, OCaml, certaines variantes de Lisp et dans le monde Java/JVM, Scala et Clojure notamment.

  4. #4
    invite82448160

    Re : [Java] Programmation fonctionnelle

    Désolée si je me suis trompée sur la philosophie du forum, même si je ne vois pas très bien en quoi j'ai commis une impolitesse... De toutes façons, je ne vais pas rester : il y a trop de contraintes ici (validation préalable d'un nouveau sujet par un modérateur, délai limité pour éditer un message, etc).

    Sur le fond :
    - Je suis d'accord sur le fait qu'appeler functors les interfaces fonctionnelles de Java est un peu un abus de langage, mais le terme étant consacré par l'usage, je l'ai utilisé par commodité de langage, comme beaucoup de monde.
    - Je n'ai pas dit que c'était une révolution en soi (en effet cela existait déjà depuis pas mal de temps dans certains langages), mais que c'en était une pour Java (même si elle remonte à près de 10 ans... Et alors ?).
    - functor (ou, si vous préférez, interface fonctionnelle) ne sont pas synonymes.
    - "un poil plus lourd..." Le mot est faible quand on voit ce qu'il fallait se taper avec les implémentations anonyme, comparé à ce qu'on fait maintenant en une ligne !
    - Ça ne fait pas de Java un vrai langage fonctionnel, mais ça a le mérite d'exister et de beaucoup faciliter certaines choses, tout en préservant la grande polyvalence du langage...
    - La question n'est pas de savoir si on "veut" faire du fonctionnel (ce n'est pas une fin en soi), mais si une couche de fonctionnel (même imparfaite au point de s'attirer les foudres de certains puristes...) peut rendre service. Dans Java, la réponse est clairement oui !

  5. A voir en vidéo sur Futura
  6. #5
    pm42

    Re : [Java] Programmation fonctionnelle

    Citation Envoyé par Fabienne Voir le message
    Désolée si je me suis trompée sur la philosophie du forum, même si je ne vois pas très bien en quoi j'ai commis une impolitesse...
    La charte demande qu'on dise bonjour.

    Citation Envoyé par Fabienne Voir le message
    - Je suis d'accord sur le fait qu'appeler functors les interfaces fonctionnelles de Java est un peu un abus de langage, mais le terme étant consacré par l'usage, je l'ai utilisé par commodité de langage, comme beaucoup de monde.
    Confusion entre lambda et interface fonctionnelle qui sont 2 choses différentes.

    Citation Envoyé par Fabienne Voir le message
    - Je n'ai pas dit que c'était une révolution en soi (en effet cela existait déjà depuis pas mal de temps dans certains langages), mais que c'en était une pour Java (même si elle remonte à près de 10 ans... Et alors ?).
    10 ans plus tard et annoncer une "révolution" quand on avait déjà un mécanisme et qu'on a simplement ajouté quelque chose qui existe ailleurs, c'est quand même assez fort.

    Citation Envoyé par Fabienne Voir le message
    - La question n'est pas de savoir si on "veut" faire du fonctionnel (ce n'est pas une fin en soi), mais si une couche de fonctionnel (même imparfaite au point de s'attirer les foudres de certains puristes...) peut rendre service. Dans Java, la réponse est clairement oui !
    C'est gentil d'expliquer des évidences du niveau "Neige en novembre, Noël en décembre" mais effectivement, le forum n'est pas fait pour ça.

Discussions similaires

  1. Programmation Java...Help!
    Par invite37eb9680 dans le forum Programmation et langages, Algorithmique
    Réponses: 8
    Dernier message: 03/12/2015, 20h11
  2. Programmation Java
    Par invitead51e543 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 03/10/2012, 12h33
  3. Java Programmation
    Par livre dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 27/01/2006, 22h58
  4. Java programmation
    Par invite56460777 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 21/04/2005, 22h17
  5. programmation java
    Par invite49182f81 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 24/04/2003, 22h24