4 March 2009

Qu’est-ce qu’un code ?

Il convient de définir le code de façon précise pour pouvoir ensuite bâtir sur cette définition.  Voici donc comment je définis le code dans le cadre d’une théorie mémétique.

Pour faire simple, un code peut être décrit comme une série de commandes d'actions.
Ceci quelque soit la nature du code ou des actions. Comme exemple de codes nous avons :
Les gènes dans le monde biologique qui commandent la production de molécules, les programmes dans le monde informatique qui commandent les ordinateurs, les phrases dans le monde culturel qui commandent des comportements, etc.

Cependant, considérer le code seul ne suffit pas. Nous allons voir qu’il fait parti d’un système.

On notera qu’un code ne se promène jamais seul. Pour être transporté ou déchiffré, un code a besoin d’être écrit quelque part, il a besoin d’un support. Ensuite, un code est destiné à être lu, sinon il est inutile, il a donc besoin d’un lecteur. Enfin, un code se doit d’être exprimé dans un langage particulier, sinon il n’est pas compris. On remarque que si une seule des conditions précédentes manque, alors le code est perdu, il n’est plus un code, il cesse d’être.

Donc, le code fait parti d’un ensemble nécessaire et indissociable de quatre éléments et ne fonctionne pas sans cet ensemble. Cet ensemble contient :

1 Le code lui-même (bien entendu).
2 Le support qui contient le code.
3 Le lecteur qui transforme le code en action.
4 Le langage qui doit être respecté par le code.

Le support :
Le support contient le code et le code n’existe pas sans son support. Si vous effacez l’encre du papier, le texte disparaît.
Le support permet donc deux choses essentielles. Le stockage du code, bien évidemment, mais aussi son transport. Remarque : un même code peut être écrit sur différents supports.
Exemples de supports : ADN pour le code génétique, encre ou paroles pour les phrases, disques magnétiques ou optiques pour les programmes.

Le lecteur :
Par «lecteur», il faut comprendre «un mécanisme qui transforme le code en actions». C'est-à-dire que pour tout code lu par le lecteur, une action est réalisée. Pour être considéré comme un lecteur, ce lecteur doit pouvoir lire au moins deux codes distincts et doit pouvoir agir au moins de deux façons distinctes en fonction de ces codes. Sans cela ce n’est pas un lecteur.
Remarque : Un même code peut avoir des significations différentes selon les lecteurs car les lecteurs définissent leur propre langage (cf. Le langage)
Exemples de lecteurs : ordinateurs, cerveaux humains, cellules contenant l’ADN.

Le langage :
Parmi tous les codes lisibles par un lecteur, on distinguera les codes irréductibles, c'est-à-dire les codes qui, s’ils sont privés d’une de leurs parties, ne sont alors plus exécutables par le lecteur. Les codes irréductibles sont appelés les termes du langage.
Le langage d’un lecteur se définit donc comme l’ensemble des termes de ce lecteur.
Exemples de langage : Ensemble des gènes possibles, ensemble des mots et lettres de la langue française, ensemble des codes de base du langage informatique.

Le code :
Le code prend son sens par le langage. Le code est un sous ensemble des termes du langage, c'est-à-dire que le code est constitué d’une série de termes issus exclusivement de l’ensemble des termes originaux du langage. Comme une phrase est constituée de mots tirés du dictionnaire.
Exemple de codes : Gène qui fait les yeux bleus, le mot «bonjour», une ligne de code informatique.


Exemples d’ensembles pour illustration :

Code  Phrases Gènes          010101
Support Sons ADN            CD-rom
Langage Français Génome étendu  C++
Lecteur Cerveau Cellules       Ordinateur
Actions Pensée      Organismes     Calculs


Le code est quelque chose d’immatériel. Par exemple, l’encre posée sur du papier pour former des mots n’est pas le code en soit c’est uniquement son support. Le code, se trouve dans la disposition particulière de cette encre, plus particulièrement dans les formes géométriques des lettres. Ces formes géométriques sont des objets abstraits. Pour la même raison, le langage humain aussi est quelque chose d’immatériel. Dans le cas de l’ADN il en va de même. Le code des gènes, ce n’est pas les molécules mais leur arrangement particulier, leur séquence. Cette séquence, encore une fois, est un objet abstrait, l’ADN n’en est que son support, son expression. Même chose pour l’informatique. Que les programmes circulent sous formes de chiffres ou de lettres ou d’octets, qu’ils soient écrits sur des supports de silicium ou de plastique, ils ne sont jamais que des objets abstraits, des arrangements particuliers de la matière.

Ceci pour dire qu’on ne peut pas «voir» le code à proprement parler, on ne peut jamais en voir que les effets sur leurs supports. On peut voir une séquence de nucléotides et on peut voir de l’encre sur du papier mais sans un support, un code est invisible, inaudible, intouchable.

Enfin, pour identifier et déchiffrer un code, il faut non seulement trouver son support mais aussi son ou ses lecteurs ainsi que les langages associés à ces lecteurs. Sans cela un code reste indéchiffrable et donc inaccessible. On ne peut « voir le code » qu’à condition que les trois autres éléments, support, langage et lecteur, aient été identifiés. Si vous voyez un texte en arabe mais que vous n’en connaissez pas le langage, le sens du texte, son code, vous reste inaccessible. 


Le temps et l’espace.
Implicitement, le concept de code nécessite l’existence d’au moins une dimension d’espace non nulle et d’au moins une dimension de temps non nulle. En effet, pour pouvoir faire la différence entre le support du code et le lecteur, il est nécessaire de pouvoir les distinguer dans l’espace. Enfin, pour qu’un code puisse être lu et ensuite exécuté, il est nécessaire de pouvoir séparer ces éléments dans le temps, et ce temps doit avoir une direction constante (la flèche du temps) pour que la lecture précède toujours l’action.
Pour finir, l’espace se doit d’être discontinue et transformable, pour que des états différents puissent être distingués et que des actions puissent avoir lieu.

L’action.
Nous poserons que toute action est une transformation de l’espace, générée par un lecteur lors de la lecture d’un code.

L’énergie.
Pour étudier les codes nous considérerons exclusivement des univers dans lesquels toute transformation de l’espace nécessite un échange énergétique et qui respectent le premier principe de la thermodynamique : la conservation de l’énergie. Ainsi toute action nécessite un échange énergétique.

L’entropie.
Les actions exécutées par les codes respectent le second principe de la thermodynamique mais elles peuvent avoir deux types de conséquences sur l’entropie d’un système. Soit elles participent de son augmentation (exemple : simple dissipation de chaleur), soit elles participent de sa répartition (exemple : formation de cristaux). En effet, certains codes peuvent exécuter un transfert d’entropie, ainsi diminuant l’entropie d’une partie du système tout en augmentant celle du reste. Ceci est vrai en particulier pour les réplicateurs. Tout système réplicant tend à faire diminuer l’entropie de son univers local au dépend du reste de son univers.

Conclusion.
Le concept de code n’est qu’une grille de lecture, une interprétation de l’univers. En analysant l’univers sous la forme d’un ensemble de codes, de langages, de lecteurs et de supports, nous observerons l’univers sous un angle révélateur de certains mécanismes. Les codes qui nous intéressent particulièrement sont les codes réplicateurs.