LA PROGRAMMATION STRUCTUREE

                                                                                              Décembre 1979

 

 

 


0 . LA PROGRAMMATION STRUCTUREE

 

0.1.          Généralement la programmation est représentée par trois étapes :

 

- l’analyse du problème

- la conception d’un algorithme

- l’écriture dans un langage de programmation de cet algorithme

 

 

L’écriture du programme ressemble le plus couramment à la construction d’un puzzle où on commence d’un côté pour reprendre s’un autre, sans savoir où on va terminer. De plus, le langage fourmille d’instructions sophistiquées.

 

Cette approche est dite « BOTTOM-UP »

On lui oppose une approche qui consiste à analyser l’image à obtenir, à la découper en ensembles, sous-ensembles, etc … c’est-à-dire à la structurer.

   Cette programmation est dite « TOP DOWN ».

 

Le temps des programmeurs est précieux : LA PROGRAMMATION STRUCTUREE a été créée pour réduire les délais, les coûts d’écriture et de mise au point des programmes ; enfin la programmation n’est plus le « casse-tête chinois » connu.

 

0.2.          Trois principes élémentaires permettent d’atteindre ce but :

 

 - L’analyse « de haut en bas » : l’organisation d’un ensemble d’informations doit être recherchée  par une démarche hiérarchique partant de l’ensemble (au niveau le plus global) pour parvenir par subdivisions ensemblistes successives au niveau de détail nécessaire le plus bas.

 - L’organisation d’un système impose une connaissance précise en premier lieu des résultats recherchés, puis des données disponibles et enfin des traitements a effectués.

 - En informatique, il faut distinguer le quantitatif du logique : une partie d’un programme doit être exécutée des millions de fois, une autre ne le sera peut-être jamais ou rarement.

 

   Ces trois principes vont nous permettre de construire une procédure ou un arbre programmatique qui est une représentation spatio-temporelle de l’algorithme de programmation.

 

   De plus, les fondements mathématiques – la théorie des ensembles et l’algèbre de Boole notamment – permettent l’optimisation des programmes et confèrent à la programmation structurée un caractère général qui en fait un outil utilisable dans tous les domaines ( gestion, calculs scientifiques, systèmes, … ).


Chapitre 1

 

   L’ordinateur n’est pas un simple outil comme le burin et le marteau. Il est le stade supérieur de la machine. Il ne procède pas seulement à des opérations dues à la main de l’homme, ses outils et leurs organisations mais à des opérations généralement dévolues strictement au cerveau humain. Il utilise les aspects des opérations de la pensée et l’homme a créé ces machines à l’image de sa logique.

