« Poésie informatique | Accueil | »

25 septembre 2008 - Divers

Les six fonctions des langages informatiques

Roman Jacobson a identifié six fonctions pour les langages humains. Une page du site de l'Université du Québec à Montréal les définit comme ceci :

La fonction expressive : elle est centrée sur le sujet qui parle : sentiments, émotions, mimiques, etc.
La fonction conative : cette fonction permet au destinateur d'agir sur le destinataire (inciter à écouter, à agir, à émouvoir).
La fonction phatique : cette fonction est relative au contact. Elle permet de provoquer et de maintenir le contact.
La fonction métalinguistique : cette fonction s'exerce lorsque l'échange porte sur le code lui-même et que les partenaires vérifient qu'ils utilisent bien le même code. Cette fonction consiste donc à utiliser un langage pour expliquer un autre langage.
La fonction référentielle : cette fonction permet de dénoter le monde qui nous entoure, c'est le référent, c'est-à-dire «de quoi il s'agit».
La fonction poétique : elle ne se limite pas à la poésie seulement, car tout message est expressif. Cette fonction se rapporte à la forme du message dans la mesure où elle a une valeur expressive propre.

Il me semble que les langages informatiques utilisent d'abord la fonction conative, celle qui tente d'obtenir une action de la part du destinataire du message : un programme informatique, c'est tout d'abord une série d'ordres adressés par un programmeur (humain) à une machine (informatique). Par exemple, le programme suivant ordonne à la machine d'afficher un message :

  print("Bonjour");

La fonction référentielle, qui constitue la fonction principale (souvent la seule à laquelle on prête attention) des langages humains, n'occupe qu'une place résiduelle dans les programmes informatiques. On peut la localiser dans les commentaires, qui sont des morceaux de code destinés non pas à donner des ordres à la machine, mais à apporter des informations aux humains (programmeurs) qui seraient amenés à lire le programme. Ainsi dans le programme Perl vu précédemment, un programmeur bien élevé ajouterait un commentaire pour indiquer ce que fait le code à ses collègues dont la langue maternelle n'est pas le Perl :

  # vérifie si la ligne est à peu près de la forme nn-nn-nn-nn-nn
  # où nn est un nombre de deux chiffres
  die "$_ n'est pas un numéro de téléphone valide !"
    unless /^((\d){2}[ \.-]?){4}(\d){2}$/;

La fonction référentielle est en revanche la fonction majeure dans des langages qui ne sont pas des langages de programmation, mais des langages de description. Ainsi le langage HTML décrit une page Web, le langage XML décrit un ensemble de données. Ces langages n'ont aucune action par eux-mêmes, ils ne « servent » à quelque chose que lorsque des programmes écrits à l'aide de ces langages sont lus et interprétés par des programmes écrits dans des langages de programmation : ainsi Internet Explorer ou Firefox, écrits en langage C ou C++, lisent des fichiers écrits en HTML.

De nombreuses instructions ont également un rôle métalinguistique. Il s'agit alors d'ajouter au langage, en utilisant sa syntaxe, de nouveaux éléments de vocabulaire :

  (define (redimensionner largeur hauteur)
     (let* ((largeur-courante (get-largeur-courante))
            (hauteur-courante (get-hauteur-courante)))
     ... )

Ce code écrit en Scheme (dialecte du langage Lisp) définit de nouveaux « mots » de plusieurs natures : redimensionner est une fonction ; largeur, hauteur, largeur-courante et hauteur-courante sont des variables. Ces variables sont des mots très particuliers car elles sont locales, c'est à dire qu'elles ne seront reconnues que dans une partie du texte que constitue le programme. Dans les langages humains, l'invention d'un nouveau mot est exceptionnelle ; lorsqu'un auteur s'y risque, il ne limite pas la validité de ce mot à une partie de son livre (une page, un chapitre), mais espère au contraire que d'autres auteurs, convaincus de son utilité, reprendront ce mot dans leurs écrits.

La fonction phatique n'a guère lieu d'être : la machine est là pour écouter les programmes qu'on lui fait exécuter et il n'y a guère besoin, une fois que le programme a été lancé, de maintenir le lien avec elle. La fonction phatique est toutefois présente en négatif, dans l'instruction qui met fin à l'exécution du programme et rompt la communication :

  exit();

Quant à la fonction expressive, elle paraît difficile à remplir pour un programme informatique puisqu'elle suppose que le même énoncé peut être exprimé de plusieurs manières, qui dénotent des émotions propres à l'émetteur du message. On verra qu'on peut, en informatique, atteindre le même but au moyen de plusieurs programmes différents, mais, une fois le programme écrit en suivant les règles du langage, il n'y a guère qu'une manière de l'« énoncer » : c'est de le faire exécuter par la machine.

La fonction poétique fera l'objet d'une note ultérieure sur le style dans l'écriture d'un programme informatique.

Précédent : la poésie informatique ;
Suivant : la double articulation des langages informatiques.

Publié par thbz le 25 septembre 2008

3 commentaire(s)

1. Par Linca  (25 septembre 2008) :

Je crois que mine de rien on utilise assez souvent la fonction référentielle du code informatique, quand on se demande, "que fait le logiciel dans ce cas là", et que la seule façon de le savoir est de déchiffrer le code lui même...

2. Par thbz  (25 septembre 2008) :

Et surtout, la fonction référentielle est utilisée dans des langages tels que XML ou HTML, que j'avais oublié de mentionner parce qu'ils sont moins intéressants du point de vue que j'ai choisi d'adopter ici. Je rajoute un paragraphe ci-dessus à leur sujet.

3. Par Lauranet  (08 décembre 2012) :

Bonjour,
Je cherche un exemple du schéma de Jacobson, mais appliqué à un objet. Par exemple la pluie, le paysage, la montagne...
Si vous avez des images commentées pourriez-vous me les envoyer : tibo-7180@hotmail.fr

Merci

Publier un commentaire :




Se souvenir de moi ?


Textes et photos (sauf mention contraire) : Thierry Bézecourt - Mentions légales