en fait la notion de programmation fonctionnelle s'est retrouve de maniere implicite dans des langages comme le C ( et par consequent le C++, le Java, le C# etc...).
Ces langages utilisent un mecanisme d'evaluation d'expression tres puissant qui leur permet de reproduire tout simplement une notion de programmation fonctionnelle.
Pour resumer, la notion de "procedure" n'existe pas en C mais seulement la fonction. Alors pour aider un peu on a ajouter des function dite void qui ne renvoit rien et qui font comme les procedures (au sens pascal par exemple). Ca n'en reste pas moins des fonctions. Pour le reste tout est fonction et un expression et simplement la combinaison de fonctions. Ceci permet l'evaluation d'expression composees tres complexes et qui s'optimisent fortement. C'est une des forces mal connues du C. Essayez l'exercice qui consistent a concevoir la majeure partie d'un algorithme C en terme d'evaluation d'expressions (comme vous le feriez en Lisp).
Je vous conseille la lecture d'un bouquin bien vieux maintenant mais qui reste une reference agreable sur le C, qui s'appelle simplement le langage C aux editions Dunod ecrit par un D. Galland. La premiere partie de ce bouquin prend le contre-pied de la plupart des autres bouquins en presentant d'abord l'evaluation des expressions en C puis ensuite les instructions de controle de flot (for, if, while, etc...). Ca donne une idee de cette notion tres puissante d'expression.
Ce que je dis s'applique en gros aux autres langages comme C++, Java, C# et tout ceux qui se sont fortement appuyes sur le C (c'est aussi sans doute valable ailleurs mais je ne sais pas).
De la a dire que le C = Lisp, il n'y a qu'un pas a franchir et je le fais volontiers dans de nombreux cas. :-)
[^] # Re: Article du Turing Award
Posté par yim yom (site web personnel) . En réponse à la dépêche Décès du père du Fortran et de la notation BNF. Évalué à 2.
Ces langages utilisent un mecanisme d'evaluation d'expression tres puissant qui leur permet de reproduire tout simplement une notion de programmation fonctionnelle.
Pour resumer, la notion de "procedure" n'existe pas en C mais seulement la fonction. Alors pour aider un peu on a ajouter des function dite void qui ne renvoit rien et qui font comme les procedures (au sens pascal par exemple). Ca n'en reste pas moins des fonctions. Pour le reste tout est fonction et un expression et simplement la combinaison de fonctions. Ceci permet l'evaluation d'expression composees tres complexes et qui s'optimisent fortement. C'est une des forces mal connues du C. Essayez l'exercice qui consistent a concevoir la majeure partie d'un algorithme C en terme d'evaluation d'expressions (comme vous le feriez en Lisp).
Je vous conseille la lecture d'un bouquin bien vieux maintenant mais qui reste une reference agreable sur le C, qui s'appelle simplement le langage C aux editions Dunod ecrit par un D. Galland. La premiere partie de ce bouquin prend le contre-pied de la plupart des autres bouquins en presentant d'abord l'evaluation des expressions en C puis ensuite les instructions de controle de flot (for, if, while, etc...). Ca donne une idee de cette notion tres puissante d'expression.
Ce que je dis s'applique en gros aux autres langages comme C++, Java, C# et tout ceux qui se sont fortement appuyes sur le C (c'est aussi sans doute valable ailleurs mais je ne sais pas).
De la a dire que le C = Lisp, il n'y a qu'un pas a franchir et je le fais volontiers dans de nombreux cas. :-)