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

Haskell Discussion :

[Haskell][Temps de calcul] Visual Haskell


Sujet :

Haskell

  1. #1
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut [Haskell][Temps de calcul] Visual Haskell
    Bonjour,

    je découvre ce forum (honte à moi...). J'ai fait de l'Haskell à la fac dans les années 90', et je viens de découvrir...... qu'il existerait un version Visual" ??

    Je m'interroge sur les temps de calcul: j'ai un bon gros algo mathématiques (stochastique) gourmand en calcul en .net, et je me demande ce que cela donnerait sous Visual Haskell. Question peut-être débile, je ne suis pas MOE....

    Quelqu'un pratique-t-il cette version?
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Visual Haskell est basé sur GHC (the Glorious Glasgow Haskell Compiler), qui est actuellement le nec plus ultra en matière de compilateur Haskell. Dans certains cas on peut obtenir des performances proches du C.
    Ce n'est cependant pas garanti et il y a de toute façon un surcout inévitable dû à l'évaluation paresseuse, bien que cette même évaluation paresseuse permette de gros gains sur la simplicité des programmes et de la modularisation.
    Je n'ai personnellement jamais utilisé Visual Haskell, mais j'utilise principalement GHC et ses performances sont très honnêtes.

    Tout dépend de la nature de ton algorithme. N'hésite pas à reposer des questions sur des points plus précis si tu décides d'essayer. Si tu as déjà fait du Haskell, tu dois le savoir, mais je te préviens tout de même, Haskell est un monde un peu à part, c'est sans doute l'un des seul langage où la mailing-liste voit régulièrement des discussions sur la théorie des catégories...

    --
    Jedaï

  3. #3
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Merci Jedai pour ce retour. Haskell remonte à très-très loin, mais du coté théorique j'ai mangé énormément de théorie des catégories (c'était mon "core" de recherches quand j'bossais à la fac).

    Je vais te présenter en survol un exemple d'algo. Tu as une fonction avec ~ 50000 valeurs, et tu en veux une "approximation" par une fonction en escalier en 8 morceaux selon certaines fonction de coûts via des distances "quadratiques" par morceaux.

    Nombres d'utilisateurs (allez, disons une cinquantaine) peuvent lancer en même temps ces calculs d'évaluation, non pas sur une seule fonction mais sur une collection de fonctions -- pouvant aller jusqu'à 500 --. 500 fois 50000, ça fait du bruit...

    L'algo actuel en .net fonctionne "bien", il a été tuné à mort, mais on est toujours preneur d'une amélioration des perfs.

    Je me demandais ce qu'Haskell pourrait donner.
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Je pense qu'il est toujours possible de faire mieux que .NET (surtout depuis que ByteString a réglé le problème d'IO récurrent en Haskell) sur GHC, mais est-ce que ça vaudra vraiment le coup et est-ce que ce sera facile... probablement pas (surtout en face de .NET "tuné à mort")

    --
    Jedaï

  5. #5
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    tu me déconseilles donc la tentative?
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Nemerle Voir le message
    tu me déconseilles donc la tentative?
    Je te déconseille de te lancer dans une telle réécriture en t'attendant à obtenir des performances supérieures à ton implémentation en .NET facilement (si tu veux juste voir ce que ça donnerait en Haskell et les performances d'une implémentation naïve, c'est plutôt une bonne idée au contraire, ou si tu as du temps devant toi et que tu es prêt à faire des efforts (mais pourquoi ne pas le réécrire en C dans ce cas ? Ou au moins les parties critiques ?)).
    Je te conseillerais par contre de te familiariser avec le Haskell d'aujourd'hui, c'est un excellent langage, plutôt performant par rapport à la plupart des langages de haut niveau plus ou moins comparable, et qui comporte un certain nombre de concepts qui sont de plus en plus reconnus et sont en train d'être introduit progressivement dans les langages "mainstream" (C#3.0 s'inspire pas mal d'Haskell). Je ne répèterais pas ici les arguments pour l'emploi d'Haskell, mais cet article en répertorie un certain nombre, il est un peu long et tu en as déjà entendu une bonne partie mais il reste intéressant. Pour un développeur familier avec les deux, je suis à peu près sûr qu'il est plus rapide et facile de développer en Haskell qu'en C#.

    C'est gros et confidentiel au fait, ou je peux jeter un coup d'oeil à un bout du code pour te dire ce que j'en pense ?

    --
    Jedaï

  7. #7
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Merci pour cet article, que je vais lire en détails!

    Citation Envoyé par Jedai Voir le message
    C'est gros et confidentiel au fait, ou je peux jeter un coup d'oeil à un bout du code pour te dire ce que j'en pense ?
    Jedaï
    Bein oui, désolé, c'est top confidentiel... mais je vais essayer de t'envoyer un truc par MP.
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  8. #8
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Par ailleurs, repose moi la question à la fin de l'année et la réponse aura peut-être changé ! En effet Haskell connait un fort regain d'intérêt actuellement, et les performances de GHC s'améliorent rapidement, il reste encore un grand nombre de pistes qui devraient amener des améliorations importantes en terme de vitesse. On peut espérer se rapprocher du C pour un certain nombre de programmes.

    --
    Jedaï

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    Par exemple, si tu veux coder wc, Haskell est très bon !

    (bouh, ils sont moches les smileys)

  10. #10
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par bluestorm Voir le message
    Par exemple, si tu veux coder wc, Haskell est très bon !
    Ouaip, depuis qu'il y a ByteString du moins, parce qu'avant... *frémissement d'horreur*

    Evidemment l'exemple de wc est anecdotique, mais ByteString ne l'est pas : c'est une excellente bibliothèque de String et d'IO, et en passant le concepteur a mis au point une technique qui sera appliquée dans les prochaines versions de GHC et permettra d'avoir plus de fusions automatiques (des choses comme "map f . map g" qui devient "map (f . g)", en plus compliqué maintenant (ce cas trivial était déjà fusionné par GHC)), ce qui est toujours bon à prendre (en fait vu le style de programmation dominant en Haskell, c'est une très bonne nouvelle).

    --
    Jedaï

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    Tu parles des "stream fusions" ?
    (faudrait que je regarde ça un jour)

  12. #12
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Au fait, et que dites-vous de Linq???????

    [Edit] Arghhhhhhhhhhhhhh!! c'est mon 666 messages!!!!!!!!!!!!!! [/Edit]
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  13. #13
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Nemerle Voir le message
    Au fait, et que dites-vous de Linq???????
    Ca a l'air très sympa, du sucre syntaxique bien agréable, reste à voir à l'usage si l'interface avec le reste du langage est si bien foutue que ça.

    --
    Jedaï

  14. #14
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Citation Envoyé par Nemerle Voir le message
    Au fait, et que dites-vous de Linq???????

    [Edit] Arghhhhhhhhhhhhhh!! c'est mon 666 messages!!!!!!!!!!!!!! [/Edit]
    Effectivement, il est maudit

    Jedaï >> Que signifie exactement cette expression de "sucre syntaxique" qu'on retrouve à tout bout de champ dans le monde fonctionnel
    cf « Syntactic sugar causes cancer of the semi-colon. »
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  15. #15
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Trap D Voir le message
    Jedaï >> Que signifie exactement cette expression de "sucre syntaxique" qu'on retrouve à tout bout de champ dans le monde fonctionnel
    cf « Syntactic sugar causes cancer of the semi-colon. »
    Le "sucre syntaxique" n'est pas du tout spécifique du "monde fonctionnel", on peut en trouver dans n'importe quel langage. Il s'agit d'une syntaxe qui n'est là que pour la convenance du programmeur, mais qui est en réalité traduite pour le compilateur en une forme plus régulière mais moins agréable à l'oeil/pratique.

    Linq est un tel sucre syntaxique parce qu'il s'agit d'une syntaxe entièrement nouvelle (et qui ne correspond pas au reste du langage) qui est en fait traduite en sous main par des appels de méthodes. L'exemple canonique du sucre syntaxique, c'est les "list comprehension", autrement dit les générateurs de listes, qui se présentent sous différentes formes dans un nombre croissant de langage. Haskell a été l'un des premier à les introduire, et ils s'y présentent sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ (a,b,c) | a<-[1..998], b<-[a..999], c<-[b..1000], a^2 + b^2 == c^2, a+b+c == 1000]
    génère la liste des triplets pythagoricien dont la somme des membres est 1000 (il n'y en a qu'un seul à vrai dire). (ce code est très naïf, ce n'est qu'un exemple)
    Ce code peut-être "désucré", et c'est sous cette forme plus régulière qu'il sera en réalité compilé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ x^2 | x<-[1..1000], even x]
    est ainsi traduit en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map (^2) $ filter even $ enumFromTo 1 1000
    à peu près (pas tout à fait mais presque).

    --
    Jedaï

  16. #16
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Citation Envoyé par Jedai Voir le message
    Ca a l'air très sympa, du sucre syntaxique bien agréable, reste à voir à l'usage si l'interface avec le reste du langage est si bien foutue que ça.

    --
    Jedaï
    Bein je te dirais ça dans quelques temps on va migrer une appli en .net 3.5 + Linq....
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Visual Express et Visual 2005 temps de calcul
    Par younes008 dans le forum Visual C++
    Réponses: 2
    Dernier message: 16/01/2010, 09h18
  2. Temps de calcul d'un algo
    Par Rémiz dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 23/12/2005, 13h52
  3. temps de calcul sius VC++ !!
    Par Axiome dans le forum MFC
    Réponses: 16
    Dernier message: 13/12/2005, 09h57
  4. Temps de calcul avec deux écrans
    Par Shaga dans le forum OpenGL
    Réponses: 2
    Dernier message: 14/11/2005, 09h24
  5. temps de calculs extremement long !!
    Par salseropom dans le forum C++
    Réponses: 9
    Dernier message: 19/01/2005, 20h12

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