Plan du Site

F.E.B.B.

accueil du site menu histoire   Contact  

 

La Programmation et les Ordinateurs, passés et présents.

Les Langages de Programmation

Définition et Difficultés

1  Définitions :

Pour définir la programmation, on peut se mettre dans le contexte historique :

Un ordinateur suivant la définition complétée par Von Neumann, est une machine algorithmique dont l'ensemble des programmes sont enregistrés dans sa mémoire vive ou l'une ou l'autre de ses mémoires périphériques.
Dans sa mémoire, le programme est dans une forme dite "exécutable", c'est à dire une forme binaire interprétable directement par les circuits logiques de la machine.

Par programme d'ordinateur on entendait en 1940, 1950, 1960, la série d'instructions qui définissent la série d'opérations élémentaires que la machine doit effectuer pour exécuter une ou plusieurs tâches données. On utilisait alors des instructions définies en langage binaire, plus tard, on utilisa des langages de base transformés ensuite par un programme "interpréteur".
A chaque instruction élémentaire correspond la commande d'un circuit logique (électro-mécanique ou électronique).

Cette définition est restée valable depuis les machines à cartes perforées et les premiers calculateurs jusqu'à l'apparition, au début des années 1960, des "systèmes opératoires".

Les systèmes opératoires sont des séries de programmes chargés de gérer et coordonner les fonctionnalité de base de la machine. Ils sont réalisés pour une fois pour toute pour une série de machine. Actuellement , par exemple, UNIX, LINUX, WINDOWS sont des systèmes opératoires. Les systèmes opératoires sont, en quelque sorte, l'interface entre les logiciels d'application et le matériel.

La programmation des applications prend maintenant un sens plus vaste : il s'agit de l'ensemble des instructions à définir pour résoudre un problème donné, sans s'occuper des spécificités propres à une machine donnée, mais en tenant compte du ou des systèmes opératoires prévus et des langages disponibles.
On programma ainsi via des "langages" élaborés tels anciennement FORTRAN, COBOL, BASIC, RPG et maintenant C et C++, HTML, JAVA, ...(la liste est longue, tant des anciens langages que des modernes).
Pour ce qui concerne les ordinateurs qui furent vendus par Bull, GE, Honeywell, CII, consulter les tableaux des langages de programmation présentés dans ce site.

Un programme est une unité logique d'exécution. Une application, un logiciel, un progiciel sont constitués d'une multitude de programmes, appelés en mémoire au fur et à mesure des besoins.

Toutes ces notions sont explicitées dans de multiples ouvrages, plus ou moins approfondis.
Le lecteur belge intéressé par ces questions trouvera entre autre en librairie un excellent ouvrage destiné aux étudiants en première année universitaire en Informatique :
 « Les fondements de l'informatique - Du bit à l'Internet », par H.Bersini, M-P. Spinette et R. Spinette.  La dernière édition de cet ouvrage a paru fin 2008 chez Vuibert (France)

La "micro-programmation" des puces électroniques, des micro-circuits, des micro-processeurs, du déroulement des tâches partagées entre micro-processeurs diffère fort de la programmation des applications. Elle se fait dans des langages adaptés, genre C++, et doit tenir compte de l'architecture des systèmes. Nous n'en tenons pas compte dans ce qui suit.

 

2   Difficultés :

Si , sur Internet, la littérature abonde concernant les langages de programmation, l 'accent a été moins mis sur les difficultés qui furent et sont encore rencontrées par les rédacteurs de programmes, les programmeurs. J'en reprend une liste, non exhaustive :

Il n'est pas facile de bien saisir toute la portée et les nuances définies par l'analyse fonctionnelle et détaillée du problème. L'analyse est un travail spécifique qui ressort généralement de la responsabilité de l'analyste ou du chef de projet. Une analyse incomplète ou mal transmise ne peut conduire qu'à un programme inadapté aux besoins des utilisateurs. Divers outils existent pour éviter de tomber dans ce piège.

Programmer de manière efficace suppose de concevoir une bonne structure générale de ce programme. Chaque fonction particulière : affichage de résultat, fonction de calcul, fonction de recherche, etc fait l'objet de sous-programmes ou tâches appelées par le programme principal. On dira alors du programme qu'il est "structuré". Une bonne structuration est essentielle pour assurer une bonne fiabilité du programme.

S'il est devenu relativement simple d'écrire un programme, il est difficile de concevoir des "jeux d'essais" qui reproduisent les conditions d'emploi du programme.
Ainsi la phase de test est-elle critique et nécessite la collaboration active de futurs utilisateurs. Le programmeur imagine mal la manière dont un non informaticien va réagir face à ce que lui a prévu.

Un programme quel qu'il soit doit respecter des normes de réalisation, en vue d'en faciliter les corrections et les adaptations futures.
Un programme vite fait mais mal conçu finira par coûter très cher en maintenance.

Les applications qui tournent actuellement sur les grands serveurs informatiques impliquent des millions d'utilisateurs. Le moindre défaut dans un programme entraîne des coûts énormes. Cela se vit encore régulièrement quand un opérateur (télécoms, télévision, banque, ..;) procède à l'introduction d'une nouvelle version de son logiciel.

Le dialogue entre analyste et programmeur doit aboutir à un dossier d'utilisation (aide, mode d'emploi) précis et clair. S'il peut exister des lacunes dans les explications d'un programme de correction de photos ou même d'un tableur, il ne peut exister aucune ambiguïté dans les explications concernant un programme comptable ou de gestion des approvisionnements, par exemple. Bien entendu, ces explications qui se retrouvaient à l'époque dans un dossier papier et sont maintenant rendues disponibles via le poste de travail de l'utilisateur.

Plus des programmes sont destinés à un grand nombre d'utilisateurs, plus il faudra les rendre faciles à utiliser, faciles à comprendre et clairement documentés.
Ils doivent se présenter dans  la langue des utilisateurs. En Belgique, au Québec, en Suisse on ne pourra présenter une application que si elle est au moins bilingue.

Le travail produit par un programmeur ou une équipe de programmation est souvent sous-traité à une firme extérieure à l'entreprise propriétaire du produit.
Cela entraîne une difficulté supplémentaire : la validation de programmes fournis.

Il est souvent demandé au programmeur de corriger ou modifier des programmes dont il n'est pas l'auteur. Cela demande une grande souplesse d'esprit.

Si les langages de programmation sont relativement standards, les environnement dans lesquels les programmes sont censés tourner ne le sont pas : Unix, Linux, Windows, Systèmes propriétaires, O.S. pour téléphones intelligents.... Le programmeur devra en tenir compte quand il fait appel à des routines ou des interfaces avec les systèmes opératoires.

Pour certains programmes, tels les éditeurs, les anti-virus, par exemple, il faut une bonne connaissance des interfaces avec les systèmes opératoires dans lesquels ils sont censés fonctionner. Pénétrer la connaissance de ces interfaces n'est généralement pas chose aisée. Rappelons que la condamnation de Microsoft par la Commission Européenne concernait précisément la non publication par ce dernier des interfaces opératoires de son système Windows.

Comme dans bien des domaines, parmi les pièges qui attendent le programmeur, un des pires est la ou les modifications des spécifications en cours de travail.
Dans le pire des cas, une modification peut entraîner un bouleversement complet de la structure du programme.
En tout état de cause, le programmeur doit tenir son propre journal des modifications, car retracer celles-ci après quelque temps devient vite impossible. Il ne doit jamais compter sur l'analyste ou le chef de projet pour le faire à sa place, car eux ne mesurent pas toujours le poids des modifications demandées.

3 Outils en cours d'étude :

1) Les outils actuels permettent de bien structurer un programme. Mais des laboratoires de génie logiciel se penchent sur des outils qui permettront de vérifier la logique mathématique de la construction du programme en repérant les boucles d'erreur et les en vérifiant la logique mathématique du programme.
La puissance de calcul jointe à une logique formelle permettra de parcourir les très grands nombres de cas offerts par les suites de "if" conditionnels imbriqués
2) Il sera aussi possible d'injecter plus de rigueur mathématique dans la conception des spécifications des programmes, soit la phase d'analyse. Pour cela, la rédaction des spécification se fera à travers des outils spécialisés.

     retour au menu histoire