Attention, je ne me fais pas le défenseur du fonctionnel, je dis juste que je trouve le fonctionnel beaucoup plus proche de la pensée mathématique que l'impératif ![;)](https://www.developpez.net/forums/images/smilies/icon_wink.gif)
Un autre exemple, toujours aussi mathématique : la fonction dérivée (très très naïve, je vous l'accorde) :
deriv f h = \a -> (f (a + h) - f a) / h
Une fois qu'on sait que \ signifie en gros fonction, on peut presque lire la ligne comme ceci : la dérivée de f avec un pas de h est égale à la fonction qui à a associe f de a + h - f de a sur h, exactement la définition mathématique.
Après, dès qu'on s'éloigne des mathématiques, je trouve que l'impératif est très adapté aux problèmes informatiques, comme pour reprendre l'exemple de millie les serveurs :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| my $serveur = IO::Socket::INET->new ( LocalPort => 3000, Type => SOCK_STREAM, Reuse => 1, Listen => 5) or die "Problème serveur : $!";
my $chaine;
while (my $client = $serveur->accept()) {
my $pid = fork;
unless ($pid) {
while (1) {
print $client "Entrez le nombre dont vous voulez connaître le carré : ";
$chaine = <$client>;
exit unless defined $chaine;
chomp ($chaine);
if ($chaine =~ m/^\d+\r?$/) {
my $rep = "Le carré de $chaine vaut ".$chaine * $chaine;
print $client "$rep\n";
}
else {
print $client "Erreur !\n";
}
}
}
} |
Difficile de faire plus compréhensible...
Pour publicStaticVoidMain : tu es sûr que tu te rappelles de tes débuts en informatique ??? Sachant qu'il y a des personnes qui ont moins de 16h de programmation derrière eux (premiers cours, comptez dans les séances l'historique et les divergences), tu veux déjà leur faire apprendre comment accéder aux paramètres de main() ? Je ne voudrais pas t'avoir comme prof dans une matière que je ne maitrise pas...
Pour revenir sommairement au sujet, je dirais que c'est bien plus une question de pédagogie que de langage... J'ai très mal appris (en autodidacte je précise) le C++ par exemple : je me suis retrouvé dans un code C++ à faire mes chaînes de caractère avec des tableaux de char, je n'ai quasiment rien vu de la STL (même pas les vector et les lists, c'est dire !)... Globalement, je trouve que le C++ est trop souvent mal enseigné en tant que premier langage : comme du C avec des classes...
Apprendre le C en premier langage se défend aussi très bien, je ne vais pas redonner les arguments de chacun.
Partager