prog fonctionelle et C++

prog fonctionelle et C++ - C++ - Programmation

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

Reply

Marsh Posté le 28-06-2009 à 14:30:55   

Reply

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.

Reply

Marsh Posté le 28-06-2009 à 15:23:49    

ui niveau expressivité

Reply

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

Reply

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).


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 28-06-2009 à 16:22:32    

la lazy evaluation c'est deja partiellement gérée par boost::Fusion.

Reply

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.  
 
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).


 
donc infiné le support du paradigme fonctionnelle en C++ est très basique , si je te suis bien

Reply

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).


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

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.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

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

Reply

Marsh Posté le 28-06-2009 à 19:50:18   

Reply

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).

Message cité 1 fois
Message édité par Un Programmeur le 28-06-2009 à 20:15:27

---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 28-06-2009 à 21:56:08    

Un Programmeur a écrit :


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).


 
Tout a fait d'accord

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed