LE PROJET TENIA (1) OU LA PROGRAMMATION CONSTRUCTIVE (2) Comme le préfixe de l'adjectif `constructif' semble l'indiquer, cette technique n'est pas particulièrement faite pour des gens bien malins. En effet, dans la nouvelle ère qui s'ouvre pour l'informatique, les temps de calcul sont considérablement réduits, tandis que les temps de panne augmentent exponentiellement ; les méthodes sont dépassées ; ce qu'il faut au programmeur c'est une technique qui lui permette, en prenant beaucoup de temps, d'occuper ses longues périodes d'inactivité; comme le montrent des statistiques récentes : 80 % du temps des programmeurs est occupé à parler vacances, 15 % à parler de sujets divers (dont 3 % d'automobile), les 5 % restant à écrire des programmes. De plus, il faut éviter d'écrire des programmes communs comme il en existe un peu partout engendrant, comme on le sait, de longues polémiques. On peut résumer la démarche informatique par le diagramme suivant faux problème -> problème épineux -> programme commun -> résultat -> donnée Ce que nous proposons donc, c'est de partir des données pour arriver aux résultats, c'est, nous pensons, l'originalité de la technique, et nous allons l'illustrer par deux exemples 1°) Problème de paie Il s'agit de partir de la fiche de paie des ouvriers pour reconstituer la masse salariale de l'entreprise. Les équations que l'on écrit sont les suivantes Retenues = salaire brut + salaire net Sécurité Sociale = retenues + autres retenues ; Autres retenues = retenues pour fait de grèves + retenues pour retards Masse salariale_n = masse salariale_f + salaire brut, 2°) Tri (3) Ce problème bien connu des joueurs de cartes est le suivant «construire un algorithme qui, partant d'une liste parfaitement triée, arrive à une liste parfaitement désordonnée». Les équations seraient ici les suivantes Deux cartes = une carte + une carte; Trois cartes = deux cartes + une carte + une carte ; Quatre cartes = .. . Cinquante trois cartes = cinquante deux cartes + une carte ; etc... Deux remarques s'imposent - la première, qui provient de la deuxième égalité montre le type classique d'erreur que font les étudiants, - la deuxième est l'introduction du concept de série déjà utile en mathématique, mais qui trouve pleinement son emploi ici. QUELQUES CONSTRUCTIONS NOUVELLES DU LANGAGE DE PROGRAMMATION 1°) Instruction POUR AUCUN ... FAIRE ... C'est l'instruction clé : comme on s'imagine, elle ne fait pas grand chose mais occupe du temps machine pour justifier les crédits qui ont été demandés ; elle était réclamée depuis longtemps par certains utilisateurs qui. ne savaient pas comment utiliser des crédits pléthoriques. Elle remplace les instructions pourries. L'équivalence avec l'instruction `POUR CHAQUE NE RIEN FAIRE' a été démontrée dans un récent article (TANDINI, Dominique, Informatica Corsica [9]). 2°) Entrée -- sorties ECLECCÀR et INIMP qui signifient respectivement «écrire sur le lecteur de cartes» et «lire sur l'imprimante». Ces instructions, qui n'existent dans aucun langage à ce jour, nous ont paru suffisamment intéressantes pour justifier leur introduction, malgré de grosses difficultés d'implémentation. 3°) L'instruction COME FROM Correspondant à l'instruction ` ALLER A `, elle permet de construire des verrues ; c'est un outil indispensable pour la protection des programmes (4). 4°) L'instruction SI ... SINON ... ALORS ... NONSI Introduite pour la première foie par ARCAS [1], elle est particulièrement intéressante pour dérouter le lecteur (5) ; elle est souvent complétée, dans le même but, par des commentaires en Javanais, voire en Hébreux. -------------------------------------------------------------------- (1) Technique empirique de Nancy pour l'Informatique Appliquée. (2) Le projet a reçu une subvention du Comité de Recherches et d'Etudes Technique et Industrielles de Nancy. (3) Les gens des P.T.T. ont fait grève parce que trier était un travail idiot ; nous proposons ici une variante plus agrèable, sinon plus con structive. (4) Notamment contre l'espionnage industriel. (5) De cartes. BIBLIOGRAPHIE [1] ARCAS,C - New tools in programming - Unpublished paper. [2] DUPONT J - Une nouvelle technique : la programmation constructive - Thèse de 3ème cycle (Nancy). [3] DURAND, P - La programmation constructive : une nouvelle technique - Thèse de 3ème cycle (Nancy). [4] DURAND, P et DUPONT, J - A new technique : the constructive programming - Publication interne de l'Université de Nancy. [5] LOUIS, P - La programmation constructive : une technique nouvelle - Thèse de 3ème cycle (Nancy). [6] MACHIN, P - Implémentation des instructions itératives en programmation constructive - Thèse de 3ème cycle (Nancy). [7] MARTIN, P - Description formelle de programme en programmation constructive - Thèse de 3ème cycle (Nancy). [8] MARTIN, P - MACHIN, P - LOUIS, P - DURAND, P et DUPONT, J - Eine neue technik Die construktive Programmierung - Proceedings of the constructive programming Conference (Nancy). [9] TANDINI, D - La notion de travail en informatique - Corsica Informatica - May 1974. [10] TOGOTO, J - Sur deux cas de gotomanie Thèse de Médecine de l'Université de Lomé. [11] PINK : Automatic Proving with the Floyd method - CACM June 1976 pp 250-256. [10] WASIPAS, M - PETEUX, et SEMOIQUEVLA, J - Pourquoi nous sommes les meilleurs ? Ou l'orgueilleux faux programmeur - Journée sur l'autosatisfaction organisée par l'ARIEL et l'Université de Paris 6.5.