prog fonctionelle et C++ - C++ - Programmation
Marsh Posté le 28-06-2009 à 15:04:02
En quel terme ?
Niveau expressivité y a ce quif aut dans boost::lambda et bientot boost::phoenix.
Niveau perf aucune idée.
Marsh Posté le 28-06-2009 à 15:29:08
intéréssant phoenix, dans la doc il est dit, qu'en C++ on peut faire les principaux trucs qu'on peut faire en FP, mais pas tout non plus donc
Marsh Posté le 28-06-2009 à 15:58:37
A quoi t'attendais-tu? Je ne suis pas sûr qu'il y ait un langage fonctionnel qui permette de faire tout ce qu'on associe à la programmation fonctionnelle.
Si tu n'as pas de demande précise et que tu veux explorer ce que c'est, je te conseille d'apprendre un langage fonctionnel (mettons Haskell si tu veux un nom, il a l'avantage d'être suffisemment éloigné de C++ qu'il y a peux de risques que tu ne vas pas te mettre à faire du C++ à Haskell, risque qui est plus important avec un lisp ou un langage de la famille ML).
En passant, j'ai du mal à voir comment faire en C++ des choses comme l'évaluation paresseuse ou les continuations sans un support intrinsèque du langage. Ou plutôt, je vois comment le faire, mais c'est lourd et pas pratique à utiliser. Et je ne parle pas de ce qui dépend d'une inférence de types (technique qui n'est pas fondamentalement liée à la programmation fonctionnelle même si c'est dans les langages fonctionnels que se trouvent les langages l'ayant poussée le plus loin).
Marsh Posté le 28-06-2009 à 16:22:32
la lazy evaluation c'est deja partiellement gérée par boost::Fusion.
Marsh Posté le 28-06-2009 à 19:07:27
Un Programmeur a écrit : A quoi t'attendais-tu? Je ne suis pas sûr qu'il y ait un langage fonctionnel qui permette de faire tout ce qu'on associe à la programmation fonctionnelle. |
donc infiné le support du paradigme fonctionnelle en C++ est très basique , si je te suis bien
Marsh Posté le 28-06-2009 à 19:37:15
Le support dans langage (du moins C++O3) est quasiment inexistant. Par des bibliothèques, on arrive à fournir certaines choses, au prix d'une certaine complexité et d'une certaine lourdeur d'utilisation et de perf. C++0X devrait offrir un peu plus avec un support dans le langage, donc avec un peu moins de compromis (mais il faut s'intégrer avec le reste du langage, donc il y a toujours des compromis).
Marsh Posté le 28-06-2009 à 19:43:30
Le D est nettement plus adapté pour adopter certaines pratiques de PF, même si ça reste un langage essentiellement impératif.
Marsh Posté le 28-06-2009 à 19:50:18
Un Programmeur a écrit : Le support dans langage (du moins C++O3) est quasiment inexistant. Par des bibliothèques, on arrive à fournir certaines choses, au prix d'une certaine complexité et d'une certaine lourdeur d'utilisation et de perf. |
Euh, à part FC++ qui etait atroce, lambda et fusion ont des perfs plus que corrects
Marsh Posté le 28-06-2009 à 20:12:37
Mon point est qu'une implémentation bibliothèque de la PF en C++ va devoir choisir un point de compromis entre complexité d'implémentation, lourdeur d'utilisation, fonctionnalités et performances. Tu peux faire effectivement le choix de limiter les fonctionalités et de complexifier l'implementation (a priori je doute que la facilité d'utilisation intervienne) pour garder de bonnes performances. Il est toujours possible aussi d'essayer de trouver une nouvelle technique d'implémentation qui augmente les points atteignables.
Quelque chose de plus intégré au langage (comme les lambda de C++0X) a plus de souplesse, mais est toujours plus contraint que pour un langage conçu pour être fonctionnel (la bonne technique pour concevoir un langage supportant les paradigmes fonctionnels et impératifs, c'est de partir d'un noyau fonctionnel et de l'étendre).
Marsh Posté le 28-06-2009 à 21:56:08
Un Programmeur a écrit : |
Tout a fait d'accord
Marsh Posté le 28-06-2009 à 14:30:55
Salut,
Je me demandais, j'arrive pas trop à trouver ça sur le net.. la prog fonctionelle en C++ par rapport à un vrai langage fonctionelle c'est ridicule ?
ça tiens bien la route ?
Merci