L’informatique est une application de plusieurs sciences comme la logique, les mathématiques, la linguistique, en même temps que la théorie de l’information ou la théorie des fichiers.

   Par exemple, par son aspect automatique, elle utilise les structures logico-mathématiques et parce qu’elle utilise un langage pour communiquer entre la machine et ses utilisateurs, elle utilise les structures de la linguistique.

   Il n’est pas de notre intention de nous apercevoir - oh miracle ! – qu’en informatique on fait aussi de l’algèbre de Boole et qu’un peu de théorie des ensembles ne fait pas de mal, mais que bien au contraire l’informatique procède dans son analyse et sa programmation de bien des sciences car elle en est la conséquence.

   On pourrait même considérer l’informatique comme une application privilégiée de la théorie des ensembles, l’algèbre de Boole et même, par son rôle simplifié dans le traitement de l’information, comme un exemple remarquable de linguistique, contenu dans notre conclusion.

   De même que nous n’introduiront pas « un peu » de mathématiques, nous ne « choisirons » pas, même judicieusement, des structures – « les plus intéressantes » - pour faciliter la programmation.

   Les structures correspondent sous une forme élémentaire aux coordinations nécessaires de l’intelligence. L’idée du structuraliste est de retrouver les structures « naturelles » et de former un ensemble tout à fait complet et comparable aux grandes structures des mathématiques (la logique de Boole est une algèbre).

   On retrouve les structures dans tous les comportements humains et sans remonter jusqu’à la tétée du bébé, on sait que la coordination générale des actions sensorimotrices demande outre des facteurs fonctionnels, des éléments structuraux communs pour reproduire activement une conduite en intégrant des éléments nouveaux, pour ordonner des mouvements, ranger, etc …

   Sur le plan de la perception, l’homme n’est pas simple spectateur d’un monde structuré mais est l’auteur des structurations – quelle structure possède un tas de cailloux ou qu’est-ce qu’un fichier ? – l’acte d’intelligence est précisément une réorganisation instantanément du monde perçu suivant les formes les meilleurs, c’est-à-dire d’une manière active et suivant des procédés logiques – le tas de cailloux est peut-être une pyramide -.

   L’une des difficultés de la perception des structures en informatique tient au fait que le vécu informatique ne joue qu’un faible rôle puisque les structures ne se trouvent pas dans la conscience des utilisateurs mais ce qui est tout autre chose dans leur comportement opératoire et que seule une réflexion logico-mathématique sur ces structures permet de prendre conscience de celles-ci en tant que structures d’ensemble de l’information.

   Un des avantages des structures réside dans la forme abstraite dont elle procède et qui généralise leur utilisation. En programmation classique lorsqu’une propriété est découverte par abstraction sur des objets (des traitements ou des données), elle nous renseigne certes sur eux mais plus la propriété est générale, plus elle est pauvre et peu utile car s’appliquant à tout.

   Le propre de la logique de nos structures est d’être tirée non des objets mais des actions que l’on peut exercer sur eux et généralement des coordinations plus générales de ces actions telles que réunir, ordonner, mettre en correspondance, etc …

   Le langage s’applique à la pensée, mais la pensée précède le langage dans le sens où elle doit son acquisition et son développement à l’expérience de perception du monde en ordonnant et en rangeant. Et c’est ensuite sous forme de règles logico-mathématiques que le langage peut structurer la pensée.

   A l’école on étudie « le langage » de la théorie des ensembles qui se déduit de règles simples perceptibles à de jeunes enfants qui pourtant ne maîtrisent pas encore le langage.

   Il est clair alors que en informatique le langage – généralement à base d’anglais – joue le rôle privilégié de structurateur de l’information – en plus des divers modes de représentation, diagrammes et d’images de l’action -.

   Les mots des langages importent peu puisqu’on dispose de nombreux langages différents et que ces mots peuvent même êtres réduits à des signes ; mais à travers les opérations ce sont bien les structures qui importent, par exemple pour un traitement répétitif ou un traitement sélectif sur l’ensemble des articles d’un fichier.

   Nous pensons que le langage informatique par sa simplicité est peut-être le premier exemple clair de la dépendance entre langage et structure logique de la perception intelligente du monde.

   Il nous parait alors « intelligent » en étudiant un langage de programmation, d’en étudier aussi les structures.

   A partir d’expériences en Afrique, il nous parait aussi que si le défaut de perception naturelle du monde de la gestion – notion de fichiers, d’organisation d’entreprises ou d’interactions entre divers organismes de l’administration – peut empêcher certains étudiants de devenir de bons informaticiens, le rôle pédagogique de la programmation structurée est alors indispensable pour améliorer une perception insuffisante.

   Parce que les structures du langage sont celles de la perception de l’information, toute analyse et programmation se déduisent des structures de l’information à traiter.


