[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [HS] comparatif langages procéduraux/fonctionnels (was: logiciel de mail ?)



On Mon, Aug 04, 2003 at 11:22:10PM +0200, François TOURDE wrote:
> Le 12268ième jour après Epoch,
> Yves Rutschle écrivait:
> 
> > Dans le programme Perl suivant, 'deriv' crée une _nouvelle_,
> > vraie fonction qui calcule la dérivée de la fonction donnée
> > en paramètre.
> >
> > #! /usr/bin/perl
> >
> > my $eps=1e-10;
> >
> > sub deriv {
> >   my ( $f ) = @_;
> >
> >   return sub {
> >     my ( $x ) = @_;
> >     return (&$f($x+$eps) - &$f($x))/$eps;
> >   }
> > }
> >
> > sub sinus {
> >   return sin( $_[0] );
> > }
> >
> > my $cos = deriv( \&sinus );
> > my $sin = deriv( $cos );
> >
> > print &$sin( 0 );
> > print "\n";
> >
> > Faire la même chose en C (créer une nouvelle fonction) sera
> > pour le moins goret, si c'est possible.
> 
> C'est possible en C, avec des pointeurs de fonctions, et c'est pas plus
> goret qu'en perl :) ... Ça fait trop longtemps que j'ai pas joué à C

Je suis pas expert en perl, donc je peut pas commenter sur le code ci
dessus, mais il me semble qu'en C, il n'est pas possible de creer des
fonctions dynamiquement, a moins d'avoir l'information sur la
representation interne des fonctions, ce qui n'est du coup pas du tout
portable. Et quand je dis dynamiquement, je dis une fonction que l'on
cree durant l'execution du programme. Bien sur qu'on peut utiliser des
pointeurs de fonctions, c'est tres util, et abondament utilise dans de
nombreux logiciels, comme xfree86 par exemple, et a chaque fois qu'on
veut faire de l'oriente objet en C :)))

Amicalement,

Sven Luther



Reply to: