31 décembre 2013
L'informatique n'est pas magique
Un geek à Hogwarts
On peut mesurer sa progression en informatique à la part de xkcd que l'on comprend ou bien, pour les non-scientifiques dans mon cas, à la part de magie qui subsiste dans le fonctionnement de l'ordinateur. Par exemple, le passage d'un langage lisible par l'être humain en bits utilisables par la machine est pour moi de la magie. Je sais que le tour de prestidigitation a pour nom compilation mais je n'en connais pas le truc. Du coup, la création d'un langage me semble un acte démiurgique, qui me rappelle l'abîme de perplexité dans lequel m'avait plongé cet adage de mon ex-beau-père : « Si tu ne trouves le livre que tu cherches, écris-le. » Aujourd'hui, cela me paraît évident mais ma réaction, à douze ans, était de me demander comment diable je pourrais écrire un livre si ce que je ne savais pas était justement dedans. Treize ans plus tard, j'ai de nouveau douze ans en informatique : comment diable peut-on faire reconnaître à la machine un langage qu'elle ne connaît pas si c'est par celui-ci qu'on lui transmet des directives ? On dirait un mauvais remake de Rousseau sur l'origine de la langue. Exeunt la poule et l'œuf, place à la magie.
S'initier à l'informatique, c'est faire refluer la magie. Le cours réseau s'est ainsi chargé de me faire comprendre que les câbles, la fibre et le WiFi ne sont que matériaux, ondes et électricité. Finis les 0 et les 1 vert fluo qui circulent dans les câbles comme dans une guirlande de Noël clignotante : voilà les hertz, ohms, microns et calculs de masques de réseau (ça a l'air un peu chiant comme ça mais je vous rassure : ça l'est). Exit la magie, place à la physique. Sur le coup, on a un peu l'impression de se faire avoir au change mais ce n'est pas toujours le cas : les cours d'algorithmie et de programmation, notamment, m'ont appris ce qui se cachait dans un programme et c'est là que ça devient excitant. Exit la magie, place aux formules magiques. Pour être honnête avec vous, les formules magiques ne sont que logique et linguistique. Cela dit, l'apprentissage du geek ressemble beaucoup à celui de l'apprenti sorcier : très peu d'Hermione et beaucoup de résultats inattendus. Mais avec beaucoup d'entraînement, cela paraîtra vraiment magique aux moldus. Prêts pour une introduction aux sortilèges algorithmiques ? Promis, je serai moins ennuyeuse que professeur Flitwick et vous allez être surpris du peu de notions croisées.
Image extraite de Matrix
L'algorithmie : une affaire de boîtes à chaussures et d'aiguillages de train
Les suppléments sont là pour approfondir mais peuvent être allègrement sautés si vous commencez à en avoir assez.
Les boîtes à chaussures
Les boîtes à chaussures vont nous permettre de ranger tout un tas de choses dedans : ce sont des variables, qui permettent de stocker des valeurs. Ces valeurs sont de différents types, selon que les boîtes contiennent des baskets, des escarpins, des mocassins, des tongs... c'est-à-dire, des chiffres, des chaînes de caractères ou des booléens qui, comme les interrupteurs n'ont que deux valeurs : allumé/éteint, vrai/faux, oui/non.
Le supplément André. On ne peut pas mettre n'importe quelle paire de chaussure dans une boîte à chaussure : des chaussures de sports ne peuvent pas aller dans une boîte de chaussures à talons et vice-versa (bah, oui, les chaussures de sports puent). En revanche, des chaussures à talons peuvent aller dans la boîte d'autres chaussures à talons ; il faut juste faire attention à ce que la boîte soit assez grande de manière à ce que les talons ne soient pas ratiboisés. Les chaussures à talons sont des données numériques : on peut faire entrer un chiffre entier (des petits talons) dans une variable qui accepte les chiffres à virgule (des talons aiguilles) mais pas l'inverse, sous peine de faire perdre sa virgule au chiffre (talons ratiboisés).
Le supplément Louboutin. Les chaussures que nous manions sont particulièrement fragiles : toute paire de chaussure posée par terre est désintégrée. Pour échanger les boîtes de deux paires de chaussures, il en faudra donc une troisième, vide.
Les armoires
Les armoires vont nous permettre de ranger toutes les boîtes à chaussure que nous avons utilisées : ce sont des tableaux, dans lesquels ranger des variables.
Le supplément Ikéa. Si vous avez des centaines de paires de chaussures, les trier ne sera pas du luxe – par prix, date d'achat, pointure, couleur... en ordre croissant en décroissant. Il existe plusieurs techniques pour cela, dont une qui porte le nom très poétique de « tri à bulles ». Dans tous les cas, il vous faudra un critère de tri et un test en fonction duquel ranger les chaussures. Par exemple, pour un tri selon la saison à laquelle elles se portent : si ce sont des chaussures d'hiver, elles vont en haut de l'armoire, sinon, ce sont des chaussures d'été, elles vont en bas. C'est là que nous allons devoir brutalement changer de métaphore : on ne peut pas faire des kilomètres à pied avec des talons aiguilles ; nous allons donc prendre le train (après tout, les wagons ne sont toujours que de grosses boîtes à chaussures).
Les aiguillages
Les aiguillages permettent en un point donné d'orienter les trains selon leur destination prévue : ce sont des tests, où une certaine action est effectuée si la condition est remplie.
Le supplément SNCF. Si un TGV en provenance de Lille arrivant à Paris a pour direction Bordeaux, on l'envoie vers le sud-ouest ; s'il a pour direction Avignon, on l'envoie au sud-est. Plus court : s'il a pour direction Bordeaux, on l'envoie vers le sud-ouest, sinon vers le sud-est. Imaginons que l'on ne sait pas d'où vient le TGV (la SNCF permet un tel débordement d'imagination) ; nous avons alors un embranchement de plus et le test ressemblera à : si le TGV a pour direction Bordeaux, on l'envoie au sud-ouest ; s'il a pour direction Lille, on l'envoie au nord, sinon on l'envoie au sud-ouest. De deux choses l'une : soit le TGV vers Strasbourg est en grève, soit il fonctionne et tous les trains vers Strasbourg vont se retrouver vers Avignon, auquel cas, il faut encore rajouter une condition : si le TGV a pour direction Bordeaux, on l'envoie au sud-ouest ; s'il a pour direction Lille, on l'envoie au nord ; s'il a pour direction Strasbourg, on l'envoie à l'est, sinon on l'envoie au sud-ouest. Vous avez vu les principales formes de test :
– si (condition) alors (conséquence)
– si (condition) alors (conséquence), sinon (autre conséquence)
– si (condition 1) alors (conséquence 1), si (condition 2) alors (conséquence 2), si (condition n) alors (conséquence n)
– si (condition 1) alors (conséquence 1), si (condition 2) alors (conséquence 2), si (condition n) alors (conséquence n), sinon (conséquence par défaut)
Le supplément omnibus. Pour être précis, il faudrait en réalité que les conditions soient multiples. Non pas « si le TGV est à destination de Strasbourg » mais « si le TGV est à destination de Reims ou de Reitz ou de Strasbourg ». Je vous épargne toutes les directions desservies à partir de Lyon.
Les boucles d'or
Les boucles d'or, c'est boucle d'or qui revient à chaque fois qu'on lit Boucle d'or et les trois ours. Parce qu'il est dans la nature des contes d'être répétés mais qu'un adulte vire beaucoup plus vite fou que l'enfant à qui il le lit chaque soir, on a imaginé d'enregistrer le conte et de laisser la cassette ou le mp3 à l'enfant pour qu'il se le repasse ad vitam aeternam s'il le veut. Comme la boucle infinie n'est pas très pratique dans la mesure où l'on attend d'autres choses du gamin, genre aller à l'école ou prendre un bain, le parent fixe une limite : tu pourras écouter Boucle d'or et les trois ours trois fois d'affilée maximum ou tu pourras l'écouter jusqu'à ce qu'il soit l'heure du bain. Les boucles d'or sont tout simplement les boucles par lesquelles on automatise le traitement de tâches répétitives, en fixant une condition d'arrêt.
Le supplément fins alternatives. Imaginons maintenant que Boucle d'or et les trois ours soit transformé en livre dont vous êtes le héros (merci de faire comme si vous ne m'aviez jamais vue avec une casquette d'éditrice) : certains choix vous font traverser toute l'histoire quand d'autres vous en éjectent rapidement (l'ours tue boucle d'or d'un revers de pâte, boucle d'or n'a pas sommeil et se contente de manger à tous les râteliers avant de se tirer...). Vous avez une magnifique boucle qui exécute une action (continuer l'histoire) tant que l'on n'a pas rencontré la fin (c'est-à-dire tant que l'on nous donne un numéro de section auquel se rendre). Tant que et jusqu'à : voilà vos deux types de boucles.
Voilà, c'est tout.
Je vous la refais : c'est tout. Genre, c'est fini, vous avez tous les éléments en main. Quand le prof d'algo nous a sorti ça, j'ai cru que ça rentrait dans sa moyenne d'une blague toutes les dix minutes. Sauf que non, on a vraiment tous les éléments en main : boîtes à chaussures, armoires, aiguillages de train et boucles d'or. Le cocktail Molotov qui résulte de la combinaison de tous ces éléments est un programme informatique. Si vous n'arrivez pas à envoyer des armoires de boîte à chaussures à Bordeaux tant qu'il y a un gamin qui écoute boucle d'or dans le train, le cocktail explosera et, lorsque la fumée se dissipera, vous verrez surgir un bug. On n'imagine pas la menace sanitaire que représentent les métaphores mal filées.
Sculpture en lego de Nathan Lawaya
Notre-Dame de Paris en lego
Imaginer coder Twitter, Photoshop ou Candy Crush avec si peu d'outils algorithmiques, c'est un peu comme si on vous demandait de construire la cathédrale Notre-Dame de Paris avec une boîte de lego, quand un pauvre cabanon de jardin vous donne déjà des sueurs froides. Pour vous donner du cœur à l'ouvrage, on vous apprend que, lorsque vous aurez trouvé quelle forme donner à une pierre pour la façade, vous n'aurez pas à recommencer, mais seulement à filer le mode d'emploi au tailleur de pierres, qui vous les fournira au moment d'élever le mur. C'est le principe d'une fonction, un petit bout de code (pas toujours petit, d'ailleurs), qu'on peut réutiliser à volonté. Certaines fonctions sont présentes de base dans le langage (des fonctions mathématiques qu'on trouverait dans une calculatrice, par exemple) et on en crée d'autres selon ses besoins.
Mais les besoins sont immenses pour une cathédrale : l'architecte, qui ne peut pas être à fois vitrier, charpentier, maçon et sculpteur, va donc chercher le savoir-faire là où il se trouve – dans des bibliothèques, qui sont des recueils de fonctions dans lesquels on peut piocher. S'il a beaucoup de chance, l'architecte trouve une bibliothèque-sculpteur qui va lui fournir une fonction-gargouille prête à l'emploi. Mais, la plupart du temps, il ne trouvera qu'un nez de singe et des cornes de bœuf avec lesquels il devra composer lui-même sa gargouille. Rien ne dit que en plus que les cornes seront à la bonne taille, que les pattes seront assez solides pour supporter la tête ou que le nez sera dans la bonne matière : on trouve parfois la bibliothèque dont on rêve... dans un autre langage que celui de notre programme. Si l'on a de la chance dans son malheur, le matériau initial supporte qu'on lui ajoute un revêtement, faisant ainsi dialoguer les deux langages ; sinon... pas de chance. Ces bibliothèque sont un peu comme du prêt-à-porter taille unique : ça peut aller du premier coup mais, dans la plupart du temps, il faudra des retouches, beaucoup de retouches, encore des retouches. Et donc, du temps, beaucoup de temps, encore du temps. Et de même, des développeurs qu'il faudra bien manager, sous peine de s'apercevoir trop tard que le sublime vitrail composé à la perfection est trop grand par rapport à l'espace qu'on lui a réservé dans la façade.
Imaginez un peu l'organisation qu'il faut. Au bout de cinq minutes, tous les plans et modes d'emplois rassemblés auprès des différents corps de métier sont éparpillés, les informations sur la clé de voute perdues sous des dessins de gargouille. Pour éviter ça, on rassemble les modes d'emplois et outils spécifiques à un élément dans un même endroit, une même classe. Avec la classe « pierre de façade », on pourra utiliser autant de pierre qu'on en a besoin (pourvu qu'on n'ait pas oublié de les commander au tailleur de pierre) ; avec la classe « gargouille », on obtiendra autant de bêtes cornues qu'on voudra, même si un sculpteur s'occupe du museau et un autre des pattes. Simple, non ? Sauf que, deux minutes, plus tard, c'est à nouveau le bazar : classe « pierre de façade », classe « gargouille », classe « vitrail rond », classe « vitrail vertical », classe « pierre de colonne », classe « sculpture de saint », classe « pierre de voûte »... On créé donc des classes mères, qui contiennent des classes filles : la classe mère « pierre » chapeautera les classes filles « pierre de façade », « pierre de colonne », « pierre de voûte », tandis que les classes filles « vitrail rond », « vitrail vertical » hériteront de la classe mère « vitrail ». Et vous pouvez jouer longtemps aux poupées russes, comme ça, avec des filles qui deviennent à leur tour mère, sur des générations.
Alors, ça vous botte, les lego ? On peut faire de grandes choses en lego. Ou pousser des hurlements en posant les pieds sur des pièces éparpillées par terre, perdre l'équilibre sous l'effet de la douleur et s'étaler sur la gargouille en construction (vous aurez reconnu les bugs, métamorphosé en pièces de lego). C'est pour ça qu'on commencera par le cabanon de jardin. Ok, c'est moins glamour, mais franchement, a-t-on jamais autant rêvé que dans une cabane dans le jardin de ses grands-parents ? C'est ça, la magie de l'informatique : commencer petit et avancer sur des épaules de géants.
19:48 Publié dans D'autres chats à fouetter, Souris de laboratoire | Lien permanent | Commentaires (0) | Tags : informatique, code, programmation
25 septembre 2013
Geeks ♥ GNU
La formation palpatinienne pour geekification murine continue et j’y mets du mien. Jugez plutôt : j’ai zappé le déjeuner pour seulement prendre une douche après le cours de danse et filer à la conférence de Richard Stallman à l’autre bout du monde. À 15h, je m’installe dans un amphithéâtre de Paris 8, un sandwich pavot-jambon cru-tomates séchées à la main – enfin ! Après quelques bouchées, alors que je peux enfin m’intéresser à autre chose qu’à mon estomac en détresse, je commence à observer la faune qui m’entoure.
Il y a quelques portables de sortis, couverts de stickers contre les DRM et pour les logiciels libres. Je soupçonne leurs propriétaires de les avoir choisis imposants uniquement pour disposer d’une plus grande surface à recouvrir. Les T-shirts ne sont pas en reste, avec les DRM assimilés à des produits toxiques, sigles à l’appui – la parfaite panoplie du militant gauchiste appliquée au logiciel libre. Tout le monde est sous Linux, pardon, pardon, GNU/Linux, et la conférence n’a pas encore commencé qu’on apprend via Twitter que ça bataille entre diverses distributions. Je m’enfonce dans mon siège et serre mon sac contre moi en priant pour qu’on ne découvre pas qu’il contient un Mac. J’aurais peur qu’on m’exorcise à coups de lignes de commandes Shell, la violence physique n’étant pas a priori le fort de cette assemblée à tendance baba-cool, où les cheveux longs ne sont pas réservés qu’aux filles, de toutes façons minoritaires. L’organisateur, qui a probablement pioché dans les élastiques de sa fille pour attacher sa queue de cheval, me fait penser à mon père. Papa poule annonce le programme des réjouissances et Richard Stallman commence, en chaussettes, cheveux et barbe au vent.
La conférence, sans slides ni notes, prend la forme d’un monologue à bâtons rompus par un verre de Pepsi ou une demande de confirmation sur le genre de tel ou tel mot. Cela cause surveillance, collecte des données personnelles, menottes numériques, logiciel malware et droit des utilisateurs avec un curieux de mélange de pessimisme réaliste (à partir du moment où les données personnelles sont à disposition, elles finiront par être utilisées de manière abusive) et d’engagement utopiste (il faut lutter, on doit changer les choses, on doit refuser d’utiliser les sites qui nous fliquent). Alors que l’on se dresse contre le spectre d’une surveillance généralisée – le rêve de Staline, rendu possible par la technologie –, la liberté revendiquée est paradoxalement, comme dans toutes les utopies volontaristes (communisme compris), très contraignante : il faut, on doit, les impératifs se multiplient. Ce qui préserve ces revendications éthiques (le mot revient sans arrêt) de devenir une morale, dangereuse lorsqu’on veut l’imposer à tous, c’est leur fond kantien. La notion de malware universel (Microsoft, évidemment) m’a mis la puce à l’oreille : tiens, tiens, on dirait fort un impératif catégorique. La filiation, quoique tirée par les cheveux, m’a parue évidente lorsqu’il a ensuite été question du critère de bonne volonté. De fait, la liberté des libristes ressemble beaucoup à l’autonomie : la communauté veut pouvoir se donner ses propres règles.
Là où l’on vire au schématisme, c’est lorsqu’on en déduit que liberté et pouvoir sont antinomiques. L’utopisme des geeks flirte alors avec l’anarchisme – à cet énorme détail près qu’ils ne font violence au capitalisme que sous l’égide du partage, en diffusant au maximum les biens culturels. Cela donne lieu à une excellente saillie : lorsqu’on lui demande ce qu’il pense des pirates, Richard Stallman répond qu’il a beaucoup aimé le premier épisode. Ma blague favorite de la conférence, à égalité avec le Kindle rebaptisé Swindle, c’est-à-dire escroquerie – de livres qui ne nous appartiennent plus. En effet, si le libriste a des velléités communistes, il n’est en aucun cas prêt à renoncer à la propriété privée. Ce n'est pas l'objet de la critique, on ne peut plus clair si l'on considère que le logiciel propriétaire a été renommé privateur – nous voilà en plein travail idéologique de la langue.
L'engagement de Richard Stallman va pourtant au-delà du militantisme ; il est presque vertueux. Il lui en faut, en effet, de la virtu, du courage, pour rester cohérent jusqu'au bout, même lorsque ses convictions le font paraître d’une autre époque : il n’a pas de téléphone portable, nécessairement truffé de logiciels espions, et ne commande pas en ligne sur les sites qui exigent des données personnelles (mais quel site ne le fait pas ?). À voir le nombre de téléphones portables dans la salle, où l’on twitte et surfe sur Google Chrome, on voit bien que c’est là que le bât blesse : peu de gens sont prêts à sacrifier un mode de vie ultra-connecté à des principes éthiques. Contrairement à ce que la popularisation du terme laisse penser, le véritable geek n’est pas l’amateur de gadgets technophile que l’on croit. Bien loin des tablettes, le geek libriste a des airs d’ermite : le PC sous GNU/Linux, rien que le PC sous GNU/Linux, tous les PC sous GNU/Linux. Amen. On vient en pèlerinage assister à la conférence de Richard Stallman, même si on n’écoute que d’une oreille le sermon qu’il prêche à des convaincus, parfois pécheurs (pardonnez-moi, seigneur, d’avoir téléphoné sous Androïd).
Au final, je n’ai pas l’impression d’avoir appris énormément de choses (des faits dont je n’étais pas au courant, oui, mais rien qui débouche sur des idées vraiment nouvelles pour moi, fréquentant depuis quelques années déjà un appartement peuplé de manchots). En revanche, la tambouille idéologique dans laquelle elles baignent est franchement fascinante. Je comprends mieux pourquoi, maintenant, les champions du logiciel libre peuvent paraître effrayants. Et j’ai l’impression de mieux comprendre aussi la conception qu’a Palpatine de la liberté, qui m’a beaucoup surprise au début et qui continue de m’étonner parfois encore. On est habitué à entendre que la liberté des uns s’arrête où commence celle des autres. Richard Stallman, lui, revendique une liberté d’expression qui va jusqu’à la liberté d’insulter – et je ne suis pas entièrement certaine qu’il s’agisse d’un problème de vocabulaire. Cette liberté radicale ne tient que dans la mesure où l’on ne cherche pas à imposer quoi que ce soit à l’autre. Même si on est convaincu que ce qu’il pense ou fait, c’est de la merde – et qu’on lui dit ! –, on ne cherche pas à le sauver malgré lui, à le libérer de ce que nous considérons comme une dépendance ou un esclavage. On laisse l’autre libre d’être enchaîné si c’est son choix, s’il a fait le choix du non-choix. C’est une conception de la liberté particulièrement dérangeante dans le pays des droits de l’homme et de son universalisme autoproclamé ; cela protège pourtant en politique d’une ingérence à outrance (par exemple, le colonialisme, moyen de propager la bonne parole – pour éviter les exemples à chaud).
Je peux relâcher mon sac : mon Mac et moi n’encourons que le mépris de ne pas adhérer totalement au plaidoyer libriste. Ouf ! La conférence se finit par la vente aux enchères d'une peluche gnou pour la défense du logiciel libre.
write(0, "Philosophie. Acounamatata !n", 28);
23:32 Publié dans D'autres chats à fouetter, Souris de laboratoire | Lien permanent | Commentaires (4) | Tags : conférence, logiciel libre, richard stallman
28 mai 2010
Coupez !
Je me faisais des films, mais :
En une journée, mon mémoire est passé de 34 à 69 pages.
En écrivant tout de suite 2 pages.
J'ai rajouté les interlignes et les quatre centimètres de marge à gauche pour la reliure.
Malheureusement, je ne crois pas que la marge de dépassement soit aussi démesurée : c'est la crise de la cinquantaine.
D'autant qu'il manque encore introduction et conclusion, ainsi que le menu emballage comprenant couverture, table des matières et bibliographie.
J'entends encore la Bacchante en me rendant une synthèse pas synthètique : "Tu te rappeleras l'année prochaine qu'un mémoire n'est pas une thèse."
La fin est proche. Prière à ma directrice de recherche ; en l'absence de miracle, je devrai user du Ctrl X.
Pour l'instant, je n'ai coupé que mes cheveux.
21:10 Publié dans Souris de laboratoire | Lien permanent | Commentaires (6) | Tags : mémoire
14 janvier 2010
Bibliographiphilie
En haut de la première page du dossier enfin corrigé, il y a une note qui me replonge à l'époque de la terminale. Et en bas de la dernière, une question qui m'a fait ricaner et que j'aurais tellement aimé qu'on me pose oralement :
« - Et la bibliographie ?
- Parce que vous croyez que je m'avale une bibliographie pour faire un commentaire composé de trois chapitres du Grand Meaulnes ? » (les italiques sont déjà requises par le titre, mais imaginez une accentuation volontaire pour cet ouvrage préalablement étudié en quatrième)
Les universitaires baignent dans le culte de la bibliographie. Il faut la remplir, comme une nomenclature, y mettre tout ce qui se rapporte à son sujet, même de loin, même si on ne le lit pas. Ma directrice de recherche me l'a répété aujourd'hui, on lit beaucoup avant d'écrire soi-même cinquante ou soixante pages. Je constate du même coup qu'on relit bien peu. Il ne semble venir à l'idée de personne que l'œuvre sur laquelle on travaille engage à elle seule à de multiples lectures, qui puissent dégager les renvois internes à l'œuvre avant de nous renvoyer aux rayons d'une bibliothèque utopiquement complète. On préfère rester sous l'avalanche de l'intertextualité et ouvrir de ridicules parapluies critiques plutôt que de s'abriter dans les pages accueillantes de notre auteur – notre, car il faut bien se l'approprier, et pas comme un domaine d'étude que l'on se réserve après avoir vérifié le désert critique sur le sujet. Il faudrait savoir : travaille-t-on sur un texte ou sur ce qu'en ont dit les critiques ? Parce que si les critiques ont eux-mêmes planché sur ce qu'avaient dit les critiques, au jeu de la poule et de l'œuf, on finit par oublier la source d'où tant d'encre s'est mise à couler. Il faut toujours resituer, recontextualiser, remettre en perspective ; pourquoi personne ne s'aperçoit-il que le préfixe nous fait radoter ? Si l'on veut dire quelque chose sur un auteur, encore faudrait-il laisser traîner une oreille pour écouter ce qu'il a à nous dire. Je dois être bizarre ou orgueilleuse à vouloir m'aventurer seule dans un texte, et vais finir par penser comme Sara, à savoir que je ne suis pas faite pour chercher mais pour trouver. Il se produit la même situation vicieuse que pour la lecture en prépa : on bouquinerait bien pour soi, mais comme il faudrait d'abord s'avaler la pile prévue pour les cours, on résout le dilemme en le supprimant. Plus de lecture, plus de recherche, pas de risque de trouver.
22:19 Publié dans Souris de laboratoire | Lien permanent | Commentaires (13) | Tags : fac, boulet power, mémoire