1.        De l’existence des deux structures

 

   La bible, prise comme un ouvrage de références, est aussi un traité de logique. Dans son étude de le Genèse, Sören Kierkegaard a souligné, à propos de l’épisode de la pomme, que le passage de la pureté au péché originel est aussi un saut du qualitatif au quantitatif – le choix de l’homme vers le péché entraîne tous les hommes -.

   Ce n’est que récemment qu’on s’est intéressé à l’histoire de la logique. Pourtant l’essentiel de ce qui nous intéresse remonte à Aristote.

   Si sa formalisation ne put empêcher la logique de sombrer dans le domaine de la métaphysique, c’est l’introduction des quantificateurs (Frege, 1879) qui la fit définitivement s’imposer dans le domaine de la métamathématique.

   Des fameux syllogismes « Socrate est un homme » et « tous les hommes sont mortels », on peut extraire les quantificateurs existentiel et universel de la théorie des propositions sur laquelle s’escrima le jeune écolier dés ses premières années d’école.

   Ces quantificateurs ne sont autres que des instruments de nos structures alternative et répétitive de la programmation.

   Depuis Aristote, la logique n’a pas changé : « nous sommes tous aristotéliciens ».

   Van Voght, dans son œuvre de science-fiction « le monde des à », essaye d’imaginer un monde non-A, c’est-à-dire sans la logique d’Aristote. Pour ma part, je pense qu’il est bien peu convaincant et pour cause : qu’il est difficile d’imaginer un monde qui ne serait pas soumis à la seule logique que l’homme n’ait connu et ne connaitra encore longtemps.

   L’homme a sa vie fondamentalement marquée par plusieurs sortes de mesure. La mesure de son âge, le jour et la nuit, les saisons etc … une mesure biologique, ses rythmes respiratoires et cardiaques – un homme au rythme rapide vit moins longtemps, parait-il -, la mesure des évènements de sa vie, ses amours, etc …

   A l’image de ces mesures et comme dans les mondes parallèles, qui existent en même temps mais qui ne se rencontrent pas, des romans de sciences-fiction de Phil K. Dick, l’informatique vit des mesures (ou mondes) parallèles mais complémentaires :

 - la première, fondée sur sa rapidité, est son cycle de base : le temps moyen utilisé dans un ordinateur pour une opération élémentaire se mesure en micro-secondes. La très grande répétition de ces opérations et ceci dans un temps très court, est un aspect fondamental de l’informatique.

 - la seconde est fondée sur le choix : par exemple, la plupart des travaux informatiques portent sur des opérations journalières ou mensuelles, or tous les jours ne se ressemblent pas et même les mois n’ont pas le même nombre de jours, sans parler des années bissextiles. Si un traitement dure trente minutes, on ne le fait pas repasser toutes les demi-heures mais suivant les exigences de la gestion de l’homme, le lendemain ou le mois suivant. Le choix est le second aspect fondamental de l’informatique.

 

   Revenons à la Bible et à Aristote : on voit souvent dans l’épisode de la pomme « la chute de l’homme ». Pour nous, elle est surtout son accession à la connaissance, par la distinction entre le bien et le mal. Dans sa classification des syllogismes, Aristote fonde la logique élémentaire sur le principe du tiers exclu ou principe de dichotomie, c’est-à-dire que toute proposition a deux solutions : elle est vraie ou fausse. Un montant est positif : c’est vrai ou c’est faux.

   La vieille logique s’applique à l’informatique, la structure alternative aussi bien que la structure répétitive sont basées sur le principe de dichotomie et utilisent des tests que nous appellerons prédicats : à quelle condition faire le traitement ou non ou bien à quelle condition recommencer un traitement.

En conclusion :

   Ce n’est pas par hasard si l’informatique comme la théorie de l’information reconnaît les deux structures : structure alternative et structure répétitive.

   De même que tout langage de l’informatique, en tant que structurateur des procédures de traitement possède ces deux structures.

   On peut comme les programmeurs structuralistes des Etats-Unis, à partir de l’étude du langage, montrer que tout programme « bien écrit » est une combinaison exclusive des structures. Mais on peut aussi étudier les structures à partir de l’information à traiter, comme le méthode WARNIER, et en déduire une procédure « bien structurée ».

   Même si le cheminement parait différent et parfois opposé, les structures de la perception intelligente de l’information étant les mêmes ; les résultats sont les mêmes.

   Nous choisissons de ne pas attendre de « penser » dans le langage structurateur mais à partir de quelque chose qui existe déjà : la description de l’information, résultat de toute analyse, et de faire ainsi l’économie de la grande angoisse de la feuille blanche.