L’informatique sans ordinateur

Piste bleue Le 21 août 2015  - Ecrit par  Baptiste Mélès Voir les commentaires (7)

L’informatique a la fâcheuse réputation d’être la science des ordinateurs. Quelle que soit sa spécialité, un « informaticien » sera toujours appelé à réparer l’ordinateur de son beau-frère. Sa discipline ne porte-t-elle pas le nom anglais de computer science [1] ? Nous montrerons ici, à l’inverse, qu’une part non négligeable des concepts et méthodes de la discipline informatique est indépendante du monde des ordinateurs. Nous verrons ainsi :

  1. qu’on peut faire fonctionner Internet avec des pigeons voyageurs ;
  2. que l’algorithmique peut accélérer la recherche d’un mot dans le dictionnaire ;
  3. qu’il est parfois utile de faire de la programmation sur papier.

Par ces exemples, nous entendons montrer que l’informatique est, comme la logique et les mathématiques, plus qu’une simple technique : c’est une discipline formelle, c’est-à-dire qu’elle peut indifféremment s’appliquer à des supports matériels très différents, l’ordinateur n’étant qu’un cas particulier.

Internet par pigeons voyageurs

Contrairement à ce que l’on croit spontanément, le protocole Internet (IP) n’est pas nécessairement réservé aux ordinateurs. Certes, lorsqu’il fut défini en 1974 dans un article de Vinton Cerf et Robert Kahn [2], il s’agissait de concevoir un protocole de partage de ressources entre des réseaux d’ordinateurs :

« l’une des raisons principales du développement de ce type de réseaux fut de faciliter le partage de ressources informatiques (computer resources) ».

Mais si Internet fut d’abord conçu pour les ordinateurs, cela ne veut pas dire qu’il n’ait de sens que sur des ordinateurs.

Le partage de ressources par le protocole Internet consiste à décomposer le flux de données — par exemple une page web — en paquets, dont chacun contient une partie du message à transmettre. Ces paquets, appelés datagrammes, sont transportés indépendamment les uns des autres, et peuvent même être reçus dans le désordre, selon les aléas du routage.

Dans chaque datagramme, les données sont précédées par un en-tête. Celui-ci contient des « méta-informations », qui sont l’équivalent de ce que l’on écrit sur une enveloppe, quand on note l’adresse du destinataire, celle de l’expéditeur ainsi que diverses mentions comme « par avion » ou « fragile ». Ici, on doit préciser la version du protocole et d’autres informations, dont les plus importantes sont l’adresse source et l’adresse cible [3].

Dans le protocole IPv4, encore largement utilisé en 2015, ces adresses, connues sous le nom d’adresses IP, sont numérotées de 0.0.0.0 à 255.255.255.255, en passant donc par des adresses aussi expressives et faciles à mémoriser que 129.199.129.1 et 192.168.0.1 ! Ces fameuses adresses IP permettent d’identifier l’hôte d’un réseau. Dans les séries télévisées, le héros est toujours assisté d’un expert en informatique qui parvient à remonter jusqu’à l’adresse IP du criminel : cela ne permet pas toujours de connaître son identité, mais au moins de savoir quel ordinateur il a utilisé. Cette marge d’incertitude laisse ouverte la possibilité d’un rebondissement inattendu.

Mais si Internet a d’abord explicitement été conçu pour un monde d’ordinateurs, rien, dans le cahier des charges du protocole lui-même, n’exige que les informations circulent sous la forme de signaux échangés directement entre des ordinateurs sans intervention de la main humaine. Le protocole IP décrit seulement la forme que doit prendre l’information, mais il garde le silence sur le matériau qui permet de la transmettre. On connaît la fibre optique, les ondes radio, le courant porteur ; mais pourquoi pas des signaux de fumée, des sifflements, des clins d’œil ?

Dans le vocabulaire des réseaux, on dit qu’IP relève de la « couche réseau » et non de la « couche physique » qui lui est sous-jacente. Cette indépendance de la couche réseau par rapport à la couche physique permet notamment à des protocoles comme Internet de survivre aux conditions historiques et matérielles qui les ont vus naître, laissant le champ libre à l’invention de nouveaux moyens de transmission. Pour peu que l’information soit formatée correctement, le matériau utilisé pour le transfert est donc indifférent.

Ce constat a conduit David Waitzmann à publier un célèbre poisson d’avril le premier avril 1990, sous la forme d’un document officiel d’apparence très sérieuse : « Un standard pour la transmission des paquets IP sur pigeons voyageurs » (RFC 1149) [4].

