3. L'architecture de von Neumann

La plupart des modèles de calcul séparent de cette façon les programmes des données. Le principe de l'architecture de von Neumann est qu'il n'existe pas de séparation tranchée entre programmes et données. Le point fondamental est que ni les données ni les programmes ne sont des objets réels, pas plus que des idées. Ils ne sont que des représentations codées de ceux-ci. On parle donc plutôt d'information : l'information est un codage, d'objets, d'idées, de procédures, d'algorithmes, etc.

Exemple : un son est une suite de variations de pression de l'air. Représenter des sons sous forme d'information (pour en faire un fichier son) c'est une manière de coder ces variations. Dans le cas d'espèce on commence par échantillonner le niveau de pression au cours du temps. Ensuite, il s'agit de coder, pour chaque "tranche" de temps, l'amplitude de pression : on prend généralement la valeur de cette pression sur un intervalle donné avec une résolution (nombre de valeurs possibles) donnée. Les nombres obtenus doivent être ensuite codés par des valeurs possibles de la mémoire. Chaque étape de codage est définie par des choix. Par exemple, on n'est pas obligé de représenter des amplitudes proches par des codes-mémoires proches : on choisit parfois des valeurs éloignées pour parer à certains défauts de transmission. Par ailleurs la méthode de codage des sons que nous venons de présenter est extrêmement rudimentaire, les codages réels sont souvent beaucoup plus complexes, de façon à réduire la taille des fichiers grâce à la compression et à l'abandon d'information inutiles.

Le second point important à se représenter est que l'on peut passer sans solution de continuité de la notion de programme à celle de données. Un programme qui, dans un langage donné, sert à produire le texte « Bonjour tout le monde ! » n'est-il pas, en effet, une forme de codage de ce texte ? C'est d'ailleurs cette idée qui est à la base des principaux algorithmes de compression de données (sans perte) : un fichier compressé n'est finalement qu'une façon de programme permettant de produire les données non compressées. À l'inverse un document de nature essentiellement textuelle peut contenir des éléments programmés : "macros" pour les traitement texte, scripts intégrés pour une page web etc. Finalement, tout programme peut être vu comme une donnée et toute donnée comme une forme de programme (sur un mode très similaire à la dualité onde-corpuscule en Mécanique Quantique).

Dans les ordinateurs modernes l'information, quelle qu'elle soit, est donc stockée dans les mêmes mémoires, dont nous détaillons les types plus loin. Ces mémoires sont composées de cases, susceptibles d'accueillir un contenu et désignées par des adresses. Si l'on ne retient d'un ordinateur que "son" processeur et "sa" mémoire, on retrouve un schéma assez proche des machines de Turing théoriques.