On Wed, May 02, 2018 at 07:43:51AM +0200, Laurent Franceschetti wrote: > Anecdote: A propos de Newton, les étudiants de 2ème année que nous étions > étaient confondus par le contenu du cours du professeur Charles Rapin, malgré > ses talents de narrateur. Les manuels du langage n???étaient malheureusement > pas très pédagogiques. Il y avait une incantation mystérieuse, qu???on > trouvait à la fin des méthodes de classes:
En ce qui me concerne j'avais adoré ce cours, très complet[1], vue d'ensemble de tout ce qu'il fallait savoir (suivi autour de 1992-1993). Les explications étaient toujours claires. Il y avait toutefois deux écueils: - il rajoutait chaque semaine un opérateur (je me souvient du | qui m'avait choqué, ça faisait quelque chose avec le polymorphisme, de mémoire) - il fallait absolument éviter d'essayer de se raccrocher à un langage existant, mais comprendre les concepts. L'opérateur "nouer" était génial. Toutefois, le cours de base (en 1992-1993) ne traitait pas beaucoup d'orienté objet. J'ai suivi toutefois son cours avancé Construction de compilateurs, ce qui fait qu'encore aujourd'hui, quand je vois du code orienté-objet, je réfléchis à l'implémentation: table de saut ou la résolution absolue (inline) est-elle possible à la compilation ? :) Et Newton se compilait avec un compilateur Newton, bootstrappé il y a des années depuis un autre langage, mais qui depuis se compilait lui-même en code machine (ok, le runtime était, en partie, en C sur les versions UNIX). > take moi done Si je me rappelle bien, la difficulté c'était que Newton était un langage d'expression, donc tout pouvait être retourné (beaucoup de programmes avancés finissaient par push programme ou take programme). Mais il y avait des problèmes syntaxiques où le `take' était explicitement nécessaire, c'était ça que j'avais trouvé compliqué à l'époque. De tous les profs d'informatique que j'ai eux à l'époque, c'est celui qui a) m'a le plus appris b) était le plus modeste Il est décédé en 1997, je crois. > Ca nous aurait fait gagner du temps si on nous avait expliqué cet idiotisme, > et surtout à quoi il servait (à faire des chaînes de méthodes, > maclasse.foo().bar().baz())??? Une chose que qui m???intrigue toujours, > c???est pourquoi on n???utilisait pas « me » ou « self » pour la variable > conventionnelle? Cela ne m'avait pas choqué :) En Perl, et je crois en Python[2], on peut définir le nom de la variable conventionnelle: [ ... ] sub take { # self dans certains langages my $moi = shift; return $moi; } my $whatever = new whatever(); my $lui = $whatever->take(); Comme application moderne du take moi, un petit peu de web scraping avec Mojolicious (en particulier le grep() et le map()), ici il s'agit de tableaux de résultats (qui sont des objets), pas d'objets eux-mêmes, mais le principe marche aussi. my $ua = new Mojo::UserAgent(); my %truc = $ua->get($base_url)->res->dom->find('td > a') ->grep(sub { $_->attr('href') =~ /google.com/ }) ->map(sub { $_->attr('href') => length($_) }); # truc contiendra un tableau associatif # url => longueur d'URL # pour tous les URLs attributs href de tous les éléments a dont le # parent est un élément td dans le document pointé par l'URL $base_url # (dans grep et map et foreach, par défaut dans Perl, $_ est la # variable de contrôle) [1] https://fr.slideshare.net/ebruchez/programmes-et-objets-informatiques-prof-ch-rapin-juillet-1989 [2] http://sametmax.com/pourquoi-self-en-python/ _______________________________________________ gull mailing list gull@forum.linux-gull.ch http://forum.linux-gull.ch/mailman/listinfo/gull