Le protocole IP y est respecté à la lettre :

Le paquet IP est imprimé sur un petit rouleau de papier, en hexadécimal, les octets [5] séparés par du noir et du blanc. Le rouleau de papier est enroulé autour d’une des pattes du pigeon voyageur. Une bande de scotch est utilisée pour sécuriser les bords du paquet. La bande passante [6] est limitée par la taille de la patte. [...] Après réception, la bande de scotch est ôtée et la copie papier du paquet est numérisée et transformée dans un format électronique transmissible.

Le format des datagrammes étant parfaitement respecté, il s’agit d’une mise en œuvre tout à fait légitime du protocole IP, jusque dans ses limites intrinsèques :

Étant donné que IP ne garantit qu’une tentative de délivrance (best-effort delivery), la perte d’un pigeon peut être tolérée. Avec le temps, les pigeons se régénèrent automatiquement. On ne dispose pas de multi-diffusion, mais les orages peuvent causer des pertes de données. Il y aura des tentatives de livraison répétées, jusqu’à ce que le pigeon tombe.

JPEG - 260.9 ko
« Avec le temps, les pigeons se régénèrent automatiquement. »

Les caractéristiques des pigeons voyageurs peuvent ainsi être décrites dans le vocabulaire standard des réseaux informatiques, ce qui permet une comparaison technique avec d’autres supports :

Les pigeons voyageurs peuvent apporter un service impliquant un délai important, un faible débit et une grande altitude. La topologie de la liaison est limitée à une seule route point-à-point par pigeon, en utilisant des pigeons ordinaires [...]. Les pigeons ont un système d’évitement de collision intrinsèque, ce qui augmente leur disponibilité. Au contraire de certaines technologies réseau, comme les communications par radio, la communication ici n’est pas limitée par la ligne de vision directe.

Le système pourrait même être généralisé, moyennant quelques désagréments à la saison des amours : « il est possible d’utiliser un grand nombre de pigeons sans connaître d’interférences significatives, excepté au début du printemps » — saison où la noble mission des pigeons passe souvent au second rang de leurs préoccupations.

JPEG - 178.4 ko
Au printemps, des paquets peuvent se perdre en route.

De plus, il conviendra de s’entourer de précautions telles qu’un système de priorités permettant au pigeon d’aller picorer et un chiffrage du message s’il contient des données sensibles. Enfin, le chemin emprunté par le datagramme peut facilement être tracé : « Des traces sont automatiquement générées, et peuvent souvent être trouvées sur les journaux et les câbles ». Le système d’Internet par pigeons voyageurs est donc théoriquement viable ; plusieurs personnes se sont même amusées à l’expérimenter.

Sous ses dehors de simple poisson d’avril, la norme RFC 1149 est porteuse d’un message tout à fait sérieux : l’indépendance de la couche réseau par rapport à la couche physique. Le format du message est indépendant du matériau qui le transmet. Quoique initialement destiné aux ordinateurs, ce protocole est donc compatible avec un dispositif de papier, d’encre et de pigeons.

Ce constat est généralisable à de nombreux concepts et méthodes de l’informatique, qui valent indépendamment de leurs applications matérielles. Nous en donnerons ici deux autres exemples : la recherche d’un mot dans le dictionnaire et la programmation sur papier.

L’algorithmique du dictionnaire

Chercher un mot dans le dictionnaire semble être la chose la plus facile du monde ; mais qui sait le faire efficacement ?

Cherchons d’abord la définition du mot « pataquès » comme on le fait dans la vie de tous les jours. On parcourt quelques pages prises au hasard, puis, parvenu aux alentours des lettres O ou Q, on fait défiler sous le pouce une cinquantaine de pages, parfois en revenant sur ses pas si l’on est allé trop loin, et enfin on trouve la bonne page. Combien de pages intermédiaires a-t-on parcourues avant de trouver celle que l’on cherchait ? Souvent une bonne soixantaine.

Cette méthode n’est guère économique. On peut trouver bien mieux.

Chercher un mot dans un dictionnaire, c’est chercher une entrée dans une liste triée (ici dans l’ordre alphabétique). Ce type de problème est très fréquent en informatique, et plus précisément en algorithmique, la science qui cherche à optimiser les méthodes de calcul.

Voyons donc une méthode plus efficace pour trouver un mot dans le dictionnaire. Disons que notre dictionnaire compte environ 2000 pages. Ouvrons-le en deux et lisons l’en-tête : IRREG.

JPEG - 359.7 ko

Comme nous connaissons l’ordre alphabétique, nous savons que le mot « pataquès » se trouve dans la moitié de droite. Prenons donc cette moitié entre deux mains, et ouvrons-la à nouveau vers le milieu : RECEN.

JPEG - 449.6 ko

Isolons la partie comprise entre IRREG et RECEN, coupons-la en deux : nous obtenons OPPRI.

JPEG - 597.2 ko

Poursuivons de la sorte, et nous obtiendrons successivement PLINT, PATRI, PALPE, PARTI, PASSI et enfin PATEN. L’algorithme progresse très rapidement vers sa solution : nous n’aurons lu que 9 en-têtes avant de parvenir à la page recherchée. Que de temps économisé par rapport à la méthode naïve !

JPEG - 808.5 ko

Le nombre maximal d’en-têtes à lire dans le dictionnaire pour rechercher un mot quelconque dépend du nombre de pages du dictionnaire. Si le dictionnaire compte 2048 pages, c’est-à-dire $2^{11}$ pages, on peut trouver n’importe quel mot en parcourant moins de 11 en-têtes — ce que confirme notre exemple. Et si le dictionnaire contenait deux fois plus de pages, combien d’en-têtes supplémentaires devrait-on lire ? — Un seul, car la moitié que l’on isolerait immédiatement aurait la taille du dictionnaire de l’exemple précédent.

Cette méthode est d’un usage fréquent en programmation et dans les bases de données. Mais rien ne la prédestine exclusivement au monde des ordinateurs : elle s’applique à toute situation dans laquelle on recherche une entrée dans une liste dont on connaît l’ordre de tri (ici l’ordre alphabétique) et la taille, et dont on peut facilement localiser le milieu (par exemple en extrayant une entrée à partir de son adresse). C’est donc le cas lorsque l’on recherche un mot dans le dictionnaire, une adresse dans un bottin, le nom de la ville correspondant à un code postal donné, un livre dans les étagères d’une bibliothèque municipale, etc. C’est aussi le cas si quelqu’un nous dit de deviner un nombre compris par exemple entre 1 et 2000 et qu’il ne nous répond à nos tentatives que par « plus » ou « moins ».

Ainsi, les méthodes de l’algorithmique ne dépendent ni d’un support matériel ni d’un contexte particulier. Elles dépendent seulement de ce que l’on pourrait appeler un « squelette de situation », aussi abstrait que les structures qu’étudient les mathématiciens.

La programmation sur papier

Mais qu’en est-il de la programmation, l’activité informatique par excellence, qui consiste à donner des instructions à une machine ? Ne suppose-t-elle pas, par définition, l’usage d’un ordinateur ?

La réalisation d’un projet informatique, par exemple le portail informatique d’une bibliothèque, nécessite la participation de nombreux acteurs. Le problème est que les informaticiens ne connaissent pas tous les détails de l’administration d’une bibliothèque et que les bibliothécaires ne sont pas des spécialistes de l’informatique. C’est la source de nombreuses incompréhensions, d’une insatisfaction et de surcoûts ; c’est très gênant (surtout les surcoûts).

Plus encore, l’équipe des informaticiens peut être divisée en groupes qui pensent et parlent différemment : certains ne jurent que par les « bases de données » et parlent un langage qui s’appelle SQL, d’autres ne jurent que par la programmation orientée objet et ne parlent que les langages Java ou PHP. Comment faire collaborer efficacement tous ces groupes différents, qui ne parlent pas le même langage ?

PNG - 10.3 ko
Un programme en SQL
PNG - 11.7 ko
Un programme en Java

Une solution à ce problème fut proposée dans les années 1990 avec le langage UML (Unified Modeling Language : langage de modélisation unifiée). Il est enseigné dans des écoles d’informatique au même titre que les langages C, Java, PHP et SQL. Mais contrairement à ces derniers, son destin n’est pas d’être exécuté par une machine ni même tapé sur un ordinateur : il peut être tracé à la hâte sur un coin de nappe ou sur un bout de papier gras, pour être transmis en mains propres aux autres collaborateurs du projet. UML est un langage de programmation sur papier, qui n’est exécuté que par des êtres humains.

La partie centrale d’UML, les diagrammes de classes, consiste à tracer les lignes directrices du projet. Pour cela, on identifie les principaux types d’objets, leurs attributs, les opérations qu’ils peuvent subir et leurs interactions.

Un système de gestion de bibliothèque, par exemple, permettra de manipuler trois principales classes d’objets :

  • un objet de la classe « Œuvre » possède un titre, un nom d’auteur, un éditeur et un numéro ISBN ;
  • un objet de la classe « Exemplaire » possède un numéro d’inventaire et une indication de statut (en rayon, emprunté, manquant, en rénovation...) ;
  • un objet de la classe « Adhérent » possède un nom, un prénom, une adresse.

On peut ensuite énumérer les opérations associées à chaque classe d’objets :

  • une œuvre peut être enregistrée ou supprimée ;
  • un exemplaire peut être enregistré ou supprimé ;
  • un adhérent peut être enregistré, supprimé, recevoir un courrier.

Détaillons enfin les interactions possibles entre les classes d’objets :

  • une œuvre peut être incarnée par un exemplaire ;
  • un exemplaire peut être emprunté par un adhérent ;
  • un adhérent peut réserver une œuvre.

On peut ainsi tracer le diagramme de notre projet. Chaque classe (« Œuvre », « Exemplaire », « Adhérent ») est représentée par un cadre, dans lequel on note le nom de la classe, la liste des attributs, puis, sous un trait horizontal, toutes les opérations que les objets de cette classe peuvent subir. Les classes sont reliées entre elles par des lignes représentant leurs associations, c’est-à-dire les relations qui leur permettent d’interagir [7].

JPEG - 778.4 ko
Un diagramme de classes UML

Établir le diagramme de classes demande une certaine réflexion de la part des destinataires du système : ils doivent mettre à plat tous leurs besoins futurs. Mais une fois que leurs exigences ont été modélisées en UML, ils peuvent transmettre leurs schémas aux informaticiens. Les spécialistes de bases de données sauront alors immédiatement comment convertir ce diagramme en un schéma de bases de données, et les spécialistes de programmation orientée objet comment construire le programme et l’interface permettant de l’utiliser.

UML est donc un langage indépendant des machines, des langages et des logiciels, qui permet aux différents acteurs d’un projet de communiquer malgré la diversité de leurs approches. Il est enseigné jusque dans des écoles de gestion. Il s’agit donc d’un véritable outil de programmation sur papier. Comme tout langage informatique, il est formalisé, et se prête aisément à un traitement formel ; mais ce traitement est généralement effectué par un cerveau humain plutôt que par un processeur. Hormis son support matériel peu ordinaire — un bloc-notes ou un tableau noir — il a toutes les caractéristiques d’un langage informatique.

Conclusion

Ces trois exemples, empruntés à différents domaines — les réseaux, l’algorithmique, la programmation —, montrent que les applications des concepts et les méthodes du traitement automatique de l’information ne sont pas réservés au monde des ordinateurs. Ainsi, le projet pédagogique Computer Science Unplugged préconise d’enseigner l’informatique à l’aide de cartes, de ficelles et de crayons plutôt qu’en distribuant des tablettes numériques dans les écoles [8]. Maint autre exemple pourrait être cité, notamment dans la théorie des systèmes d’exploitation [9]. Si l’ordinateur est l’objet informatique par excellence, c’est simplement parce que les concepts et méthodes informatiques y sont mobilisés de façon massive — mais non de façon exclusive.

L’informatique est une discipline formelle, c’est-à-dire un domaine de recherche dont les concepts, les méthodes et les critères de vérité ne dépendent pas de faits ni de supports matériels particuliers. Comme la logique et les mathématiques, elle se nourrit en grande partie de ses applications pratiques, mais n’y est pas subordonnée : le logicien raisonne avec des flèches, le mathématicien compte sur ses doigts, mais le raisonnement est indépendant de la craie et le nombre est indépendant des doigts. Les innovations informatiques, comme celles de la logique et des mathématiques, apparaissent au gré d’une histoire qui souvent trébuche ou bégaie, mais elles ne dépendent pas conceptuellement de leurs circonstances d’apparition.

Si la logique nous apprend ce que c’est que penser et les mathématiques ce que c’est que connaître, l’informatique nous montre ce que c’est qu’agir rationnellement en s’aidant d’une matière en général, celle-ci étant laissée à notre discrétion.

Post-scriptum :

Pour en savoir plus, n’hésitez pas à visionner en ligne la captation audiovisuelle de cette séance du Séminaire d’histoire des mathématiques de l’IHP.

L’auteur remercie Liesbeth De Mol, Maarten Bullynck et Serge Abiteboul pour leurs précieuses remarques, Christine Proust et Anne Schmauch pour leurs belles photographies. Il remercie également pour leur grande attention les relecteurs dont les noms ou les pseudonymes sont Raphaël Alexandre, Mateo_13, janpol3, Rémi Coulon, bayéma, Marcus Mildner, Sébastien Martinez et Clément Caubel.

Article édité par Frédéric Brechenmacher

Notes

[1Dans l’article fondateur où Alan Turing décrit l’un des premiers modèles théoriques de l’ordinateur, il utilise fréquemment le terme de « computer »... dans le sens de « calculateur », l’être humain qui calcule. Voir Alan Turing, « On Computable Numbers, with an Application to the Entscheidungsproblem », Proceedings of the London Mathematical Society, 2e série, vol. 42, 1937. Le mot français d’« informatique » fut proposé en 1962 par Philippe Dreyfus et admis par l’Académie française en 1966.

[2Vinton Cerf et Robert Kahn, « A Protocol for Packet Network Intercommunication », IEEE Transactions on Communications, vol. COM-22, n°5, mai 1974, p. 637-648.

[3Les quatre premiers bits d’un datagramme décrivent la version du protocole Internet utilisée : 0100 pour la version 4 (surnommée IPv4) ou 0110 pour la version 6 (surnommée IPv6). Les quatre bits suivants contiennent la longueur de l’en-tête. Viennent ensuite notamment le type de service, la longueur totale du datagramme, la position du fragment, la durée de vie du paquet, les adresses source et cible, diverses options et enfin les données du paquet lui-même.

[4Voir aussi la traduction française de Samuel Tardieu.

[5Les octets sont des suites de huit chiffres binaires comme 00101010 ou 00011001.

[6La bande passante est le débit de la connexion, c’est-à-dire la quantité d’informations que l’on peut faire transiter en un temps donné.

[7Nous ne détaillerons pas ici la notion de « multiplicité » dans les diagrammes de classes d’UML, représentée sur notre diagramme par des « 1 » et des « 0..* ».

[8En France, l’algorithmique a fait son entrée dans les programmes de lycée en 2009 et elle est prévue dans les programmes de collège pour 2016.

[9On trouve ainsi des pratiques de défragmentation hors des systèmes de fichiers : « Excusez-moi Madame, accepteriez-vous de vous décaler d’une place afin que je puisse m’asseoir à côté de mon amie, s’il vous plaît ? ». Il existe également des algorithmes d’ordonnancement pour bien d’autres choses que des processus : « Prenez un ticket et le guichetier vous recevra lorsque viendra votre tour ».

Partager cet article

Pour citer cet article :

Baptiste Mélès — «L’informatique sans ordinateur» — Images des Mathématiques, CNRS, 2015

Crédits image :

Image à la une - L’image en logo provient de l’article Pigdee : la livraison par pigeon voyageur du site Capitaine Commerce.
Au printemps, des paquets peuvent se perdre en route. - Baptiste Mélès
« Avec le temps, les pigeons se régénèrent automatiquement. » - Christine Proust
img_14408 - Baptiste Mélès
img_14785 - Baptiste Mélès

Commentaire sur l'article

  • L’informatique sans ordinateur

    le 21 août 2015 à 11:18, par orion8

    Deux extraits de l’article consacré à DIJKSTRA sur Wikipedia :

    — L’aphorisme « L’informatique n’est pas plus la science des ordinateurs que l’astronomie n’est celle des télescopes. » souvent attribué à Dijkstra, est en fait une phrase de Michael R. Fellows et Ian Parberry dans un article du journal Computing Research News.

    et (un peu hors sujet, mais je suis un peu d’accord avec cette opinion, tout en pratiquant -hélas- les BASIC Casio et Texas avec mes élèves de lycée) :
    — « Il est pratiquement impossible d’enseigner la bonne programmation aux étudiants qui ont eu une exposition antérieure au BASIC : comme programmeurs potentiels, ils sont mentalement mutilés, au-delà de tout espoir de régénération. »

    Une anecdote : j’avais émis quelques réserves sur le BASIC auprès d’un élève de 2de particulièrement doué, et lui avais conseillé de s’informer sur PYTHON. Après 15 jours de vacances, il savait parfaitement programmer dans ce langage ! Cet élève entre en Tale S, et a participé brillamment, en 1°S, à toutes les étapes du concours CASTOR/ALGORÉA.
    Ce concours est consacré à l’algorithmique et à la programmation, mais pas aux ordinateurs !

    Répondre à ce message
    • L’informatique sans ordinateur

      le 24 août 2015 à 11:44, par Baptiste Mélès

      Bonjour,

      Merci beaucoup pour votre témoignage. La programmation est tout à la fois à la fois une école de rigueur, comme les mathématiques, et une pratique aussi ludique que les jeux vidéo. Espérons que les élèves y prennent goût, comme l’exemple que vous citez...

      Bien cordialement,

      Baptiste Mélès.

      Répondre à ce message
  • L’informatique sans ordinateur

    le 29 août 2015 à 13:20, par Lhooq

    Je ne réussis pas trop à comprendre cette vision de la chose.

    Je m’explique.

    Vous dites

    les applications des concepts et les méthodes du traitement automatique de l’information ne sont pas réservés au monde des ordinateurs.

    le projet pédagogique Computer Science Unplugged préconise d’enseigner l’informatique à l’aide de cartes, de ficelles et de crayons plutôt qu’en distribuant des tablettes numériques dans les écoles

    L’informatique est une discipline formelle, c’est-à-dire un domaine de recherche dont les concepts, les méthodes et les critères de vérité ne dépendent pas de faits ni de supports matériels particuliers.

    mais pour cela vous vous êtes basé sur trois domaines spécifiques que vous avez réduits à un exemple pour chaque :

    • Les protocoles IP en réseau
    • La recherche dichotomique
    • Le langage UML

    N’est-ce pas là confondre la modélisation et l’implémentation ? Vous faites le parallèle avec les maths et la logique (combien de fois entendrai-je encore ce parallèle, je ne le sais guère) quand je pense qu’un parallèle plus pertinent serait de comparer l’informatique à la physique. Les mathématiques et la logique sont des supports théoriques, la physique mélange théorie et application (ou alors vous pourriez parler de maths appliquées mais il semble que cette discipline soit un peu bâtarde au sein des mathématiciens tout comme l’informatique sur ordinateur à laquelle je vais revenir immédiatement).

    Une façon de voir les choses est de se dire qu’entre l’idée et son application il y a deux travaux différents à fournir. Je peux avoir un algorithme qui sur le papier est très bon et qui calcule ma solution en $\Theta(n)$ mais qui fait un accès mémoire par itération quand un autre calcule en $\Theta(n^2)$ mais ne fait qu’un seul accès mémoire. Si je ne connais rien à l’architecture de ma machine, pensez-vous que je choisirai le bon ? Si je sais quelle quantité de données je devrai manipuler, pensez-vous que j’en sélectionnerai un plus qu’un autre à implémenter ? Si je crée un programme s’occupant de faire voler un drone de façon autonome, verrai-je immédiatement sur le papier que la vibration des rotors risque de gêner mon gyroscope ? N’ai je pas besoin de calculer le bruit de ces rotors ? N’ai-je pas besoin d’avoir ce drone à portée de mains ?

    Je peux même vous proposer un petit jeu. Pourriez-vous me fournir un algorithme calculant l’ensemble des sous-ensembles d’un ensemble ?

    Bien évidemment, il y aura toujours des gens pour distinguer une informatique qu’ils considèrent comme noble, qu’ils aiment à appeler l’informatique théorique en pensant que cela est la même chose que les fondements théoriques de l’informatique d’une informatique d’ordinateur. Des gens qui pensent que coder est trivial ou en tous cas bien moins intéressant qu’un tableau (le noir avec craie est révolu, il faut passer au blanc avec marqueur, c’est bien plus pratique :-p). Des gens qui pensent que ceux qui codent sont des techniciens. J’ai même entendu des chercheurs dire que tel chercheur qui essayait d’accéder à un poste de DR ne pourrait pas l’avoir car il codait, ce qui n’est pas, pour eux, un travail de recherche.

    L’exemple des pigeons, par exemple, est très beau et je trouve que vous n’en avez compris qu’une partie. Oui, la couche réseau est indépendant de la couche physique, mais le réseau contient les deux. Si je veux créer un réseau P2P je n’utiliserai certainement pas les pigeons car je connais le débit de ce réseau. Et c’est ça la richesse de ce vaste domaine, idéaliser, modéliser, se prendre la réalité dans la bouche (lorsqu’un ami et moi avions essayé de coder SimCity sur nos calculatrices nous avions rapidement découvert la triste réalité de l’entier maximal représentable) et s’adapter. Et toutes ces branches sont l’informatique, et faire l’une sans penser aux autres est, je trouve, aberrant.

    En fin de compte, pour résumer tout cela, se baser sur trois exemples étant caractéristiques de la modélisation d’un problème et une solution théoriques de l’implémentation effective de cette solution revient à dénigrer tout un travail sur ce qui se passe dans une machine et qui est du domaine de l’informatique.

    Cordialement,

    Lhooq

    Répondre à ce message
    • L’informatique sans ordinateur

      le 1er septembre 2015 à 10:29, par Baptiste Mélès

      Bonjour,

      Merci beaucoup pour vos remarques. Les exemples que vous donnez ne me semblent pas aller contre la thèse du texte, mais plutôt la confirmer. Dire qu’un savoir est formel, ce n’est pas dire qu’il ne peut pas être matériel, mais simplement qu’il ne dépend pas de ses implantations matérielles.

      Par exemple, vous parlez d’architecture d’un ordinateur : c’est quelque chose d’éminemment formel. Si vous lisez un programme comme le code source d’Unix v6 écrit pour PDP-11, vous n’avez généralement pas de PDP-11 ni même de simulateur sous la main, mais vous pouvez facilement en trouver le manuel sur le web et comprendre le fonctionnement des parties du programme écrites en assembleur. Le code source, édité et commenté par John Lions, peut se lire dans le bus, sans PDP-11 sous la main. Il arrive même très fréquemment dans l’industrie qu’on écrive des programmes pour une machine qui n’existe pas encore et dont on ne connaît que l’assembleur ou les interfaces de programmation (API).

      J’ignore où l’article vous a paru exprimer du dédain pour le codage. Si vous appelez noble ce que j’appelle formel, le codage est une activité aussi « noble » qu’écrire des mathématiques. Quand on écrit des mathématiques, on utilise un stylo et du papier, mais ce n’est pas une activité essentiellement physique pour autant : le matériau utilisé est quelconque.

      Il existe certes une pratique du codage dans laquelle l’interaction avec un ordinateur physiquement existant est importante, c’est l’empirisme (la programmation à tâtons) et le débogage par tests (en nombre fini). C’est une pratique utile quand on commence, et même assez ludique, mais ce n’est pas nécessairement la meilleure pédagogie (dans les universités et écoles d’ingénieurs, les examens de programmation ont plutôt lieu sur papier) et ce n’est surtout pas une garantie d’absence de bugs. Cette dimension-là est l’équivalent du brouillon en mathématiques : on progresse par essais et ratures. Il faut bien commencer par programmer à tâtons, mais l’idéal est d’arriver à s’en passer le plus possible.

      Enfin, vous pensez m’objecter un fait avec lequel l’article est tout à fait en accord : la couche physique est essentielle aux réseaux. Oui, mais elle est quelconque. Si un jour on trouve mieux que la fibre optique ou les câbles électriques, on n’aura probablement pas besoin de refondre le protocole Internet ni la théorie des réseaux.

      Bien cordialement,

      Baptiste Mélès.

      Répondre à ce message
      • L’informatique sans ordinateur

        le 1er septembre 2015 à 10:33, par Baptiste Mélès

        Bonjour,

        Encore une chose : vous qui prêtez à l’article un mépris pour le codage, peut-être serez-vous intéressé par le séminaire suivant, dont le programme 2015-2016 paraîtra prochainement :
        http://poincare.univ-lorraine.fr/fr/seminaire-codes-sources

        Bien cordialement,

        Baptiste Mélès.

        Répondre à ce message
      • L’informatique sans ordinateur

        le 1er septembre 2015 à 17:33, par Lhooq

        Bonjour,

        Justement, c’est là que, selon moi, vous vous trompez. Pour reprendre le principe du réseau, si un jour on trouve mieux que la fibre optique, par exemple qu’on peut créer des noeuds contenant directement la table de routage mondiale, on adaptera sûrement les algorithmes au fait que les possibilités physiques sont meilleures. Autre exemple, un algorithme distribué appliqué à un réseau d’ordinateurs ou à un réseau de capteurs n’est pas du tout le même. Ce que je veux dire est donc la chose suivant :

        L’informatique, contrairement aux mathématiques, a besoin de connaître son support.

        Comprenons-nous bien, je ne néglige pas le travail d’un algorithmicien, je considère simplement qu’il ne fait pas de l’informatique mais bien de l’algorithmique. L’algorithmicien fournit un brouillon formel à l’informaticien :D (oui, émoticône car cette phrase me fait rire moi-même en imaginant la tête d’un algorithmicien qui lirait ça)

        Pour en revenir à

        Il existe certes une pratique du codage dans laquelle l’interaction avec un ordinateur physiquement existant est importante, c’est l’empirisme (la programmation à tâtons) et le débogage par tests (en nombre fini).

        Premièrement, vous n’avez pas répondu à mon petit jeu ;-), deuxièmement, non, il existe beaucoup d’autres domaines où coder avec un vrai ordinateur est important. Par exemple, savoir si on travaille sur une machine acceptant ou pas le parallélisme et coder dessus me semble plutôt fondamental. Récemment, j’ai lu la review d’un article en démonstration automatique (plutôt théorique, comme domaine) où l’auteur se faisait copieusement gronder car il n’avait fournit aucune implémentation et donc son « algorithme révolutionnaire » n’avait aucune réalité.

        Je ne néglige pas la partie « théorique » de l’informatique. C’est ce qui est en partie enseigné à l’université. Mais la raison pour laquelle les machines de Turing restent cantonnées au domaine de l’algorithmique sont bien là. On ne fait pas de l’informatique sur papier. On ne peut que faire un brouillon très éloigné de la réalité.

        Amicalement (oui, il ne faut jamais oublier l’amicalité :-)),

        Lhooq

        Répondre à ce message
        • L’informatique sans ordinateur

          le 2 septembre 2015 à 08:51, par Baptiste Mélès

          Bonjour,

          L’informaticien a besoin de connaître son support ; mais ce support est idéalisé. Si, pour reprendre votre exemple, on trouve un support permettant de délocaliser en chaque nœud la table de routage (ce qui, du reste, n’arrive pas tous les jours, ni même apparemment tous les 50 ans), on inventera un nouveau protocole ou une variante de l’existant (sans doute une surcouche qui permettra de faire abstraction des différences entre les deux supports), et ce protocole vaudra pour tous les supports du même type, aussi différents qu’ils soient, matériellement parlant, du premier découvert. Si Internet avait strictement dépendu du matériel réseau des années 1970, on n’aurait pas pu l’adapter à la fibre optique, aux ondes radio, etc. et ce protocole serait depuis longtemps obsolète.

          De plus, il est évidemment fondamental, comme vous l’écrivez, de savoir si l’on programme sur une machine parallèle ou non (ainsi que de connaître la mémoire disponible, le jeu d’instructions du processeur etc., selon le type de langages que l’on utilise). Il se trouve, fort heureusement, que c’est noté dans la documentation de la machine. On peut ainsi écrire un programme pour une machine qui est encore en cours de construction. Souvent, la machine pour laquelle on programme quand on apprend un langage de programmation est sa « machine virtuelle », qui n’est généralement pas celle que l’on a sous les yeux, et pourtant, aux yeux du programmeur, elle est aussi concrète.

          Quand l’article ci-dessus dit que la matière est laissée « à notre discrétion », il ne faut pas comprendre par là qu’elle soit arbitraire, mais au contraire, selon la définition usuelle, laissée à notre sagacité. Comme indiqué dans l’exemple du dictionnaire, elle doit respecter certaines consignes. Par exemple, l’écriture sur le papier est relativement stable, mais pas l’écriture sur l’eau, ni l’écriture sur le sable un jour de grand vent. L’important n’est pas de connaître le matériau, mais ses propriétés.

          Quant à vos derniers mots, l’article auquel vous réagissez est peut-être plus nuancé que les positions que vous vous déclarez las d’entendre et auxquelles il vous a paru faire écho. Vous semblez lui prêter la thèse selon laquelle la vraie informatique se passe d’ordinateur, alors que son propos est seulement de dire qu’il existe aussi une informatique sans ordinateur. La conclusion dit explicitement que l’ordinateur est l’objet informatique par excellence. Le propos de ce texte n’est pas non plus de privilégier l’informatique « théorique » sur la pratique informatique : comme vous l’aurez remarqué, le premier et le troisième exemple relèvent davantage de l’ingénierie que de l’algorithmique.

          Bien cordialement,

          Baptiste Mélès.

          Répondre à ce message

Laisser un commentaire

Forum sur abonnement

Pour participer à ce forum, vous devez vous enregistrer au préalable. Merci d’indiquer ci-dessous l’identifiant personnel qui vous a été fourni. Si vous n’êtes pas enregistré, vous devez vous inscrire.

Connexions’inscriremot de passe oublié ?

Suivre IDM