[gull] les langages de programmations made in switzerland.

Laurent Franceschetti laurent at franceschetti.net
Wed May 2 09:35:17 CEST 2018


Rapin était un professeur compétent et très humain; c’est regrettable qu’il soit resté méconnu. La difficulté d’une partie d’entre nous (ceux qui avaient peut-être plus de peine à « accrocher » les concepts), était que les cours allaient trop vite pour nos têtes. Je dois hélas avouer qu’il ne me reste pas grand chose. Et en effet, c’est grâce à Python que j’ai finalement compris une partie de ce que j’ai vu aux cours de Rapin. 

Ce qui me reste surtout, c’est le cours extraordinaire d’un assistant surnommé « Zoom », qui nous présentait plusieurs nouveaux langages par mois.  En une dizaine de pages, il arrivait à nous résumer les caractéristiques du langage et on faisait des exercices. C’était comme de vivre des récits de voyage. J’en ai gardé la passion pour les différents concepts et grammaires de langages.

Bonne journée,
Laurent






> Le 2 mai 2018 à 09:19, Marc SCHAEFER <schaefer at alphanet.ch> a écrit :
> 
> 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 at forum.linux-gull.ch
> http://forum.linux-gull.ch/mailman/listinfo/gull
> 



More information about the gull mailing list