IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Cloud Computing Discussion :

La programmation fonctionnelle est-t-elle le futur ?


Sujet :

Cloud Computing

  1. #1
    Expert éminent sénior

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2014
    Messages : 194
    Points : 12 291
    Points
    12 291
    Par défaut La programmation fonctionnelle est-t-elle le futur ?
    La programmation fonctionnelle est-elle le futur ?
    Selon un adepte, « tous les langages modernes vont bientôt se baser sur ses principes »

    Un nouvel article sur Medium a attiré notre attention. Cette fois, il s’agit d’un article ayant pour titre « La programmation fonctionnelle devrait être la priorité n°1 en 2015 ».

    L’auteur de cet article affirme que « les langages orientés objet ne peuvent pas nous sauver du monstre qu’est le Cloud », ceci parce que ces « langages sont basés sur des états mutables » et ne simplifient pas « les modèles concurrents et le parallélisme au sein des applications », à l’inverse de la programmation fonctionnelle.

    Pour rappel, la programmation fonctionnelle est apparue il ya plus de 60 ans déjà avec Lisp. Selon la définition de Wikipédia, ce paradigme « considère le calcul en tant qu'évaluation de fonctions mathématiques et rejette le changement d'état et la mutation des données ». Pourtant, les langages impératifs comme le C avaient eu plus de succès dans le passé et même maintenant, surement à cause de leur efficacité en terme de temps d’exécution et de gestion de la mémoire.

    Pourtant, l’auteur de l’article que nous avons cité plus haut croit profondément que ceci pourrait changer avec la rapidité des ordinateurs actuels et la démocratisation du Cloud et du parallélisme massif.

    « Vous pouvez exécuter une fonction un millier de fois dans différents cores ou machines, vous n’allez pas obtenir des sorties différentes de ce que vous avez obtenu avant. Ainsi, vous pouvez utiliser le même code pour exécuter votre traitement dans un seul processeur aussi bien que dans 1000 processeurs. La vie peut être facile à nouveau ». Toutefois, ceci ne veut pas dire qu’il faut arrêter d’utiliser les états mutables. Au contraire, l’auteur assure que « l’idée principale de la programmation fonctionnelle est qu’il faut utiliser les états immutables seulement lorsqu’il est nécessaire ».

    Ces états qui ne changent pas durant l’exécution sont fournis dans ce type de langages grâce a deux concepts : les fonctions pures qui ont des entrées et des sorties, mais ne changent aucune valeur, elles sont donc indépendantes de l’environnement ou de l’ordre d’exécution du thread. Le deuxième concept est celui de l’état immutable dont l’exemple OCaml suivant illustre le principe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    let x = 5;;
    x = 6;;
     
    print_int x;;  (* prints 5 *)
    La programmation fonctionnelle pourra « nous sauver de la complexité de la synchronisation des threads », affirme l’auteur. « Elle peut nous aider à écrire de meilleurs programmes et réfléchir sur les problèmes que nous avons à résoudre […] Je peux dire que tous les langages modernes vont bientôt se baser sur ses principes » ceci parce que « le Java et le C++11 intègrent déjà les expressions lambda ».

    Source : Medium, Wikipédia

    Et vous ?

    Êtes-vous d’accord avec l’avis de l’auteur cité ?

    Pensez-vous que la programmation fonctionnelle est le futur avec le Cloud ?

  2. #2
    MikeRowSoft
    Invité(e)
    Par défaut
    Se sera sûrement le futur pour certains. Beaucoup de professions ayant besoins d'outils de programmations dans le but de procéder à des tâches mathématiques, sémantiques, de modélisation, de représentation et autres. Et non concevoir des logiciels.

    Le langage formel Caml dont l'écriture peut pour certains est "intuitive" est un langage surtout utilisé en université ou laboratoire de recherche. Tous comme LOTOS/M qui toutefois est très différents.

    Si le but est de rendre les langages formel accessible au commun des mortels, se n'est pas chose gagné à leur actuel.

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    J'ai beau avoir lu l'article et la source.... (Pas lu les 3 tutoriels à la fin de la source) Je ne vois toujours pas comment la programmation fonctionnelle et ou les lambdas vont m'aider à faire du merge de set de donnée ou de la synchronisation. Ce qui se trouve être les deux plus gros problème que je rencontre quand je fait du parallélisme...

    Si vous savez, éclairez moi !


    PS : (Java) Les lambda sont très pratique quand à leur utilisation, mais c'est du sucre syntaxique. Il n'y a rien que tu ne pouvais pas faire avant que tu peux faire maintenant. C'est juste beaucoup plus propre et simple à écrire avec l'option des lambdas.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  4. #4
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 549
    Points : 15 450
    Points
    15 450
    Par défaut
    Bah c'est le principe. Tout comme on peut faire de l'objet en C, on peut faire depuis toujours de la programmation fonctionnelle en C ou Java.
    C'est quand même mieux quand le langage fournit les bon outils.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 204
    Points : 540
    Points
    540
    Par défaut
    Citation Envoyé par kolodz Voir le message
    J'ai beau avoir lu l'article et la source.... (Pas lu les 3 tutoriels à la fin de la source) Je ne vois toujours pas comment la programmation fonctionnelle et ou les lambdas vont m'aider à faire du merge de set de donnée ou de la synchronisation. Ce qui se trouve être les deux plus gros problème que je rencontre quand je fait du parallélisme...

    Si vous savez, éclairez moi !


    PS : (Java) Les lambda sont très pratique quand à leur utilisation, mais c'est du sucre syntaxique. Il n'y a rien que tu ne pouvais pas faire avant que tu peux faire maintenant. C'est juste beaucoup plus propre et simple à écrire avec l'option des lambdas.

    Cordialement,
    Patrick Kolodziejczyk.
    Je pense que qu'avec un langage pure (comme Haskell) la programmation parallèle est plus facile car les fonctions n'ayant pas d'effet de bord (ou presque) peu importe comment sont parallélisés les traitements le résultat sera toujours exacte (du moins le même). Ceci dit, un langage fonctionnel n'est pas nécessairement pure. D'ailleurs la majorité des langages fonctionnels sont impure. Haskell peut aussi être impure mais il impose des restrictions qui vont délimités le code pure du code-impure et donc limité l'écriture de code impure. Finalement, ça revient à dire que si on n'a pas de données partagées entre plusieurs threads alors on n'a pas de problème d'accès concurrent.

    Ensuite concernant le passage
    Toutefois, ceci ne veut pas dire qu’il faut arrêter d’utiliser les états mutables. Au contraire, l’auteur assure que « l’idée principale de la programmation fonctionnelle est qu’il faut utiliser les états immutables seulement lorsqu’il est nécessaire ».
    Je ne sais pas si c'est une erreur de traduction mais cela me parait complètement aberrant. Programmation fonctionnelle ou pas, C'est toujours mieux d'avoir le moins possible de changement d'états. Ça facilite énormément le raisonnement à propos du programme.

  6. #6
    Membre éprouvé
    Homme Profil pro
    -
    Inscrit en
    Octobre 2011
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Octobre 2011
    Messages : 344
    Points : 1 235
    Points
    1 235
    Par défaut
    Par ailleurs la programmation fonctionelle est extrêment performante pour faire du parallélisme asynchrone, puisqu'il n'y a pas de mutation d'état non désirable. Donc oui ces languages ne facilite pas la tâche de synchronisation justement parce qu'ils pensent que c'est une source inutile d'erreurs.

    Après c'est les tradeoffs habituels de point de vue, performance, vitesse de coder, scalability, …

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    C'est sûr que les concepts de la programmation fonctionnelle prennent de plus en plus d'importance, y compris dans dans langages OO (de plus en plus supportent les expressions lambda et les closures, C# a Linq et les delegates, Java 8 a les streams et les interfaces fonctionnelles...). Et dans l'ensemble, je trouve que ça a tendance à beaucoup améliorer la qualité du code.

    Citation Envoyé par Amine Horseman Voir le message
    L’auteur de cet article affirme que « les langages orientés objet ne peuvent pas nous sauver du monstre qu’est le Cloud », ceci parce que ces « langages sont basés sur des états mutables »
    Pas vraiment d'accord... Certes, la plupart des programmes OO utilisent des états mutables, mais ce n'est pas une caractéristique intrinsèque des langages OO. On pourrait tout à fait écrire du code dans un style fonctionnel en C#, en Java, en C++ (du moins les versions récentes) ou en Javascript. D'ailleurs, toutes les features des langages fonctionnels qui sont mentionnées dans l'article sont supportées (sous une forme ou une autre) dans des langages OO :

    1. First-Class Functions
    2. High-Order Functions
    3. Pure Functions
    4. Closures
    5. Immutable State
    La deuxième ("higher-order functions", et non high-order) découlent directement de la première : du moment qu'une variable peut contenir une fonction, rien n'empêche de la passer en entrée ou en sortie d'une autre fonction.

    Concernant les fonctions pures et l'état immuable, ce ne sont pas vraiment des features, mais plutôt des caractéristiques des programmes. Dans les langages OO, ce n'est pas vraiment géré par le langage proprement dit, mais rien n'empêche d'implémenter une fonction de façon à ce qu'elle soit pure, ou de créer des objets immuables (les types String ou DateTime en C# en sont des exemples).

    La principale caractéristique des langages fonctionnels est qu'ils imposent (de façon plus ou moins stricte) ces caractéristiques. Par exemple, si je ne dis pas de bêtise, la seule façon en Haskell de faire des mutations d'état passe par l'utilisation de monades, un concept loin d'être facile à comprendre... D'autres langages fonctionnels comme F# permettent de le faire plus facilement, mais c'est toujours suffisamment explicite pour qu'on ne risque pas de le faire accidentellement.

    Citation Envoyé par Amine Horseman Voir le message
    Au contraire, l’auteur assure que « l’idée principale de la programmation fonctionnelle est qu’il faut utiliser les états immutables seulement lorsqu’il est nécessaire ».
    Il dit le contraire : il ne faut utiliser des états mutables que lorsque c'est nécessaire

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par codec_abc Voir le message
    Je ne sais pas si c'est une erreur de traduction mais cela me parait complètement aberrant. Programmation fonctionnelle ou pas, C'est toujours mieux d'avoir le moins possible de changement d'états. Ça facilite énormément le raisonnement à propos du programme.
    C'est une erreur de traduction. La phrase d'origine est "The main idea FP provides is: use mutable state only when it's necessary."

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 204
    Points : 540
    Points
    540
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Par exemple, si je ne dis pas de bêtise, la seule façon en Haskell de faire des mutations d'état passe par l'utilisation de monades, un concept loin d'être facile à comprendre... D'autres langages fonctionnels comme F# permettent de le faire plus facilement, mais c'est toujours suffisamment explicite pour qu'on ne risque pas de le faire accidentellement.
    Par soucis d'exactitude : Les monades ne sont pas là pour rendre les IOs et les états mutables compliqués à utiliser mais sont utilisées pour formaliser des notions. Par exemple, en Haskell les listes forment une monade, tout comme le type Maybe (qui est l'équivalent C# du Nullable<>). Ces deux monades sont faciles à appréhender pour les débutants ce qui n'est pas le cas de toutes les monades.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par codec_abc Voir le message
    Par soucis d'exactitude : Les monades ne sont pas là pour rendre les IOs et les états mutables compliqués à utiliser mais sont utilisées pour formaliser des notions. Par exemple, en Haskell les listes forment une monade, tout comme le type Maybe (qui est l'équivalent C# du Nullable<>). Ces deux monades sont faciles à appréhender pour les débutants ce qui n'est pas le cas de toutes les monades.
    Oui je sais bien . Aucun langage ne cherche volontairement à rendre les choses compliquées (à part peut-être Brainfuck et assimilés ). Et effectivement les monades ont bien d'autres applications...

    C'est vrai que Maybe ou les listes sont simples à comprendre, mais ce n'est pas parce qu'on sait s'en servir qu'on va automatiquement comprendre la notion générale de monade... C'est un concept qui est loin d'être intuitif au début, perso j'ai dû lire pas mal d'articles pour vraiment comprendre.

  11. #11
    Membre émérite
    Inscrit en
    Janvier 2011
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Janvier 2011
    Messages : 805
    Points : 2 917
    Points
    2 917
    Par défaut
    At least for concurrency and parallelism, OOP cannot save you anymore. It's just because OOP relies directly on mutable state (in Imperative Languages, which are the most common OOP implementation)
    Cette phrase résume bien l'ambiguité de l'article. On titre sur des phrases choc "l'OO ne peut plus nous sauver" et on met plein de bémols dans les paragraphes.

    Comme l'a dit quelqu'un, on peut faire du fonctionnel et de l'immuable dans des langages orientés objet (certes au prix de quelques contorsions) et ce n'est pas le style OO qui est synonyme de mutabilité à l'origine. D'ailleurs, l'article ne parle pas d'un modèle de concurrence très intéressant et qui se rapproche beaucoup de ce qu'Alan Kay avait imaginé être l'orienté objet à ses débuts : Actor Model. Chaque acteur/objet communique avec les autres en leur passant des messages et tourne dans son process dédié. Les mutations n'ont lieu qu'à l'intérieur de cette bulle protégée et seul l'acteur peut décider de se modifier lui-même. Il n'y a aucune ressource partagée, ce qui facilite la programmation parallèle. Ce modèle est à la base de langages comme Erlang ou Elixir, mais il existe aussi des librairies pour Java (Akka), C# (Orleans).

    Comme souvent, le dev qui ne va lire que les gros titres ressortira avec l'impression qu'il doit jeter son langage orienté objet à la poubelle et se jeter sur le premier langage fonctionnel qui vient pour suivre la tendance, au lieu d'examiner la question en profondeur.

  12. #12
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 851
    Points : 2 293
    Points
    2 293
    Par défaut
    Bah c'est le principe. Tout comme on peut faire de l'objet en C, on peut faire depuis toujours de la programmation fonctionnent en C ou Java. Le tout est d'avoir les outils qui facilitent cela.
    Je ne suis pas d'accord. Rien que les expressions dans les langages fonctionnels permettent de beaucoup faciliter la vie, choses que ne permettent pas d'autres langages comme le C. Je ne parle pas non plus du pattern matching ni des closures qui sont justes géniales à mon humble avis.

    Pour en revenir au sujet principal, je pense que le choix entre langage impératif et langage fonctionnel se doit d'être fait en fonction du besoin avant tout. Les langages fonctionnels sont très pratiques dans certains (parallélisation par-exemple) mais sont assez lourd à mettre en place dans d'autres cas où des langages impératifs se révèlent alors plus adaptés.

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par imperio Voir le message
    Je ne suis pas d'accord. Rien que les expressions dans les langages fonctionnels permettent de beaucoup faciliter la vie, choses que ne permettent pas d'autres langages comme le C. Je ne parle pas non plus du pattern matching ni des closures qui sont justes géniales à mon humble avis.
    Effectivement le C se prête pas vraiment au style fonctionnel, ne serait-ce qu'à cause de l'absence d'expressions lambda et de closures...

    Mais la plupart des langages modernes aujourd'hui (même non fonctionnels) supportent les lambda et les closures. Pour le pattern matching, c'est vrai que c'est sympa, mais c'est pas indispensable ; on peut toujours faire autrement sans trop de difficultés, la syntaxe est juste un peu plus lourde. (j'attends avec impatience C# 7, qui supportera probablement le pattern matching )

  14. #14
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 851
    Points : 2 293
    Points
    2 293
    Par défaut
    @tomlev: Il est vrai que beaucoup de langages récents implémentent des choses que l'on attribuerait plutôt à des langages fonctionnels. Du coup, à quel moment cesse-t-on de dire que ce sont des langages impératifs et les mettre dans la catégorie des langages fonctionnels ? Ça pourrait être un débat intéressant, non ?

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par imperio Voir le message
    @tomlev: Il est vrai que beaucoup de langages récents implémentent des choses que l'on attribuerait plutôt à des langages fonctionnels. Du coup, à quel moment cesse-t-on de dire que ce sont des langages impératifs et les mettre dans la catégorie des langages fonctionnels ? Ça pourrait être un débat intéressant, non ?
    Bah en fait, il me semble que les classifications habituelles des langages (impératif, fonctionnel, procédural, objet, etc) ne sont pas mutuellement exclusives, vu que la plupart des langages utilisent plusieurs paradigmes. Bien sûr il y a généralement un paradigme dominant, mais qui n'exclut pas forcément les autres. En fait, les langages modernes sont presque tous hybrides... D'ailleurs, voilà, d'après Wikipedia, les paradigmes utilisés par différents langages :

    • C# : multi-paradigm: structured, imperative, object-oriented, event-driven, task-driven, functional, generic, reflective, concurrent
    • Java : multi-paradigm: object-oriented, structured, imperative, functional, generic, reflective, concurrent
    • C++ : Multi-paradigm: procedural, functional, object-oriented, generic
    • Javascript : Multi-paradigm: scripting, object-oriented (prototype-based), imperative, functional
    • Swift : multi-paradigm (object-oriented, functional, imperative, block structured)
    • Perl : multi-paradigm: functional, imperative, object-oriented (class-based), reflective, procedural, Event-driven, generic
    • Ruby : multi-paradigm: object-oriented, imperative, functional, reflective
    • Python : Multi-paradigm: object-oriented, imperative, functional, procedural, reflective


    Bref, y en a pas un qui soit pas multi-paradigme

  16. #16
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    @tomlev : Merci !

    Je reviens donc sur ce que j'ai dis :
    Je ne vois toujours pas comment la programmation fonctionnelle et ou les lambdas vont m'aider à faire du merge de set de donnée ou de la synchronisation. Ce qui se trouve être les deux plus gros problème que je rencontre quand je fait du parallélisme...
    Ce n'est pas magiquo-magique !

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  17. #17
    Membre du Club
    Profil pro
    Responsable Technique
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable Technique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 54
    Points
    54
    Par défaut
    Ça fait 20 ans que je connais les langages fonctionnels, ça fait donc 20 ans qu'ils ont une syntaxe "déplorable".
    J'entends pas là qu'ils ne sont pas beaux à voir et pas facilement lisibles. Ce qui explique la prédominance des autres langages (C/C++, Java, Python ....).
    Le jour ou un langage fonctionnel aura une meilleure "syntaxe" et ergonomie, alors il aura des chances de convaincre.
    Ne jamais oublier que si l’équation qui résout un problème est belle, elle a de grandes chances d’être juste (dixit mon prof de math d'il y a 20 ans ;-).

  18. #18
    Membre émérite
    Inscrit en
    Janvier 2011
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Janvier 2011
    Messages : 805
    Points : 2 917
    Points
    2 917
    Par défaut
    Citation Envoyé par imperio Voir le message
    @tomlev: Il est vrai que beaucoup de langages récents implémentent des choses que l'on attribuerait plutôt à des langages fonctionnels. Du coup, à quel moment cesse-t-on de dire que ce sont des langages impératifs et les mettre dans la catégorie des langages fonctionnels ? Ça pourrait être un débat intéressant, non ?
    C'est même passionnant et c'est la différence entre langage et style (qui reflète un paradigme comme l'a dit tomlev) : on peut programmer en Java avec un style fonctionnel ou en F# avec un style impératif. N'en déplaise à ceux qui veulent faire table rase des langages pas assez "tendance".

    Citation Envoyé par behel Voir le message
    Ça fait 20 ans que je connais les langages fonctionnels, ça fait donc 20 ans qu'ils ont une syntaxe "déplorable".
    J'entends pas là qu'ils ne sont pas beaux à voir et pas facilement lisibles. Ce qui explique la prédominance des autres langages (C/C++, Java, Python ....).
    Des exemples ? Je trouve les langages récents souvent très lisibles une fois qu'on a compris quelques aspects du paradigme fonctionnel.

    Exemple en F# avec les unités de mesure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [<Measure>] type inch
    [<Measure>] type cm
    
    5<cm> + 3<cm> // 8<cm>
    5<cm> + 8<inch> // erreur de compilation
    Ou le pipe operator qui permet de chainer des opérations :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [1..10] 
    |> List.filter (fun x -> x % 2 = 0) 
    |> List.map (fun x -> x * 3)
    Etc.

  19. #19
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 851
    Points : 2 293
    Points
    2 293
    Par défaut
    Citation Envoyé par behel Voir le message
    Ça fait 20 ans que je connais les langages fonctionnels, ça fait donc 20 ans qu'ils ont une syntaxe "déplorable".
    J'entends pas là qu'ils ne sont pas beaux à voir et pas facilement lisibles. Ce qui explique la prédominance des autres langages (C/C++, Java, Python ....).
    Le jour ou un langage fonctionnel aura une meilleure "syntaxe" et ergonomie, alors il aura des chances de convaincre.
    Ne jamais oublier que si l’équation qui résout un problème est belle, elle a de grandes chances d’être juste (dixit mon prof de math d'il y a 20 ans ;-).
    J'aurais bien voulu te dire que les choses allaient changer avec Rust mais il est de moins en moins "fonctionnel" au fur et a mesure de ses evolutions.

  20. #20
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 549
    Points : 15 450
    Points
    15 450
    Par défaut
    Qu'est ce qui te fait dire cela? Je n'ai pas l’impression que les dernières évolutions ne l'aient rendu ni plus ni moins fonctionnel, du moins depuis le passages aux iterateurs externes qui sont quand même un vrai avantage.

Discussions similaires

  1. La programmation fonctionnelle a de beaux jours devant elle
    Par Arsene Newman dans le forum Langages fonctionnels
    Réponses: 1
    Dernier message: 19/12/2014, 11h14
  2. La programmation Web avec standards : est t'elle amenée à disparaître ?
    Par SlashEne dans le forum Général Conception Web
    Réponses: 7
    Dernier message: 09/07/2008, 18h02
  3. Débuter en programmation fonctionnelle
    Par Woufeil dans le forum Langages fonctionnels
    Réponses: 76
    Dernier message: 17/07/2007, 14h03
  4. La programmation fonctionnelle ?
    Par Gnux dans le forum Langages de programmation
    Réponses: 12
    Dernier message: 03/07/2006, 20h00
  5. [XML] ma structure est t-elle bonne ?
    Par guy2004 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 16/03/2006, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo