Accueil du [Site] > Articles > Écritures > Essais > Pour une linguistique du code source

Pour une linguistique du code source

dimanche 6 mars 2011, par Valentin.

Les Journées d’Informatique Musicale sont un colloque annuel organisé par des universitaires français. Pour l’édition 2011, mon collègue Mike Solomon m’a proposé de l’aider à y représenter le monde du logiciel Libre en général, et GNU LilyPond en particulier ; voici l’introduction du travail que j’ai entamé dans cette optique, intitulé « GNU LilyPond : pour une linguistique du code source.  » La suite dans quelques semaines !

Que l’on se place du point de vue des auteurs, des artistes ou de la société en général, la dématérialisation des supports culturels (et, partant, des processus créatifs) présente une ambigüité dialectique : elle peut être libératrice, ou aliénante.

  • Libératrice en ce qu’elle ouvre des possibilités quasi inépuisables (dont la plus importante est sans doute la notion d’immédiateté que l’on peut aujourd’hui percevoir à tous les niveaux, de la création à la diffusion culturelle) ;
  • aliénante parce qu’elle induit bien souvent une dépendance nouvelle à la technicité.

Or l’ambition même d’une démarche artistique est précisément d’échapper à de telles contingences — ce qui définit une œuvre d’art n’est ni son utilité ni son idiosyncrasie, mais sa part d’universalité et de pérennité. À ce titre, il est d’ailleurs significatif que l’édition 2011 des Journées d’Informatique Musicale ait choisi de se concentrer sur la « préservation des œuvres ». Comment, en effet, assurer la pérennité et l’intelligibilité de créations intimement liées à des formats de données très spécifiques (souvent cryptés), à des logiciels figés, voire à une architecture matérielle en particulier ?

Ce problème, les logiciels dits « Libres » y répondent depuis les débuts de l’informatique (même si leur approche n’a été théorisée comme telle que depuis une trentaine d’années, en réaction à l’avènement d’acteurs industriels et commerciaux dont le modèle économique repose précisément sur l’assujettissement des données personnelles et des œuvres de l’esprit) en permettant de lire, d’adapter et de recompiler le code source des programmes au gré des besoins.
Ce souci de transparence et de portabilité est au cœur de la « philosophie Unix », que Douglas McIlroy formulait ainsi dès les années 1960 : « n’écrivez que des programmes dont le format d’entrée est du texte pur, car c’est là une interface universelle ». De fait, le texte pur, ou code source, demeure le format le plus ouvert, le plus accessible, le plus pérenne que l’informatique puisse garantir à ce jour : le réseau Internet nous en fournit nombre d’illustrations éclatantes.

Un exemple de format textuel : le XML

Certains « langages » non-textuels, bien entendu, ne peuvent faire l’économie d’un media, encodé voire compressé dans un format binaire ou hexadécimal : ainsi des captations sonores ou visuelles. D’autres formats sont, au contraire, orientés essentiellement vers le langage verbal, et peuvent dans bien des cas faire sens même sans formalisme spécifique : une page HTML peut être lue dans un navigateur en mode texte, et il est même possible de comprendre un document en LaTeX en lisant directement son code source. La notation musicale, en revanche, occupe une place plus subtile : c’est un langage non-textuel, mais tout aussi formalisé et conceptuel que n’importe quel langage verbal. Utiliser du code textuel pour représenter la musique est donc non seulement possible, mais nécessaire et évident (l’on m’objectera peut-être que les logiciels commerciaux d’édition musicale s’obstinent à stocker leurs fichiers dans des formats binaires cryptés : il conviendrait de se demander pour quelle raison, si ce n’est dans cette volonté d’assujettissement que j’évoquais plus haut).

Un langage ouvert de notation musicale, sous forme de code source textuel, peut s’orienter dans deux directions.

  • Il peut favoriser la simplicité au détriment du formalisme : c’est le cas de ABC, ou dans une moindre mesure de GUIDO.
  • Il peut, au contraire, rendre compte du formalisme de la musique (d’une façon souvent plus descriptive qu’analytique), au risque d’être impraticable pour l’utilisateur humain : c’est l’approche adoptée par tous les langages inspirés de la syntaxe XML, qu’il s’agisse de MusicXML, CanorusML ou MusE Score
    — notons qu’aucun de ces formats n’est destiné à être manipulé directement en tant que code source par l’utilisateur : ils nécessitent tous une interface graphique... et l’on retombe donc dans le problème de dépendance et de technicité évoqué plus haut.

GNU LilyPond, enfin, propose une approche plus originale : son langage de représentation est à la fois simple et conceptualisé, expressif et extensible (il s’agit d’un langage Turing-complet). De cette plasticité incomparable naît un rapport nouveau entre l’auteur-codeur et la partition : l’écriture de la source (le style du code, comme disent les programmeurs) reflète la pensée musicale, mais peut également la structurer, et même la susciter. Avec LilyPond, une même pièce pourrait se coder de mille façons différentes — mais serait-ce alors vraiment la même pièce ?

Ce rapport nouveau entre le code et la partition n’est d’ailleurs pas sans rappeler celui, en miroir, qui existera ensuite entre la partition et l’interprète. Et à ce titre, le fait pour un compositeur de se servir d’un logiciel tel que LilyPond, avec son expressivité propre (la possibilité de commenter ou non le code, de l’organiser d’une façon bien précise plutôt qu’une autre, voire de documenter, au fil de l’écriture, les étapes du processus créatif, les repentirs et les subterfuges...), apporte une richesse sans précédent quant au regard que nous pouvons porter sur son œuvre : un don du ciel pour les historiens comme pour les musiciens !

De cette forme créative nouvelle que constitue le code source, il me semble aujourd’hui souhaitable de jeter les bases d’une étude linguistique. Je ne l’entends pas au sens (d’ailleurs quelque peu galvaudé) des computational linguistics chers à une certaine branche de l’informatique, mais au sens beaucoup plus large qui a précédé à l’avènement de toutes les sciences du langage il y a tout juste un siècle. Je tâcherai pour cela de partir de quelques exemples concrets, notamment tirés de mon expérience personnelle, pour en dégager quelques hypothèses théoriques ; afin toutefois de ne pas me limiter à la théorie, je tenterai ensuite de les remettre en perspective autour de l’évolution actuelle de la société en général, et des pratiques culturelles et créatives en particulier.


Valentin Villenave (26 ans) est musicien, auteur et spécialiste des licences Libres. Son premier opéra « Affaire étrangère », créé en 2009 par l’Opéra National de Montpellier, est également le premier ouvrage de ce type à avoir été entièrement édité au moyen de logiciels Libres, et publié avec son code source sous une licence copyleft. Il est également membre de l’équipe de développement du logiciel GNU LilyPond, et contributeur de plusieurs projets Libres francophones.

Messages

  • Salut Valentin,

    Je ne comprends pas pourquoi tu parles de difficulté dialectique. Est-ce tout simplement pour dire une « opposition » ou une « tension » ?

    Parce que somme toute, avec Lilypond, cette tension-opposition connaît un dépassement et devient dialectique en ce sens.

    Par ailleurs, j’aimerais comprendre où intervient l’analyse linguistique saussurienne dans tout ça... sur les notations marginales inscrites dans le code (commentaire) ? Comment tu comptes t’y prendre ? Je ne vois pas trop comment la linguistique saussurienne peut t’aider en quelque chose...

    Voir en ligne : Dialectique et linguistique

    • Bonjour,
      alors, pour prendre les choses dans l’ordre...

      Je ne parle pas de « difficulté » mais d’ambigüité. La notion de progrès technologique est, à mon sens, ambigüe : elle est porteuse d’autant de promesses que de menaces. C’est de cette ambigüité que je parle : on peut subir la technologie et donc se trouver dominé, ou bien on peut se l’approprier de façon à s’émanciper de toute domination.

      Cette ambigüité, fondamentale, me semble d’ordre dialectique, d’abord dans un sens philosophique — puisque toute tentative de raisonner sur ce sujet, de penser la technologie et la société qu’elle dessine, passe par un mouvement de balancier entre ces deux aspects — mais également dans un sens matérialiste, puisque chaque acteur qui s’engage dans une des deux démarches (soit la libération soit l’aliénation) le fait toujours dans un contexte de tension vis-à-vis de l’autre (puisque ces deux possibles coexistent en permanence).

      Alors après, dans le contexte précis de la notation musicale, cette tension trouve toutes sortes de traductions : interfaces graphiques « opaques » vs notation textuelle « transparente », etc. Je ne sais pas si j’irais jusqu’à dire que LilyPond réalise un « dépassement », ce qui reviendrait à le présenter comme une solution unique et universelle ; étant donné sa flexibilité, il y a mille façons de se servir de LilyPond alors qu’il n’y a qu’une ou deux façons possibles de se servir d’un logiciel graphique... Pour tenter un jeu de mots, on pourrait même, faute de dialectique, dire qu’il existe des dialectes de LilyPond entre les différentes façons de coder des uns et des autres.

      Alors, pour revenir au père Saussure, je ne suis pas particulièrement saussurien dans l’âme, mais il est le premier (ou au moins, l’un des premiers) à avoir tenté de poser méthodiquement l’étude du signifiant et du signifié (voire du signe tout court), à avoir tenté de décrire la langue comme autre chose qu’une grammaire, et ce faisant il a ouvert la voie à tout un tas de disciplines (sémiologie, sciences cognitives etc.) aujourd’hui irremplaçables.

      Ces approches, pour autant que je sache, n’ont pas encore (ou alors, très peu) été appliquées à la notion de « code source », que l’on estime peut-être réservée aux programmeurs, purement utilitaire et pas du tout expressive ni (encore moins) créative. Or de nos jours même de simples mortels sont amenés à utiliser du code source (par exemple pour éditer un Wiki, pour poster un message avec du BBcode sur un forum ou même pour envoyer un tweet).

      LilyPond, qui n’est pas destiné à être utilisé par des programmeurs mais par des musiciens « standard », me semble être un morceau de choix pour s’attaquer à une telle étude : outre les commentaires et annotations, se pose la question de la mise en forme du code (une mesure par ligne de code ? Plus ? Moins ?), de la délimitation des variables (une variable par instrument ? Par mouvement ? par sous-sections ?), des choix syntaxiques (cette mesure se répète quatre fois : vais-je la recopier entièrement, faire un copié-collé, ou encore utiliser un raccourci tel que \repeat unfold 4 { ma mesure } ?) etc. On peut même aller dans des détails plus complexes : la linéarité du code, qui conduit facilement vers une écriture plus « horizontale » que « verticale », l’usage de macros, qui reflète mais aussi façonne le langage musical qu’on utilise (ainsi, j’utilise un raccourci très facile pour les quintolets alors qu’ils sont d’ordinaire relativement rares dans la musique)... Enfin, je me dis qu’il y a des choses intéressantes à dire :)

    • Petite parenthèse : ce n’est pas simple commenter sans avoir ton commentaire.

      D’accord pour ce qui est de l’aspect dialectique de cette question.

      D’accord aussi sur l’importance de la théorie saussurienne. Un peu moins en revanche sur son application dans ton travail. Oui, Saussure est très certainement, AMHA, le premier à avoir analyser la langue comme système de signes. Il a ouvert la voie à la linguistique du discours qui, avec Benveniste, est très certainement la linguistique contemporaine la plus « efficace », pour faire court.

      Par contr e, appliquer à la musique elle-même, ce travail sur la langue ou le discours, entrepris par/depuis Saussure, est à mon avis une erreur. Saussure s’intéressait à la langue et, comme il l’écrivait, la « parole ». Le système que Benveniste qualifiera plus tard de grand interprétant. La musique est n’est une langue au sens strictement linguistique du terme, c’est un code avec un nombre d’unités plus ou moins stables ou fixés. Leurs combinaisons ou articulations ne permettent pas de parler de manière directe, comme dans le cas de la langue mise en pratique par le discours, des choses de la vie : on ne dit « bonjour » avec des unités musicales !

      La musique pour faire sens, comme une langue, a besoin de la langue, d’une interprétation linguistique. Et là, le travail linguistique peut se justifier. Il s’agit d’un acte linguistique « second » j’allais dire, commentaires, etc.

      La raison principale, je pense, qui tient à l’écart de l’analyse linguistique le code source, c’est qu’il s’agit d’un mélange entre deux ordres de signes, deux « systèmes » différents, voir trois si l’on tient compte du langage de programmation, le code informatique lui-même. Auquel cas, même s’il peut s’agir, comme pour LaTeX par exemple, d’un langage de programmation « littéraire » parce que compréhensible par l’humain, ça n’en reste pas moins un langage « fermé sur lui-même » au sens où le sens précisément est fini. Comment dire en LaTeX que le ciel est beau ? La possibilité de faire du « beau » (mille excuses pour ce raccourci), viendra de l’agencement des unités, un agencement particulier... mais non de ce qu’il signifie, contrairement à une œuvre linguistique. Ce qui est question c’est davantage son « efficacité », sa performativité en quelque sorte : « il dit ce qu’il fait ». La manière dont il s’organise peut être belle mais c’est forcément en raison de ce caractère performatif.

    • Je ne prétends pas m’appuyer exclusivement (voire pas du tout) sur les travaux de Saussure : ma spécialité est davantage la sémiologie que la linguistique à proprement parler.
      Au demeurant, l’hypothèse sur laquelle je veux travailler est celle que le code source (et la musique aussi, mais c’est un autre problème) peut constituer un langage à part entière, c’est-à-dire un langage expressif et qui fait sens même en-dehors du processus de compilation (en tout cas, dans le cas du code LilyPond).

      D’ailleurs, je ne suis pas sûr de te suivre dans la distinction que tu sembles établir : à mon sens, tout langage (musique ou autre) est un « agencement d’unités ». On peut dire, certes, que dans la langue verbale chaque mot peut faire sens par lui-même de par son dénoté, mais dans ce cas je peux aussi très bien dire qu’un accord musical fait sens par lui-même : un accord parfait majeur donne toujours un effet d’« harmonie », un intervalle de neuvième mineure produit une tension, etc.

      Et c’est là tout l’intérêt de LilyPond : en « verbalisant » la musique exactement comme le fait quelqu’un qui a l’oreille absolue (au lieu d’entendre « ta da da » il entendra mi re do), il donne lieu à un langage « naturel » de musicien, tout aussi naturel (et peut-être même davantage) que la notation écrite sur des partitions !

    • Je suis d’avance désolé de ce que je vais dire... mais je ne suis pas sémiologue. Ma formation est « linguistique ». Je ne vois pas d’un très bon œil la sémiologie. Je n’ai jamais vraiment rien lu là-dessus de très convaincant. C’est un peu le grand « foutoir ». Et ce n’est que par un abus que l’on peut ranger Saussure parmi les sémioticiens. Saussure n’a jamais travaillé que sur la langue et la parole. Ceux qui diront le contraire n’ont pas lu Saussure. La langue est certes un système de signes selon Saussure. Pour autant, Saussure n’a jamais prétendu faire de la « sémiologie » :

      « On peut [...] concevoir une science qui étudie la vie des signes au sein de la vie sociale ; elle formerait une partie de la psychologie sociale, et par conséquent de la psychologie générale ; nous la nommerons sémiologie. [...] La linguistique n’est qu’une partie de cette science générale, les lois que découvrira la sémiologie seront applicables à la linguistique, et celle-ci se trouvera ainsi rattachée à un domaine bien défini dans l’ensemble des faits humains. »

      Malheureusement, cette science reine n’a jamais vu le jour. La sémiologie n’a rien apporté à la linguistique et elle tient l’essentiel de ses concepts de la linguistique.

      Je n’ai pas dit que la musique n’était pas un système d’unités organisées. Loin de là. Je le pense au contraire. Par contre, je n’ai pas le temps de reprendre ta formulation sur le mot (ton histoire de dénoté ?) qui n’est pas, à proprement parler, une unité de base. Je crois que tu te fais un peu leurrer par ta transposition du signifiant et du signifié. Comme Saussure le rappelait, l’un n’existe pas sans l’autre. Ils n’ont aucune réalité isolément. Lorsque l’on raisonne avec l’un ou l’autre séparément, on sombre dans le formalisme ou, à l’inverse, dans une sorte de psychologisme éthéré (on révèle le sens).

      Comme le rappelait encore Saussure, ce qui prime dans la parole, ce n’est pas le « mot » mais les rapports ou relations qu’il entretient avec les autres unités. C’est là un apport majeur de l’approche saussurienne. C’est pour cette raison que Benveniste faisait de l’unité première du discours la proposition.

      Tu peux en effet « très bien dire » d’ un « accord parfait majeur [qu’il] donne toujours un effet d’harmonie » etc. mais pas par lui-même puisque pour le dire tu dois le traduire. Sans le recours à quelque autre système de signes, ici la langue articulée dans la parole ou le discours, il ne signifie rien. Je suis d’accord pour parler d’expressivité de la musique mais pas par elle-même.

    • Oula. Je crois que nous avons donc mis le doigt sur le point précis où nos systèmes de pensée divergent. N’ayant pas encore avancé dans le travail sur le source code dont je proposais de jeter les bases ci-dessus, je ne peux donc que te proposer de remettre la suite de cette discussion à plus tard, lorsque je pourrai m’appuyer sur une étude plus rigoureuse de mon objet (le source code), qui m’amènera nécessairement à m’interroger également sur ce qu’est un langage, et sur les rapports entre linguistique et sémiologie — discipline, au passage, que je considère comme bien réelle : à mon sens au contraire, c’est la linguistique qui s’est trop spécialisée lorsqu’elle a pris le parti de se limiter à la langue, et je ne suis pas sûr que Saussure lui-même aurait encouragé cette spécialisation s’il avait pu poursuivre ses travaux quelques décennies de plus. Mais ce n’est qu’une pure spéculation.

      Dans l’immédiat, merci pour ces commentaires fort intéressants qui me font envisager le problème sous un angle auquel je n’aurais sûrement pas pensé autrement !

Un message, un commentaire ?

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Vous n'êtes pas un robot ? Alors veuillez répondre à cette question essentielle :
Quelle est la moitié du mot «toto» ? 

Ajouter un document