La voix du secrétaire (Jean)
Présents à la réunion :
Il y a également des nouvelles têtes dans le personnel de la taverne, notamment une nouvelle serveuse.
Comme d'habitude, il a été question d'Internet, d'informatique et de sujets divers. Mais pour une fois, la part de Perl a été importante. À noter également quelques pauses dans la discussion, ce qui a amené certains à faire les réflexions : « Un ange passe... », « On ferme la fenêtre... » et je préfère ne pas me souvenir de la suite.
my ($atime, $mtime) = (stat $fichier)[8, 9];Un autre exemple, qui ne m'est pas venu à l'esprit lors de la réunion, c'est pour alimenter plusieurs éléments d'un tableau ou d'un hachage sans détruire les autres :
my @nbj = (0, 31, 59, 90, 120, 151, 181, 212, 242, 273, 303, 334); @nbj[2..11] = (91, 121, 151, 182, 213, 243, 274, 304, 335) if bissextile($annee);(version débutant) ou bien
my @nbj = (0, 31, 59, 90, 120, 151, 181, 212, 242, 273, 303, 334); @nbj[2..11] = map { ++$_ } @nbj[2..11] if bissextile($annee);(version avancée).
sub pop_curry (\@) { my ($tab_ref) = @_; splice @$tab_ref, -1 }Il y a d'autres concepts nouveaux, comme les continuations, mais à quoi ça sert ? Comment ça marche ?
perl -MO=Showlex[,SUBROUTINE] foo.plet, c'est vrai, de faire le ménage dans le résultat.
p 5482464 source Perl s 446174 source shell c 4184360 source C d 7094023 documentation, Readme, etc o 41647 modules objets et autres indésirables ? 5893366 ne répondant à aucun critèreMais je tiens à signaler que, ainsi qu'il est dit dans fortune, que « des études récentes ont montré que 43 % des statistiques publiées n'ont aucun sens ». D'autre part, et plus sérieusement, il faut se méfier des algorithmes basés sur les noms de fichier. Dans certains cas, cela peut provoquer des choses très désagréables...
ciseaux feuille feuille caillou caillou ciseauxne peut pas être trié topologiquement. En revanche,
design write_tests design codeadmet deux résultats pour le tri topologique : design code write_tests et design write_tests code. Philippe a voulu utiliser une méthode assez bourine. Il a généré toutes les permutations possibles, et il a vérifié ensuite s'il en existait une qui réponde au critère. En fait, dans un premier temps, il a généré tous les arrangements avec répétitions ! En effet, cela se fait de façon très simple avec un glob, comme cela a été expliqué dans un compte-rendu précédent. Le problème, c'est que c'est du O(nn), et qu'à partir d'un certain nombre de sommets du graphe, le programme plante. Et même en-deçà de ce seuil, le programme est refusé par le jury, car il y avait une contrainte de temps.
die if ( condition )En fait, comme il l'a constaté dans le compte-rendu, le gagnant a codé
/expression régulière/ / $#+Comment ça marche ? Avec une division par zéro, ce qui provoque un die. En effet, $#+ est le dernier indice du tableau @+, et vaut 0 si le tableau comporte un seul élément. Avec une expression régulière particulièrement bien choisie, @+ comportera un seul élément dans le cas où le tri topologique est impossible.
print "Content-Type: text/html";on sait qu'on est mal barré pour la suite.
main () { printf "Hello world!\n" }et badaboum ! erreur de compilation. À noter que j'avais la réponse à ma première question, il y a bien un compilateur C. Néanmoins, j'ai voulu corriger le programme, je n'allais pas rester sur une erreur de compilation pour un programme aussi élémentaire. J'ai donc regardé mon programme, et j'ai réalisé qu'il manquait les #include habituels. Je corrige donc :
#include <stdio.h> #include <stdlib.h> main () { printf "Hello world!\n" }... et cela ne compile toujours pas. « Ah oui, me dis-je. Il faut un point virgule après chaque instruction, même si elle est suivie d'une accolade fermante. » D'où le programme :
#include <stdio.h> #include <stdlib.h> main () { printf "Hello world!\n"; }... qui continue à planter à la compilation. En jetant un œil perplexe sur ce programme, je m'aperçois après un certain temps d'observation que l'argument de printf n'est pas entre parenthèses. J'essaie alors :
#include <stdio.h> #include <stdlib.h> main () { printf("Hello, world!\n"); }et enfin, à la troisième tentative, ça a compilé et ça a fonctionné !
http://graner.net/nicolas/selcoiu/tau.jauejb//:dttyDouglas Hofstadter en a repris quelques-uns dans Ma Thémagie, sur une page de garde et dans le chapitre traitant, entre autres, de METAFONT. Pour ceux qui ont la même édition que moi, c'est à la page 266.