13 février 2016
Writing fiction, coding software
[Quatrième et dernière chroniquette sur l'essai Geek Sublime: Writing Fiction, Coding Software, de Vikram Chandra]
Identité binaire
« Fiction has been my vocation, and code my obsession. » (p. 9) Writing Fiction. Coding Software. La plupart du temps, les deux restent juxtaposés, dans des chapitres dédiés. C'est un peu frustrant au début et c'est au final le principal reproche qu'on pourrait adresser à l'essai de Vikram Chandra. On sent cependant des interrogations communes, et la question d'un « beau code » n'est pas uniquement celle de la dimension créatrice dans la programmation ; il y a en filigrane, dans l'écart du code à la littérature, la recherche d'un sens – et sa vanité. Coder est excitant, mais le développeur Vikram Chandra sent qu'il lui manque quelque chose ; il passe à la fiction. Écrire de la fiction lui est essentiel, mais le romancier s'épuise dans la re-création d'un monde qui ne cesse de lui échapper. « Perhaps this is why I have always turned to coding with such relief : I can see cause and effect immediately. Write some code, and it either works or it doesn't. […]
Poetry has no success or failure. Poetry waits to manifest. » (p. 198)
Sanskrit
Langue littéraire et langage informatique
Le sanskrit est dans l'essai de Vikram Chandra le plus fragrant sinon l'unique véritable point de convergence entre la langue littéraire et les langages informatiques. La grammaire du sanskrit, explique-t-il, obéit à des règles aussi précises que celles d'un langage informatique, avec : 1) des règles qui fonctionnent comme définitions, 2) des méta-règles, qui s'appliquent à d'autres règles 3), règles qui servent de base à d'autres règles (heading) 4) des règles opératoires. Certaines règles sont sensibles aux contextes quand d'autres ne le sont pas ; certaines peuvent en écraser d'autres, d'autres s'appellent récursivement, d'autres encore héritent de multiples méta-règles… L'application de toutes ces règles permet de générer une phrase grammaticalement correcte et ce ne serait donc pas pour rien que la grammaire sanskrit mis en forme par Panini a été comparée à la machine de Turing (je décline toute compétence et pour le comparant et le comparé de cette comparaison). Plus fun encore, Saussure, dont la théorie linguistique a alimenté les langages de programmation haut niveau, a été professeur… de sanskrit.
Langue de l'éternel
Si vous êtes un peu inculte dans mon genre (inculte par ethnocentrisme, quoi), vous avez peut-être une vision un peu floue du sanskrit, genre vieille langue qui traîne du côté de l'Inde. Le sanskrit était la langue de l'éternel (et donc des brahmanes, caste de prêtres, professeurs et hommes de loi), par opposition aux prakrits, langues du quotidien. Sankrit et prakrits ne constituent pas deux registres de la même langue (comme c'est le cas pour l'arabe, par exemple, avec une version littéraire et une version courante), mais deux langues différentes superposées (p. 103). L'usage de l'une par rapport à l'autre semble délicat : trop de sanskrit et l'on passe pour un snob ; trop de prakrit et l'on passe pour un péquenot.
Latin indien
Né dans une famille brahmane, Vikram Chandra n'a appris le sanskrit qu'à l'école. Avec la colonisation, explique-t-il, les brahmanes se sont efforcés de moderniser leurs réseaux et se sont mis à l'anglais, ce qui a porté le coup de grâce à une langue en perte de vitesse. L'apprentissage scolaire du sanskrit rappellera sûrement celui du latin à certain d'entre vous : « In sixth grade, I began to learn Sanskrit as a compulsory subject at school, and a vast, stifling boredom engulfed me immediately. » L'ennui vient certes de l'apprentissage par cœur, mais surtout : « Sanskrit came to us surrounded by a thick cloud of piety ans supposed cultural virtue. » (p. 202) Vous n'entendez pas comme un écho d'Horatius Coclès ? Cloelia virgo ? Tous les exemples très moraux de nos grammaires latines ? Ce nuage de piété et de virtu nous dissimulait tout un pan beaucoup plus amusant de la culture latine, persiflage et érotisme inclus (il faudrait que je retrouve ce poème de Catulle (je crois) qui commence de but en blanc par « Je t'encule »).
« Our Sanskrit lessons were replete with High and Serious Enlightenment » (p. 203) L'ironie de la chose, a découvert Vikram Chandra, c'est que les gamins de sa génération dévoraient des comics tirés de la culture sanskrit – avec une bonne dose de combats, d'intrigues et de sexe, « all the gore and romance dear to a twelve-year-old's heart » (p. 201) –, mais ces comics étaient disponibles dans à peu près toutes les langues, hindi, tamil, anglais… sauf le Sanskrit !
L'autre et l'héritage colonial
Schizophrénie culturelle
« [I] believed implicitely and stubbornly in reincarnation despite a devotion to Enligntenment positivism » (p. 45). Le paradoxe résume assez bien l'espèce de schizophrénie culturelle créée par l'héritage colonial. Vikram Chandra raconte le soulagement de découvrir les théories littéraires indiennes après avoir étudié la critique littéraire occidentale en cours. Il s'y retrouve et peut enfin comprendre pourquoi il est ému par un certain type de structure narrative, considérée comme pré-moderne et, implicitement, comme inférieure. Quoiqu'elle ait été condamnée au silence, il a conservé une sensibilité toute indienne : « The fractures induced by colonialism hadn't eradicated these aesthetic preferences from within me or my own culture ; they remained embedded in practice, in the shapes of the temples and in Indian movies and spoken language and my novel. But a certain silencing had happened, so that what was known couldn't be spoken, so that this longing had no language in which it could be uttered. » (p. 93)
Moderne toi-même
« The cult of modernity, in order to demonstrate the newness of modernity, needs to always insist on the chasms that separate modernity from the past. The modernity of colonialism insisted on a corresponding un-modernity in the regions it conquered. It had to, in order to justify its own presence in these areas of dakness. » (p. 94) Au lieu de reconnaître l'altérité de la culture indienne, la puissance colonisatrice l'a reléguée au rang de sous-culture. Et quelque part, cette vision s'est durablement implantée, car la modernité est recherchée pour elle-même, et par imitation de l'Occident.
Communauté d'opprimés
Sous le prisme colonisateur, l'Inde est vue comme primitive, puérile… féminine : « The Indian subcontinent itself has often been figured as female by the West. » (p. 195) Je ne crois pas avoir jamais rencontré ce parallèle dans les extraits édifiants des manuels d'histoire ; il en dit long sur la place des femmes dans les sociétés occidentales de cette époque. Je ne sais pas si c'est d'avoir été mis dans le même sac, celui des « inférieurs », mais Vikram Chandra a une sensibilité toute particulière sur la question féministe (cf. la partie sur la place des femmes dans le milieu informatique). Il y a dans sa réflexion un continuum entre gender et colonialisme, et ses remarques sont d'autant plus pertinentes qu'il adopte un point de vue original et décalé sur ces questions (ce n'est pas tous les jours qu'un romancier développeur indien nous parle de féminisme et d'héritage colonial).
L'un des principaux reproches adressés par la Grande-Bretagne à la culture indienne était d'être sexuellement dégénérée. La société indienne s'est réorganisée sous le coup de cette accusation et a procédé à la construction d'un nouvel hindousisme nationaliste. Les anciennes histoires, notamment, ont été réinterprétées comme métaphoriques : « The stories were spiritual, not sexual ; they couldn't – or shouldn't – be both. » (p. 187) Certains artistes ont pour ainsi dire disparu de l'histoire à ce moment-là, telle la poétesse-courtisane Muddupalani, figure acceptée et célébrée à la cour, mais vue comme débauchée et corrompant son art par les colons. C'est une réécriture ou plutôt un effacement de l'histoire comme il en existe partout (encore que c'est peut-être un biais occidental?), mais l'occasion d'une mise au point salutaire par l'auteur : « Premodern India was by no means a utopia of gender parity and sexual freedom, but many beliefs and practices we may firmly beleive to be 'traditional' and 'eternal' are in fact of very recent manufacture. And modernity is infused with its own virulent strains of misogyny and fear of women's sexuality. » (p. 190)
Angles morts, pensée vivante
On a toujours besoin de quelqu'un d'extérieur à soi, à sa propre culture, pour nous renvoyer une image de nous-même – et néanmoins d'assez proche pour qu'on puisse admettre cette image sans l'accuser de distorsion. Car cette image est toujours différente de l'image que nous nous étions forgée : sauf le détour par autrui, jamais on ne se voit avec ses angles morts. C'est déstabilisant, un peu, salvateur, aussi, et passionnant, très. Enfin je trouve. Même si, Occidentale jusqu'au bout des ongles, je peine à me détourner de mes goûts « naturels » (culturels, en réalité), pour me tourner vers d'autres cultures. Clairement, le quai Branly ne m'attire pas ; l'altérité est trop prononcé pour que cela me parle. Alors j'y vais petit à petit, empruntant les passerelles que je peux : j'entre dans la danse nippone avec le no ; j'espère passer de la philosophie occidentale à la sagesse orientale en suivant François Jullien… C'est maigre, c'est timide, c'est encore très ethnocentré. Alors je suis fort heureuse quand je suis prise par surprise et intéressée malgré moi à ce qui, je pensais, ne me parlerait pas – d'où peut-être que j'ai passé tant de temps à vous parler de Vikram Chandra. Ça vous a parlé, au moins ?
16:38 Publié dans Souris de médiathèque | Lien permanent | Commentaires (1) | Tags : livre, geek sublime, vikram chandra
Writing (Indian) fiction
[Troisième partie de la chroniquette de Geek Sublime: Writing Fiction, Coding Software]
Voilà un déplacement cavalier auquel je ne m'attendais pas : lire l'essai d'un romancier développeur et me retrouver à découvrir tout un pan de philosophie et de critique littéraire indienne. Deux pas en avant, un de côté. Ce pas de côté m'est d'autant plus précieux que je ne serais pas allée de moi-même me renseigner sur le sujet. Car l'Inde n'est pas un pays qui m'attire – euphémisme ; j'aurais peut-être même une vague répulsion pour ce qui m'apparaît comme grouillant de sens insaisissables. Mais là, par ce biais littéraire, l'étrangeté me paraît soudain familière et le familier, revu à travers ce nouveau prisme, un peu étrange. C'est fascinant de voir comment une autre culture a traduit les émotions esthétiques ; on est renvoyé à la part flottante, troublante, de ce que l'on a figé par des termes devenus commun – comme si mettre un mot sur la catharsis, par exemple, nous dispensait de l'éprouver.
Petite plongée au cœur de la poétique indienne (avec beaucoup de citation, car je ne me sens parfois pas assez à l'aise avec les termes et les nuances impliquées ne serait-ce que pour les paraphraser.)
Les réverbérations du sens
Aux modes de signification que sont la dénotation et la connotation, le théoriste Anandavardhana1 ajoute la suggestion (dhvani), pour prendre en compte la spécificité du langage poétique, qui se réverbère, créé des résonances : « Dhvani derives from dhvan, 'to reverberate' ; dhvani poetry therefore causes an endless resonances within the reader » (p. 109). Cela devrait parler aux lecteurs de Baudelaire, habitués à déambuler dans des forêts de symboles. Ou aux amateurs de Dali et de L'Énigme sans fin, tableau où la perception d'un objet défait celle d'un autre, qui ne cesse pourtant d'être là, les multiples visions ne cessant d'entrer en résonance les unes avec les autres.
L'émotion esthétique ou rasa
Ce que causent ces réverbérations infinies chez le lecteur, c'est le rasa. Vikram Chandra insiste particulièrement là-dessus : le rasa n'est pas l'émotion, mais « the aestheticized satisfaction or 'sentiment' of tasting artificially induced emotions. » (p. 112) La différence qu'il y a entre l'émotion et le rasa, c'est par exemple la différence qu'il y a entre la peine et le pathétique, ou entre le désir et l'érotisme. J'aurais bien aimé que celui-là soit davantage creusé ; cela suppose un art érotique qui ne soit pas pornographique ou qui, du moins, n'ait pas pour fonction première d'exciter, non ? Si ? Enfin bon, évidemment, on enchaîne sur le pathétique : « The rasa is in the tasting of grief, in the relishing of grief, in the reflective cognizing of grief. » (p. 11)
Le spectateur d'un pièce de théâtre est capable de faire l'expérience du rasa parce qu'il ne s'identifie pas de manière personnelle, égoïste, avec la tragédie sur scène (p. 113). Et c'est peut-être là la différence principale qu'il y a avec notre conception de la catharsis, où l'on passe par une première phase d'identification, pour ensuite s'en déprendre, s'en détacher. Le rasa, ajoute Vikram Chandra, passe par un état d'objectivité, pas par une subjectivité accrue : « During the experience of rasa, according to Abhinavagupta, 'what is enjoyed is consciousness itself'. » (p. 151) La perception du rasa dépend de l'oeuvre mais aussi beaucoup des capacités et de l'ouverture de l'auditeur/spectateur.
Les différentes tonalités
On dénombre 8 rasas en tout : the comic, the wrathful, the heroic, the terrible, the disgusting, the wonderful, the pathos, the erotic (auquel on en ajoute parfois un neuvième, the peaceful, qui viendrait de la contemplation du détachement chez le personnage). La coexistence des rasa n'est pas vue comme un affaiblissement du rasa principal, mais au contraire comme un affermissement. ; il est renforcé par le contraste. « This is why the Aristotelian unities of British and American films seemed so alien to me when I watched them as a child. » (p. 162)
Là où cela devient intéressant, c'est que le rasa s'inclut dans une certaine conception du monde. Reprenez votre souffle, on repart pour une petite plongée dans la philosophie à laquelle s'adosse le rasa…
Tantrisme
Les personnes à qui l'on a présenté les Tantra comme des textes érotiques, nous dit Vikram Chandra, s'ennuient généralement à la lecture. Le sexe n'en occupe qu'une partie seulement, peut-être parce que, contrairement à chez nous, il ne fait pas l'objet d'un rejet ou de fantasmes de stricte régulation. Le sexe n'est pas vu comme quelque chose à éviter sur le chemin vers le salut, mais comme un moteur essentiel dans la quête humaine de l'ultime vérité (p. 170). Dans ce contexte, les cérémonies sexuelles sont surtout « a means of shattering the norms of the normal so that one could know the true, indifferentiated self » (p. 171) (même si bon, certains en ont évidemment profité).
Chiti
D'après les philosophes Pratyabhijna (à vos souhaits), « the absolute origin of all that exists […] is a singular infinite, primordial, undivided consciousness, Chiti, which exists before time and space » (p. 173) J'ai lu ça un matin dans le métro et j'ai frémi : souviens-toi, la physique, le ssssubstrat, susurrait Aristote derrière mon épaule droite ; transsssscccental, s'indignait Kant derrière mon épaule gauche. Heureusement, le métro a freiné et a fait valser tout le monde avant que cela ne vire à la confrontation toonesque de Jerry à auréole et Jerry à trident. J'ai repris ma lecture. Toute la diversité du monde est réunie dans le substrat du Chiti ; « what we think of as our own subjectivity is a wilfully contracted portion of Chiti herself » (p. 174) Rho, y'en a pas un pour rattraper l'autre : Leibnitz, arrête de faire rouler tes monades partout ; on a dit seulement dans le jardin !
Un peu de concentration, que diable ! Apprenez avec moi que l'un des signes de l'existence du Chiti est la reconnaissance de la subjectivité d'autrui, de l'intersubjectivité. Et c'est parce que notre conscience une partie du tout que nous pouvons à la fois nous reconnaître comme des individus limités et comme étant relié au tout. Non, Aristote, ce n'est pas le moment de sortir le principe de non contradiction ; tu vas tout nous ruiner, là. Et Descartes, pour l'amour de Dieu, arrête de trépigner, on sait que tu penses pouvoir prouver Son existence à partir de l'idée d'infini qui nous dépasse ; ce n'est pas le propos, là, on ne cherche pas un truc supérieur pour nous juger et nous écraser mais pour nous y fondre. Ouais, c'est ça, va voir chez les stoïciens si j'y suis.
Reprenons : « The task of the seeker after truth, then, is merely one of recognition : recognition of the nature of the limited self and of that universal self, and recognition that the individual self is Chiti, the macrocosm. You already know you are Chiti, but you have forgotten : 'I am free because I remember.' » (p. 175) C'est sur fond de Chtiti que s'ancre le rasa : « Rasa is a recognition, a re-cognition of what you have forgotten, that you are blissful consciousness itself. » (p. 175) La poésie nous rouvre à nous-même, au-delà de nos individualités étriquetées, et nous pouvons alors faire un avec le tout, l'espace d'un bref instant.
Je vous entends déjà râler : tout ça pour un bref instant ? Bah oui, parce que s'unir au tout, c'est aussi disparaître comme moi-individu-individualiste : « Yogi practices didn't just bring bliss and pleasure, [Tantric practitioner and teacher Paul Muller-Ortega] said. The 'yogic ordeal' also made you feel that 'you are dying'.[…] That is, the ego-self that most of us believe to be our true self must die if the identification with the larger, undivided self is to occur. » (p. 215)
Orient-Occident
Je rigole, je rigole, mais ne croyez pas que je me moque. Rappeler nos philosophes occidentaux est peut-être avant tout un moyen d'éloigner le vertige qui prend lors de la découverte de cette autre conception de l'existence. Car ces conceptions, aussi perchées peuvent-elles sembler – et réservées à une élite de penseurs – changent la façon d'être, d'être soi, d'être au monde. Ce sur quoi Vikram Chandra insiste est merveilleusement résumé, par la négative, par T.S. Eliot, qu'il cite ainsi :
« A good half of the effort of understanding what the Indian philosophers were after – and their subtleties make most of the great European philosophers look like schoolboys – lay in trying to erase from my mind all the categories and kinds of distinction common to European philosophy from the time of the Greeks. [ …] my only hope of really penetrating to the heart of that mystery would lie in forgetting how to think and feel as an American or a European : which, for practical as well as sentimental reasons, I did not wish to do. » (p. 207-208)
Interpellante honnêteté intellectuelle. Et si l'on ne parvenait jamais totalement à comprendre une autre culture, à ressentir dans ses termes, justement parce qu'on ne voulait pas se perdre ?
(Là, j'aurais une transition toute trouvée pour passer à l'essai Nord perdu de Nancy Huston sur l'identité de l'expatrié, mais j'ai encore quelques trucs passionnants tirés du bouquin de Vikram Chandra à partager avec vous. Oui, encore. Personne ne vous oblige à lire. :p)
1 C'est dans des cas comme ceux-là que je suis heureuse d'avoir une mémoire photographique…
11:31 Publié dans Souris de médiathèque | Lien permanent | Commentaires (2) | Tags : livre, geek sublime, vikram chandra, littérature
12 février 2016
Coding software : splendeurs et misère du code
[Deuxième partie d'un compte-rendu de lecture sur l'essai Geek Sublime: Writing Fiction, Coding Software, de Vikram Chandra. La première concernait la sociologie du geek. La troisième, à venir, porte sur la critique littéraire indienne avec laquelle l'aspect informatique est mis en regard.]
Geek, man and machine
Le but premier et ultime d'un programme informatique est qu'il fonctionne, c'est-à-dire qu'il compile (pas d'erreur qui empêche de le transformer en langage binaire exécutable par l'ordinateur) ET qu'il fait ce qu'on veut qu'il fasse (un ordinateur est bête : il fait toujours ce qu'on lui dit de faire, pas nécessairement ce qu'on veut qu'il fasse). Pourtant, rappelle Knuth (le dieu que révère Vikram Chandra), programmer, ce n'est pas seulement indiquer à un ordinateur ce que l'on veut qu'il fasse ; c'est aussi expliquer à un être humain ce qu'on vaut que l'ordinateur fasse. Cet être humain peut aussi bien être un collègue que vous-même quelques mois après l'écriture du code ; rien de tel, en effet, que de reprendre un ancien bout de code pour vérifier que je est un autre. Pour que votre moi du futur remercie votre moi du passé, il faut, nous dit Knuth, bien choisir le nom des variables (ok), expliquer ce qu'elles représentent (sous forme de commentaires), et introduire les concepts dans l'ordre qui sied à la compréhension humaine (yolo, Boileau). Comme s'il y avait un mode de compréhension humaine. Chacun a donc son idée sur la question, et ses propres critères pour en juger. On retrouve cependant avec récurrence l'idée qu'un code ne devrait pas se répéter.
D'une manière générale, le geek voit la répétition d'un mauvais œil : c'est le boulot de la machine, pas le sien - « any repetition of effort seemed like an insult. » (p. 15) Le geek pourra donc passer cinq heures à coder l'automatisation d'une tâche qui lui aurait pris 30 minutes – et ce, même s'il est probable voire certain qu'il n'aura pas à la reproduire 9 autres fois. Le geek, comme l'homme dont il hérite, est un animal raisonnable : ce n'est pas parce qu'il peut être raisonné qu'il est d'emblée rationnel.
Le plaisir de coder
Le code peut-il être esthétique ? « The beauty of code » est l'un des leitmotiv de l'essai de Vikram Chandra, et le titre de son chapitre central. Pour autant, vous pouvez ranger Kant, l'émotion esthétique due au vertige des interprétations infinies n'est pas à l'ordre du jour. Vu qu'un programme a pour finalité d'être exécuté par une machine, mieux vaut qu'il n'ait qu'un sens bien défini ; contrairement aux interprétations, les boucles gagnent à ne pas être infinies. Exit la polysémie.
Exit le plaisir esthétique. Bonjour le plaisir sportif. Oui, vous avez bien lu. Pour Yukihiro Matz Matsumoto, le beau code a vocation à rendre le développeur « heureux et productif » (p. 122), et à en croire Vikram Chandra, cela passerait très concrètement par les endorphines : face à problème ardu, « the world fell away, my body vanished, time receded. And three or five hours later, when the pieces of the problem came together just so and clicked into a solution, I surfed a swelling wave of endorphins. » (p. 19) Et si le développeur était accro au code comme d'autres aux sport ?
En 6 ans de Palpatine, je peux vous dire qu'un geek, un vrai geek, ne lâche jamais le morceau. Lorsqu'un problème lui résiste, il y pense tout le temps, fusse en arrière-plan : en marchant (très péripatétique), sous la douche (un grand classique), au concert (la musique aère l'esprit et permet à la pensée de mieux circuler), mais aussi en société, ce qui peut parfois occasionner un freeze en pleine conversation : les pièces click into a solution, réelle ou supposée. (Je le soupçonne de continuer à ruminer au lit, mais il y a des choses que je préfère ne pas savoir avec certitude).
De quoi la métaphore du code comme art est-elle la revendication ?
Palpatine rappelle régulièrement à qui veut l'entendre qu'en France, le code est régi par le code de la propriété intellectuelle, exactement comme un roman (eh non, un programme ne se brevète pas). La métaphore du code comme art a de quoi surprendre, parce que l'on oublie généralement que l'artiste est d'abord un artisan. Le développeur n'est pas un mécanicien qui sert des boulons binaires, c'est un artisan, qui adapte, polit, peaufine… et revendique donc un savoir-faire. Car non, coder, ce n'est pas (uniquement) appliquer des principes mécaniques qui s'enchaîneraient comme le développement d'une équation ; c'est structurer une réalité foisonnante, la mettre en forme, la concevoir. On ignore généralement que le bon développeur est créatif – on l'imagine rusé, oui, mais pas créatif.
Si les développeurs se comparent à des peintres, des musiciens ou des essayistes, c'est pour faire valoir cet aspect méconnu de leur travail. Et revendiquer le statut qui devrait aller avec. Id est la considération, le salaire et… le sex appeal ? Vikram Chandra cite l'interprétation toute personnelle de Ceglowski sur le recours aux comparaisons artistiques : « Great paintings… get you laid in a way that great computer programs never do […] especially if you have the slighteste hint of being a tortured, brooding soul about you… » (p. 8-9). En bref : le geek ne veut pas être un nerd (le retour en grâce du terme geek, employé à tout va, ne doit pas nous faire oublier qu'à la base, c'est un synonyme de nerd, le mec antisocial un peu zarb avec qui on n'a pas du tout envie de traîner)(Palpatine, en tant que 'vrai geek', s'offusque régulièrement de ce que n'importe quel bidouilleur soit aujourd'hui honoré d'un qualificatif qu'il a eu à souffrir comme insulte avec ses camarades pendant sa jeunesse ; être geek, ça se mérite !).
Architecture
L'art est utile comme métaphore pour exprimer les rapports de proportions et d'harmonie. On pourra dire, par exemple, qu'un beau programme est comme une symphonie : chaque morceau en est une phrase musicale, qui peut être jouée seule, mais trouve sa raison d'être au sein de l'oeuvre, nuancée, enrichie par les phrases musicales qui la précèdent, la suivent, et l'entourent de leurs résonances. « Each small part is coherent, singular in its purpose, and although all these small sections fit together like the pieces of a complex mosaic, they come apart easily when one element needs to be changed or replaced. » (p. 123) Cette modularité, je me la représente sous la forme des sas de station spatiale, par lesquelles les astronautes des films passent toujours pour entrer et sortir sans danger. En cas d'urgence (et dans les films comportant des astronomes, il y a toujours une urgence), ces sas permettent de se défaire d'une partie endommagée sans détruire l'ensemble de la station. C'est-à-dire, pour le développeur, de modifier facilement une fonctionnalité pour le client qui a encore changé d'avis et veut son nouveau choix là tout de suite ; mieux vaut, donc, ne pas avoir à aller fouiller dans tous les recoins du programme pour modifier une fonctionnalité réduite.
Big Ball of Mud
L'effet boule de neige boue
L'architecte, qui veille au bon agencement de toutes les parties, joue ainsi un rôle primordial. Et ce n'est pas de la tarte : même un projet très simple se révèle toujours plein d'exceptions et de cas spéciaux qu'il faut gérer (si possible, sans faire rejaillir la complexité de ces exceptions sur les manipulations ordinaires). On a vite fait, les deadlines aidant, de se laisser embringuer : « you know that functionality should be somewhere else but you don't have the time to bother, the users ask for a new feature and you patch it in, and of course you mean to come back later and clean everything up, but then, before you know it, you are trapped inside an unwholsome, uncontrollable atrocity, a Big Bull of Mud » (p. 126), « and yes, it is a technical term of art » (p. 127). Devenue incontrôlable, une Big Ball of Mud peut atteindre un nombre de ligne et une complexité tels que le programme échappe purement et simplement à la capacité de conception humaine. Plus personne ne comprend comment il fonctionne de bout en bout. « No temple, no cathedral has ever contained as many moving parts. » (p. 124)
[Go to indique au programme d'aller à telle ou telle ligne... qui a de fortes chances de bouger lors du développement. C'est le truc crade par excellence, à ne pas faire. Une pratique qui vaut -42, vous dira Plapatine.]
Dinosaures sous respiration artificielle
Comment traquer des bugs et ajouter des fonctionnalités à un programme que l'on ne comprend pas, quand la moindre modification effectuée dans un coin peut avoir des répercussions inattendues à l'autre bout du système ? Généralement, nous dit Vikram Chandra, on est pris de l'envie de tout réécrire de manière propre. Sauf qu'on n'en a jamais le temps ni le budget. Alors on rajoute une rustine, un peu de boue à la Big Ball of Mud.
Il existe ainsi des programmes qui tournent depuis des décennies et qui ne peuvent pas être correctement maintenus ni mis à jour parce que plus personne ne comprend comment ils fonctionnent dans leur ensemble. C'est par exemple le cas du logiciel comptable du Pentagone, apparemment célèbre pour ses erreurs dans les fiches de paye des soldats (p. 128)… Le secteur bancaire est également un beau tas de boue : 90 % des transactions financières dans le monde se font via des logiciels en COBOL, « the computing equivalents of Mesopotamian cuneiform dialects ». Hé oui, le site web tout beau tout neuf tout responsive de votre banque cache un système vieilli jusqu'à la moelle (p. 129)…
La programmation orientée objet
Au milieu des années 1980, on a imaginé de rassembler à un même endroit du code les différentes types de données et ce qu'on peut faire avec (i.e. les fonctions qui s'y rapportent). En encapsulant ces informations thématiques dans des objets, on espérait en mettre un peu moins partout. Et cela a fonctionné. Un peu. La programmation orientée objet a résolu certains problèmes, parfois même avec une certaine élégance, souligne Vikram Chandra ; elle a permis de mettre de l'ordre dans la « spaghetti code jungle » (la jungle est de Foote et Yoder, dans Big Ball of Mud, mais le « code spaghetti » est aussi un terme technique consacré, désignant les kilomètres de lignes de code enchevêtrées, issus de la programmation procédurale.). Pour autant, la programmation orientée objet n'est pas une solution miracle et les Big Balls of Mud continuent de proliférer (un peu comme le bordel dans mon studio en dépit des placards)…
« If you've ever writen code, the fact that so much software works so much of the time can seem profoundly miraculous. » (p. 124) Le bug est la normalité, pas le fonctionnement. Comme dirait Palpatine, ça « tombe en marche ».
Les travaux et les jours
Les bons outils font les bons… jongleurs ?
Un précepte geek enjoint de ne pas réinventer la roue et de se hisser sur les épaules d'un géant, en utilisant ce qui a déjà été fait. Il existe ainsi tout un tas de briques pré-construites qui permettent de réutiliser le travail déjà fait, des librairies dans lesquelles aller piocher un savoir patiemment accumulé ; et tout un tas d'outils pour gérer le code et éviter sa prolifération anarchique. Git, par exemple, permet de gérer le versionnement, pour que plusieurs personnes puissent travailler sur le même programme sans risquer d'effacer le travail des autres, et que l'on puisse à tout instant revenir à une version antérieur. Un outil puissant et précieux, donc, mais complexe à utiliser, qui constitue une compétence en soi (au point de figurer sur les annonces d'emploi au même titre que les langages à maîtriser).
Les outils, remarque Vikram Chandra, deviennent un savoir à part entière – problème du moyen qui devient une fin. « Each tool and pre-constructed library solves a problem that you must otherwise solve yourself, but each solution is a separate body of knowledge you must maintain. » (p. 139-140) D'où pour certains développeurs l'impression de ne plus être à l'aise dans quoi que ce soit. L'assurance d'avoir toujours quelque chose de nouveau à apprendre est l'un des attraits du métier, mais cela peut aussi se transformer en course épuisante contre la montre et l'obsolescence. Se former aux nouveaux langages pour les projets de demain tout en bossant à fond sur les projets en cours…
Le nouveau langage à la mode
« Our industry [remarks Steve Yegge] is fashion-driven to a degree that would embarrass haute couture designers from New York to Paris… » Aussi surprenant que cela peut paraître de l'extérieur, la mode dicte les langages que les gens étudient à l'école, qu'il utilisent ensuite dans projets professionnels, ceux à propos desquels des bouquins sont publiés, etc. Palpatine pestait récemment contre les choix de langage faits par ses associés : parce qu'un geek, par principe, peste toujours contre les langages qui ne sont pas ses préférés, mais aussi parce que le choix du langage n'en a pas été un. Il n'a pas fait l'objet d'un choix rationnel après mise en balance avec d'autres langages et étude de leurs avantages et inconvénients pour ce projet particulier ; ses associés l'ont choisi parce que c'est ce qui se fait et ce qu'ils savent faire. (Je soupçonne tout de même Palpatine d'un léger snobisme geek, à kiffer des langages paraît-il d'une grande élégance, mais à peu près jamais utilisés dans l'industrie.)(Un mignon snob, évidemment.
Et demain ?
À l'heure où l'on taquine l'idée d'enseigner le code à l'école, Vikram Chandra remarque que la promesse de démocratisation du code, déjà ancienne, n'a jamais vraiment été tenue. La forme de programmation la plus courante dans les entreprises, au final, est celle des feuilles Excel. « The biggest problem is that anyone can create Excel spreadsheets – badly. » (Kwak, The Importance of Excel). Même quand on maîtrise Excel, surtout quand on le maîtrise et qu'on y fait des calculs complexes, ce type de programmation peut s'avérer dangereux, car il est très difficile à auditer et débuguer – pas fait pour. J'ai d'autant moins de mal à le coire qu'il y avait un pro des tableaux Excel dans l'équipe où j'étais en apprentissage ; vous n'avez pas idée du nombre d'entrées et de formules qu'il y avait là-dedans, d'une complexité telle que… lui seul pouvait s'y retrouver. Vikram Chandra cite même le cas d'une erreur financière monstrueuse (à plusieurs millions) due à une feuille de calcul où une cellule calculait la somme au lieu de la moyenne… (p. 142)
Ouais, je sais, c'est moyen glamour d'envisager le futur sous la forme d'un tableau Excel. Du coup, Vikram Chandra se lâche pas mal en imaginant tout un tas de trucs, dont une rencontre du troisième type entre programmation informatique et génétique. Si vous voulez lire là-dessus, je vous conseille plutôt l'article d'Eliness où elle explique son métier de bio-informaticienne.
22:33 Publié dans Souris de médiathèque | Lien permanent | Commentaires (0) | Tags : livre, essai, code, vikram chandra, geek sublime, xkcd