- Sylvain a été chargé de présenter Perl à une conférence de
Parinux.
Cette conférence est prévue pour le jeudi 18. Il s'agit d'une introduction
et d'une présentation de base. Lorsqu'il était étudiant, il avait déjà
fait une présentation de ce type et il a ressorti ses transparents
pour les mettre à niveau et les utiliser lors de la conférence.
D@vid évoque la conférence
Perl for the Impatient
qu'il avait suivie à
Amsterdam,
conférence qu'il avait appréciée, car au bout du temps imparti, l'assistance
avait acquis suffisamment de bases pour pouvoir écrire des programmes
intéressants (c'est-à-dire qui font un peu plus que
« Hello World »).
Le tutoriel est
disponible en PDF.
- BooK a jeté un coup d'oeil sur les transparents de Sylvain, pour
vérifier qu'il n'y a pas de bourdes. Il a vu du code inhabituel, par exemple
un map avec des parenthèses :
my @toto = map( { $_ += 10 } @titi);
là ou nous avons plutôt tendance à écrire
my @toto = map { $_ += 10 } @titi;
Sylvain n'a pas commis l'erreur de mettre une virgule entre le bloc et le
tableau, mais il a utilisé une syntaxe avec parenthèses qui évoque les appels
de fonction. Un peu plus loin, il y avait toutefois une erreur :
$scal = %hash # donne le nombre de clés
C'est faux. Évaluer un hachage en mode scalaire renvoie une chaîne dont l'interprétation
importe peu pour le commun des mortels. La seule chose à retenir est que si le
hachage est vide, cette chaîne vaut "0", soit une valeur « faux »,
et que lorsque le hachage comporte au moins une clé et une valeur, la chaîne sera
équivalente à « vrai » en contexte booléen. Pour les curieux, la chaîne
donne des indications sur la répartition des clés du hachage en buckets.
- Un autre point qui a étonné Philippe. Sylvain donnait un exemple de hachage
à plusieurs clés. Il alimente ce hachage ainsi :
$hash{"$cle1:$cle2:$cle3"} = $valeur;
Pour Philippe, lorsqu'il y a plusieurs clés, on fait une structure à plusieurs
niveaux, c'est-à-dire avec des références :
$hash{$cle1}{$cle2}{$cle3} = $valeur;
En fait, l'exemple de Sylvain est valide, car dans ce cas précis les
clés sont numériques et il n'y a en conséquence aucun risque que ces
clés contiennent un « : ». À l'époque de Perl 4, lorsque les
références n'existaient pas, les structures à plusieurs niveaux se
codaient en joignant les différents éléments de la clé, séparés par le
contenu de la variable $;. Habituellement, il s'agit du
caractère 034, soit CTRL-\, soit le
file separator, mais rien n'empêche d'utiliser un caractère
imprimable tel que « : ».
- Sylvain ayant utilisé l'opérateur « .. » en contexte de liste,
Philippe tente de lui expliquer le même opérateur en contexte scalaire.
C'est difficile à exprimer et lors de la réunion, il n'a pas trouvé une
explication suffisamment claire. En y réfléchissant le lendemain, j'ai trouvé
l'analogie suivante. Une condition (if, while ou autre) est
analogue à une porte automatique. La plupart du temps, il s'agit d'une porte
commandée par un tapis. Tant qu'une personne est présente sur le tapis,
la porte est ouverte et dès qu'il n'y a plus personne, elle se ferme.
Lorsque la condition comprend l'opérateur « .. », elle se comporte
comme une porte commandée par deux cellules photo-électriques (*).
Une cellule provoque l'ouverture de la porte, l'autre provoque sa fermeture.
Entre ces deux instants, la porte reste ouverte. Lors de la réunion, Philippe
a donné l'exemple habituel, qui consiste à extraire les entêtes d'un message.
Il s'agit de :
while (1../^$/) { ... }
L'opérateur « .. » en mode scalaire présente un autre
difficulté dans la mesure où les conditions booléennes ne sont plus interpêtées
exactement de la façon habituelle. La première condition, « 1 »
signifie « numéro d'enregistrement égal à 1 » et la deuxième
condition signifie « ligne vide » (expression régulière sur
$_). La porte s'ouvre lorsque la première cellule est actionnée,
c'est-à-dire lorsque l'on lit l'enregistrement numéro 1. Et elle se referme
lorsque la deuxième cellule est actionnée, c'est-à-dire lorsque le programme
lit une ligne vide.
(*) En fait, il s'agit généralement de
photopiles, mais l'utilisateur lambda ne fait pas la différence.
- Nicolas et Philippe évoquent diverses autres astuces très utiles lors
de compétitions de
golf.
Je crois qu'ils ont parlé notamment de l'astuce
exposée sur la liste par
Jérôme Quelin.
Pour compter le nombre de
lignes d'un fichier, l'idée première est de lire le fichier, puis à la
fin d'imprimer le compteur « $. ». Mais le plus
court, pour coder cette boucle, c'est d'utiliser l'option -n
de la ligne de commande, quitte à rajouter un bloc END. Cela
donne :
perl -ne 'END {print $.}' fichier
Lors de la compilation, ce morceau de programme est transformé en :
LINE: while (defined($_ = <ARGV>)) {
END {print $.};
}
Mais Philippe et Jérôme font mieux. Leur solution est :
perl -ne '}{print $.' fichier
ce qui se transforme en :
LINE: while (defined($_ = <ARGV>)) {
}{print $.
}
De la sorte, l'accolade ouverte par l'option -n est fermée
par l'accolade saisie dans le -e et l'accolade ouverte
dans le -e est fermée par l'accolade générée par -n.
- Pour aider les nouveaux à mieux comprendre la variable $_,
argument par défaut de nombreuses fonctions, il convient de faire l'analogie
avec le pronom it en anglais. À noter que Perl 6 sera plus souple,
et permettra de choisir la variable par défaut à l'intérieur d'une boucle.
L'apocalypse 4
donne des exemples du genre
for (@tableau) -> $x {
bla bla bla
}
et dans le corps de la boucle, c'est $x qui est l'alias tour à tour
de chaque élément de @tableau et qui est l'argument par défaut
des opérateurs sans opérande comme chomp; ou s/titi/toto/g;.
On pourra même parcourir les éléments d'une liste deux par deux, avec une
boucle du genre
for (@tableau) -> $x, $y {
bla bla bla
}
Attention, ce n'est pas valable pour parcourir un hachage. En Perl 6, un
hachage est une liste de paires, ce qui change énormément par rapport à
Perl 5 lorsque l'on alimente un tableau avec un hachage. Au lieu
d'obtenir une liste à 2.n éléments, avec alternance des clés
et des valeurs, on obtiendra une liste à n éléments, chacun d'entre
eux étant une paire (clé => valeur). Pour obtenir une liste
alternant les clés et les valeurs, il faut utiliser la propriété kv
du hachage.
for (%hachage).kv -> $k, $v {
bla bla bla
}
- Une autre différence entre Perl 5 et Perl 6, c'est que l'accès à un élément
de tableau se fera par @toto[$i] au lieu de $toto[$i]. Philippe
Bricout (absent de la réunion, mais dont les propos sont rapportés par Nicolas)
regrette cela, car l'opposition $toto[$i] <-> @toto
lui rappelle l'opposition singulier <-> pluriel dans les langages
naturels. [ Autant j'approuve certaines analogies entre Perl et les
langages naturels, autant cette analogie m'a toujours parue tirée par les
cheveux. ] Ce changement inquiête D@vid. Lorsqu'il faudra convertir
un programme de 50 000 lignes, comment être sûr de ne rien oublier ?
BooK et moi lui signalons qu'il est prévu d'avoir un convertisseur p52p6
(qui se prononce Perl five to Perl six, aucun rapport avec le nombre de semaines
dans une année) qui fera le boulot, sauf dans les cas les plus tordus.
- Un point que les débutants ont du mal à assimiler, c'est qu'il ne faut pas
utiliser local, mais my. Dans mon cas, j'ai mis un
certain temps avant d'admettre que l'on pouvait avoir une variable my
au niveau d'un fichier, je croyais que ce n'était valable qu'à l'intérieur
d'un bloc délimité par des accolades. Un point que David n'avait pas compris,
c'est que les déclarations package n'ont aucune influence sur
la visibilité d'une variable my.
my $x;
sub toto {
print $x; # moi : « $x est toujours visible, ah bon »
}
package foo;
print $x; # David : « et là aussi, $x est toujours visible ? »
- Dans une optique plus générale, il est assez facile d'apprendre les rudiments
de Perl et d'avoir un niveau équivalent au babil enfantin, mais il est plus
dur d'arriver à un niveau de maîtrise convenable du langage, niveau correspondant
à un adulte parlant une langue naturelle.
- Lorsqu'un débutant pose une question sur la liste ou sur un forum,
les codeurs confirmés répondent souvent par un simple perldoc perlfunc
ou perldoc perlvar. Mais il faut reconnaître que la documentation
n'est pas d'un abord facile pour un débutant. Comme disait une célébrité de Perl
et comme le rappelle BooK, la documentation présente deux gros problèmes
simultanément :
- il n'y a pas assez de doc,
- et il y a trop de doc.
En effet, si l'on se pose une question bien spécifique, on ne trouve pas
la réponse à la question, mais dès que l'on élargit quelque peu
le champ de la question, alors on est submergé par l'abondance de texte.
Philippe évoque aussi le cas suivant. Lorsque quelqu'un cherche à avoir
des renseignements sur les références, il (BooK) répond perldoc perlref
avec quand même des éléments de réponse pour la question particulière.
Mais il a constaté très récemment qu'il existait aussi un perlreftut.pod,
qui présente les références sous la forme d'un tutoriel au lieu de constituer
un document de référence, précis et complet certes, mais rébarbatif.
Donc, si même nous autres ne savons pas la liste des fichiers intéressants
de la doc, il y a un problème.
- Marianne est venue pour faire un article sur les Mongueurs de
Perl (ou les Perl Mongers) et sur Perl. Je n'ai
quasiment pas suivi les questions qu'elle a posées. N'importe
comment vous pourrez les lire dans
Linux Magazine.
Je me souviens seulement qu'elle a demandé
s'il existait des logiciels écrits en Perl. Oui, il y a
- Majordomo (gestion de liste de diffusion),
- Sympa (même chose, plus récent et mieux),
- Bugzilla (recueil des problèmes rencontrés dans Mozilla),
- Slashcode (moteur de certains sites web, donc Slashdot),
- ...et Frozen Bubbles, un jeu bien connu.
- Philippe nous parle du module
Game::Golf
auquel il collabore.
En ce moment, il est en train de supprimer des fonctionnalités.
En effet, l'un des autres développeurs a des tas d'idées sur ce que
le module pourrait et devrait faire et Philippe tente de limiter
l'exubérance de cette personne et de limiter le module au strict minimum.
Notamment, quasiment dès le début le module comportait la possibilité
de traiter le courrier électronique
(phénomène connu)
et Philippe a estimé que cela n'était pas indispensable.
- Nicolas a écrit des modules, mais il n'ose pas les mettre sur
CPAN.
Il préfère les soumettre à une revue de code en
comité restreint,
avant de les rendre disponibles au monde entier. Il profitera donc du
serveur CVS
des Mongueurs de Perl pour nous les
soumettre, et lorsque nous lui aurons fait toutes remarques
utiles, il les chargera sur CPAN pour le bénéfice de la
communauté mondiale Perl. Philippe lui répond que, du moment que
la distribution comporte un script test.pl ou un
répertoire t/ avec quelques scripts de test, cela montre
qu'il a fait l'effort de tester son programme.
- David a examiné la liste des abonnés à perl@mongueurs.net.
Il y voit une majorité d'adresses provenant des fournisseurs d'accès publics
(Club Internet,
Free,
Wanadoo,
etc) et une proportion notable
d'abonnés utilisant leur adresse professionnelle. Il existe également
quelques personnes qui utilisent leur nom de famille comme nom de
domaine et qui par conséquent gèrent eux-mêmes leur serveur de
courrier. En revanche, une population totalement absente de la liste
est celle des universitaires (professeurs et étudiants confondus).
Il semblerait que Perl ne soit pas enseigné ni utilisé dans les
facultés.
- Jacques demande l'effectif de la liste. Aux dernières nouvelles,
nous sommes 190 abonnés. Jacques s'occupe d'une
liste consacrée à la psychanalyse et à Lacan.
Le sujet a beau être très étroit,
il a environ 500 abonnés sur sa liste. Il est vrai que
perl@mongueurs.net ne concerne que la France. Mais les
abonnés de la liste de Jacques sont francophones à 90 %.
Il est donc étonné qu'il y ait si peu de monde sur notre liste.
- Il existe d'autres listes francophones pour Perl, mais on peut se poser
des questions à leur sujet. J'ai constaté dans l'annuaire
des listes Perl qu'il en existe une nommée Perl-FR, mais elle
est moribonde. L'un des participants à la réunion s'est abonné à cette liste,
mais il n'a reçu que trois messages. Il paraît qu'il en existe une
dont le nom comporte oghma, mais je ne sais rien de plus à son sujet.
- D@vid évoque le compte-rendu de la réunion de février,
à laquelle je n'ai
pas participé. Il voulait s'en occuper et pour ce faire il a envoyé un message
sur la liste pour que les participants rassemblent leurs souvenirs, ce
qui lui permettrait de rédiger le compte-rendu. Lorsqu'il a vu le résultat
de son appel, il a eu l'impression qu'il n'arriverait pas à obtenir un
compte-rendu aussi détaillé que ce que je fais habituellement et il a
laissé tomber. De mon côté, je n'avais pas compris qu'il voulait s'occuper
personnellement de la rédaction du compte-rendu, donc j'ai cru que
les réponses des participants m'étaient destinées et j'ai écrit le
compte-rendu en les reprenant telles quelles (après une correction orthographique
partielle) et en ajoutant quelques liens. J'ai bien été un tout petit peu
étonné que D@vid lance la collecte des souvenirs et qu'il n'y participe pas
lui-même.
- BooK évoque les comptes-rendus passés en général. Il arrive fréquemment
qu'un lien devienne périmé. Faut-il les laisser tels quels, ou faut-il
tenter de retrouver la page web (ou un équivalent) ? Je préfère
mettre à jour le compte-rendu, pour éviter des liens périmés, quitte
à enlever les liens si je ne trouve pas de page web les remplaçant.
- Sylvain demande des précisions sur l'Association et sur la
liste de diffusion. Je ne vais pas rappeler ici ce qu'est
l'association,
il en a été longuement question dans les discussions avec d'autres
personnes et dans les comptes-rendus précédents. Simplement, j'ai
cru comprendre que l'interlocuteur de Sylvain lui indiquait
que la liste avait un trafic léger, du genre 10 ou 20 messages
par jour. Or, j'écris ces lignes le 17 avril, juste après
avoir constaté que ce jour même, entre 8 heures et
19 heures 30, il y a eu 57 messages !
- L'un des sujets les plus longuement évoqués lors de la réunion est
celui du spam.
Dans le temps, les messages de spam étaient repérables
de loin. Mais on commence à recevoir des messages un peu plus subtils.
Certains ont reçu par exemple un message d'une personne inconnue, mais
qui semble bien connaître son correspondant. Ce message parle de choses
anodines (« Je suis bien rentrée après la soirée de l'autre fois »,
« j'ai perdu mon carnet d'adresses ») et termine en signalant :
« ça y est, j'ai fini mon site web. Il est sur Internet à l'adresse
http://www.lucette.com/ ». Si l'on consulte le site web de
cette charmante personne, on peut constater qu'en plus de son carnet d'adresses,
elle a perdu sa garde-robe, si vous voyez ce que je veux dire...
[ Sauf que www.lucette.com existe
réellement, mais ce site risque de ne pas pouvoir satifaire vos
instincts lubriques. ]
- Tout le monde (*) sait qu'il ne faut pas mettre son
adresse mail personnelle dans une page web et que lorsque l'on participe à un forum
de discussion, il faut maquiller son adresse de façon qu'un humain puisse
la reconstituer sans problème, mais qu'un robot soit incapable de le faire.
Cela dit, tout danger n'est pas écarté. Par exemple, certains individus
malfaisants lancent des requêtes whois pour obtenir des adresses
à spammer !
(*) Enfin, pas tout le monde. Disons plutôt, tous les participants
à la réunion et autres internautes du même niveau. Cela réduit déjà pas mal.
- Pour savoir comment le spammeur se procure des adresses, sur quel site il les
moissonne ou bien à qui il les achète, un moyen simple est de faire varier un
tout petit peu l'adresse, tout en restant dans les limites autorisées par
la RFC 822
(ou maintenant 2822).
Utiliser au choix :
"Marcel Dupont 1" mdupont@fourn.acces.com
"Marcel Dupont 2" mdupont@fourn.acces.com
"Marcel Dupont 3" mdupont@fourn.acces.com
sur les différents forums, sur CPAN, sur sa page personnelle et ainsi de suite.
D'accord cela n'empêchera pas de recevoir du spam, mais au moins on découvre
les connexions entre spammeurs.
- Lorsque l'on se connecte à un site FTP avec le code anonymous, il est
d'usage de donner son adresse mail dans le mot de passe. Pour cela, la plupart
des navigateurs web proposent d'envoyer automatiquement ce code et ce mot
de passe lorsque l'on accède à un site FTP. Le problème, c'est que certains
sites web, accessibles par le protocole HTTP, comportent des images dont l'adresse
est
<img src="ftp://foobar.com/pub/img01.jpeg">
Dans ce cas, constatant qu'il faut utiliser le
protocole FTP, le navigateur se connecte au site foobar.com avec le code
anonymous (pas grave) et le mot de passe
marcel.dupont@fourn.acces.com (beaucoup plus problématique...).
D'accord pour envoyer notre adresse mail aux sites FTP, mais seulement
lorsque nous le décidons en la tapant
nous-mêmes. Il ne faut pas laisser le navigateur le faire à notre place.
- Ainsi que l'ont constaté tous ceux qui ont une adresse sur CPAN, de nombreux
spams proviennent de Corée. Nicolas a donc décidé de configurer son logiciel
de courrier électronique de manière à supprimer tout ce qui est codé
en Big 5 (le codage principal pour les caractères chinois) et tout ce qui
vient d'une adresse avec un TLD .kr.
- Une personnalité du monde Perl (Tom C ou M-J.D ?) avait adopté la
démarche suivante. Lorsque sa machine recevait un mail provenant d'un
fournisseur d'accès pratiquant le spam, elle renvoyait automatiquement
une réponse expliquant que le message venait d'un fournisseur d'accès
auquel il ne faisait pas confiance et que si l'envoyeur souhaitait
réellement envoyer un message à (Tom C|M-J.D), il fallait
obligatoirement placer le mot bla bla bla dans le corps du
message.
- Un des participants à la réunion a une autre façon de procéder.
Un message de spam sert à persuader le destinataire d'aller visiter
un site web, dans lequel il pourra acheter un bien ou un service en
cliquant sur un lien mailto:. L'idée est d'aller effectivement
sur ce site web et de repérer ce lien. Ensuite, la victime du spam
adapte son gestionnaire de courrier électronique (Procmail ou autre)
pour transférer automatiquement tous les spams futurs à cette adresse.
Les spammeurs sont punis par où ils ont péché...
- Il est question des différents moyens de contourner les limites
de TCP/IP. Lorsqu'un firewall ferme tous les ports sauf le strict
minimum (80 pour HTTP et quelques autres), il y a toujours moyen
de s'arranger. L'an dernier, il y avait eu une RFC indiquant comment
faire du
« TCP over HTTP »,
mais en fait, on peut faire
quasiment « n'importe quel protocole over n'importe quel protocole ».
- À noter qu'au début du mois (le 1er avril, donc), nous
avons eu droit à une
RFC « IP over XML ».
Il existe aussi,
paraît-il, une RFC « Ethernet over XML ».
- Comment recevoir du courrier personnel au boulot en toute
confidentialité ? D'accord, l'employeur n'a pas le droit de lire
le courrier de ses employés sans les avoir avertis au préalable. Mais
c'est le genre de règlement du type « faites-le si vous voulez,
mais ne vous faites pas attraper ». Si un employeur veut se
débarasser d'un salarié, il peut trouver un prétexte qui n'a rien à
voir avec le courrier électronique reçu par l'employé. C'est encore
plus vrai pour un client qui veut se débarrasser d'un
prestataire. Donc, comment recevoir du courrier personnel sans que
l'employeur en prenne connaissance ? Simple, utilisez le
protocole « email over spam » ! Dans un texte de
plusieurs lignes promettant de l'argent, de la gloire, des femmes et
toutes sortes de choses, votre correspondant glisse une ligne ou deux
avec le véritable message qu'il veut vous envoyer. Il existe un terme
pour cela, c'est la « stéganographie ».
- Dans les temps préhistoriques où les ordinateurs communiquaient
par disquettes, les virus étaient peu nombreux et leur diffusion très
lente. Les fabricants d'anti-virus avaient le temps de mettre leurs
programmes au point et de les tester à fond. Maintenant, avec Internet
et les logiciels de courrier capables d'envoyer du courrier à votre
place, la diffusion se mesure en heures, voire en minutes. Nicolas
évoque ainsi l'apparition du virus IL*VEYOU et nous raconte qu'il a
vu au fil des minutes sa progression en France dans la direction est-ouest.
Au bout d'un certain temps, le courrier électronique était complètement
bloqué. Pour correspondre avec d'autres personnes il a eu recours
aux newsgroups (qui, eux, continuaient à fonctionner correctement).
- Il est possible de prévoir des mesures prophylactiques contre
les virus informatiques et contre les failles de sécurité. Une façon
de faire consiste à créer des logiciels périssables, qui cessent de
fonctionner à une date donnée. L'administrateur est alors obligé
d'installer la nouvelle version, dans laquelle les failles de sécurité
connues ont été rebouchées. Une autre mesure consiste à vérifier la
vraisemblance des actions demandées au logiciel. Par exemple, dans
le cas d'un logiciel de courrier électronique, il est peu vraisemblable
qu'un utilisateur envoie des messages à la cadence de 3 ou plus par seconde.
- Nous avons beaucoup parlé de spam, mais il faut relativiser les choses. Le
spam n'est pas le phénomène qui pompe le plus de ressources sur Internet. Comme
le disait l'un des participants, « Le trafic sur Internet est
essentiellement dû à deux causes : les images cochonnes et Nimda. »
- En voyant la couverture de
Programmation en Perl,
Frank a eu l'impression que cela représentait un dromadaire en
train de piétiner Perl. Apparamment il est le seul à y voir cela,
personne d'autre n'avait été choqué par cette couverture, ni par
les autres couvertures O'Reilly où un autre animal est en train
de piétiner un autre logiciel.
- Autre anecdote à propos d'une couverture O'Reilly. Récemment,
O'Reilly
a annoncé la parution d'un livre sur CAML. Il s'agit de la
traduction en anglais d'un
livre
paru chez
O'Reilly France,
mais
les anglophones consultant le site de O'Reilly USA n'y ont pas
prêté attention. Un jour, Robin Houston a fait la remarque suivante
sur use Perl; :
« Tiens, un livre sur CAML ! Mais quel
animal vont-ils mettre sur la couverture ? » Réponse
de Philippe : « Un percheron, pourquoi ? »
- Il faut mettre des commentaires dans ses programmes, pour expliquer
pourquoi on a programmé ainsi tel ou tel morceau de programme.
Dans certains cas, le morceau de programme en question est
tiré en droite ligne d'un livre tel que le
Mouflon,
ou bien le programmeur a posé une question et obtenu la réponse
sur une liste de diffusion ou un forum. Dans ce cas, certains
participants à la réunion préfèrent commenter le programme en
mettant uniquement l'URL de la réponse ou la référence et le
numéro de page du livre, plutôt que de (mal) paraphraser la
réponse.
- Marianne est journaliste pour Linux Magazine. Mais elle
ne fait pas du tout de programmation. Elle est venue à l'informatique
par le biais de ses études en géographie, car à la faculté elle a travaillé
sur un projet où il fallait faire du traitement d'images sur des clichés
satellite. Elle a ainsi appris à travailler avec les ordinateurs et à
les apprécier, à condition qu'ils ne plantent pas trop souvent.
Elle ne programme pas, mais en revanche elle n'a aucune difficulté
à lire un README, lancer ./Configure et installer
elle-même des applications.
- Les cordonniers sont les plus mal chaussés. Le numéro d'avril
de Linux Magazine est disponible depuis jeudi 4 en kiosque,
les abonnés l'ont reçu le samedi 6 et à la date du mercredi 10,
les collaborateurs (au moins Marianne) ne l'avaient toujours pas reçu.
- Le monde de l'informatique est un monde plutôt masculin, mais Marianne
ne se sent pas une étrangère malgré tout. Je fais remarquer que, même
si c'est un monde essentiellement masculin, nos sujets de conversation
n'ont quasiment rien à voir avec les bagnoles et le foot-ball.
Et malgré tout, il existe des représentants de la gent féminine
qui font de la programmation. Nous avons eu la visite
de Sara et
d'Isabelle
et sur la liste il y a une autre Isabelle et également Rachida.
- Lorsque vous consultez un CD-ROM Mandrake, ou le
site web de Mandrake,
vous pouvez obtenir la liste de tous ceux qui ont participé au développement
de la distribution. À la ligne
« localisation »
(L10N pour les
intimes), il y a un seul nom, Pablo Saratxag. Or la Mandrake est
disponible en français, en anglais, en italien, en... Ce n'est tout de
même pas lui tout seul qui a tout traduit ! Éh bien si, c'est lui
qui a tout fait. Il connait je ne sais pas combien de langues, y compris
le basque et le breton.
- Un collègue de Philippe a été chargé d'éplucher des fichiers log.
Pour Philippe, l'utilisation de Perl s'impose, pour reconnaître le
texte des messages et en extraire les informations intéressantes.
Mais le collègue de Philippe a préféré écrire un programme en C,
« car comme cela, je maîtrise ce que je fais. »
Il s'est donc mis au boulot sur ce programme, et il y est toujours.
Philippe a essayé de le faire en Perl, mais il y est toujours,
pour la bonne raison que le programme est mal défini, et qu'il ne
sait pas ce qu'il faut faire exactement.
[ Note de Philippe : J'ai écrit le programme le lendemain de
la réunion, en suivant les conseils de Guy : écrire un programme
qui écrit un programme. Ainsi, le programme lancé par eval
est parfaitement optimisé pour les opérations requises. Certes, il est
plus lent, mais extrèmement plus souple, puisqu'il permet d'utiliser
tous les opérateurs Perl pour les tests. Enfin, il m'a fallu au total
un jour et demi pour le coder, et le documenter en partie, alors que mon
collègue doit en être à sa troisième semaine de développement, et ne peut
comparer que des chaînes. J'ai même depuis découvert que je pouvais faire
mes filtres avec des tests auxquels je n'avais pas songé en écrivant le
programme ! ]
- BooK évoque le cas, il y a plusieurs années, d'un ami qui avait
postulé pour un emploi. Parmi les qualifications requises pour
cet emploi, il fallait avoir deux ans d'expérience sur Java.
Le problème, c'est que Java venait de sortir à peine un an plus
tôt. Donc, à moins d'être un ancien de Sun et d'avoir participé
au développement du langage, il était difficile de rassembler les
qualifications nécessaires. L'ami de BooK a quand même été embauché.
- Pour David, l'une des critères d'appréciation les plus importants des ordinateurs
est le niveau sonore. Un jour, un de ses collègues a commandé
quelques machines pour rajeunir le matériel. David lui a rappelé
ses préférences : il est essentiel que ce soit silencieux.
Les machines arrivent, David en branche une et l'allume. Elle
faisait un bruit infernal. Il ôte le capot pour voir ce qu'il y
avait dedans et il voit pas moins de six ventilateurs. Un pour l'unité
centrale, deux pour l'alimentation, et je ne sais plus ce que faisaient
les autres.
- William Gibson est le premier romancier et le plus célèbre à avoir
écrit du « cyber-punk ». On peut penser qu'il s'y connait en
matière d'ordinateurs. Pourtant, la première fois qu'il en a vu un
fonctionner, il a été affolé par le boucan que ça faisait, et il a demandé
une réparation, car le bruit ne lui semblait pas naturel. En fait,
jusqu'à ce jour-là, il ne connaissait de l'informatique que les
consoles de jeu SEGA,
et toute son oeuvre romanesque est basée
sur les consoles SEGA.
- Après la fin de la réunion, certains (dont Nicolas à qui je dois
cette information) ont continué à discuter sur le trottoir de sujets
tels que les modules Linux sur la sécurité. Il existe de la documentation,
parfois concise,
parfois plus dense.