Concept

Programmation spaghetti

En programmation informatique, la programmation spaghetti est un style d'écriture de code source qui favorise l'apparition du syndrome du plat de spaghettis : un code peu clair et qui fait un usage excessif de sauts inconditionnels (voir goto), d'exceptions en tous sens, de gestion des événements complexes et de threads divers. Ce style d'écriture de code est à bannir car il peut engendrer des problèmes graves, comme le montre par exemple le procès de l'affaire Toyota en 2013. En fait, la programmation spaghetti qualifie tout ce qui ne permet pas de déterminer le qui, le quoi et le comment d'une prise de contrôle par une portion de programme (incompréhension du flux de contrôle). Le code est donc plus long à mettre à jour car cela nécessite de remonter le fil des renvois. Cette notion s'applique aussi au niveau du flux de données, c'est-à-dire à tout ce qui ne permet pas de déterminer le qui, le quoi et le comment d’une modification de données. Cette situation est causée par un usage excessif de couplage fort. La programmation spaghetti est un exemple d'anti-patron. L'instruction goto, ou ses équivalents, est souvent responsable de la production de code spaghetti. Elle est d'ailleurs dépréciée dans les langages modernes pour cette raison. Elle est souvent utilisée dans les langages comme le BASIC ou l'assembleur (dans ce dernier cas, les branchements inconditionnels sont cependant inévitables). L'exemple suivant, qui affiche la liste des entiers compris entre 1 et 10 ainsi que leur carré, est un exemple de code spaghetti en BASIC : 10 i = 0 20 i = i + 1 30 IF i 11 THEN GOTO 80 40 IF i = 11 THEN GOTO 60 50 GOTO 20 60 PRINT "Programme terminé." 70 END 80 PRINT i & " au carré = " & i * i 90 GOTO 20 Le même résultat est obtenu par le programme suivant, plus respectueux des principes de la programmation structurée : 10 FOR i = 1 TO 10 20 PRINT i & " au carré = " & i * i 30 NEXT i 40 PRINT "Programme terminé." 50 END L'exemple suivant, en Fortran 77, calcule le nombre de solutions du problème des huit dames généralisé à un damier n×n.

À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
Cours associés (1)
ENG-209: Data science for engineers with Python
Ce cours est divisé en deux partie. La première partie présente le langage Python et les différences notables entre Python et C++ (utilisé dans le cours précédent ICC). La seconde partie est une intro
Séances de cours associées (30)
Conditions et boucles: les bases de la programmation
Couvre les bases de la programmation, y compris les types, les variables, les méthodes, les fonctions, les conditions, les boucles et la logique booléenne.
Programmation Python : boucles et fonctions
Introduit des boucles, des fonctions et du débogage dans la programmation Python, couvrant des concepts de base et des exemples pratiques.
Fonctions et listes: Compléments et manipulation
Explore les compléments des fonctions, l'ordre des paramètres et la manipulation des listes, y compris le comptage des événements et la résolution du « problème des 100 prisonniers ».
Afficher plus
Publications associées (32)

Automated Formal Verification of Software Network Functions

Solal Vincenzo Pirelli

Formally verifying the correctness of software is necessary to merit the trust people put in software systems. Currently, formal verification requires human effort to prove that a piece of code matches its specification and code changes to improve verifiab ...
EPFL2024

SpecROP: Speculative Exploitation of ROP Chains

Mathias Josef Payer, Atri Bhattacharyya, Andrés Sánchez Marín

Speculative execution attacks, such as Spectre, reuse code from the victim’s binary to access and leak secret information during speculative execution. Every variant of the attack requires very particular code sequences, necessitating elaborate gadget-sear ...
2020

Bound and Conquer: Improving Triangulation by Enforcing Consistency

Martin Vetterli, Adam James Scholefield, Alireza Ghasemi

We study the accuracy of triangulation in multi-camera systems with respect to the number of cameras. We show that, under certain conditions, the optimal achievable reconstruction error decays quadratically as more cameras are added to the system. Furtherm ...
2019
Afficher plus
Personnes associées (1)
Concepts associés (14)
Programmation orientée objet
La programmation orientée objet (POO), ou programmation par objet, est un paradigme de programmation informatique. Elle consiste en la définition et l'interaction de briques logicielles appelées objets ; un objet représente un concept, une idée ou toute entité du monde physique, comme une voiture, une personne ou encore une page d'un livre. Il possède une structure interne et un comportement, et il sait interagir avec ses pairs.
Structure de contrôle
En programmation informatique, une structure de contrôle est une instruction particulière d'un langage de programmation impératif pouvant dévier le flot de contrôle du programme la contenant lorsqu'elle est exécutée. Si, au plus bas niveau, l'éventail se limite généralement aux branchements et aux appels de sous-programme, les langages structurés offrent des constructions plus élaborées comme les alternatives (if, if–else, switch...), les boucles (while, do–while, for...) ou encore les appels de fonction.
Paradigme (programmation)
vignette|Schéma simple à 3 blocs, avec des connexions étiquetées Le paradigme de programmation est la façon (parmi d'autres) d'approcher la programmation informatique et de formuler les solutions aux problèmes et leur formalisation dans un langage de programmation approprié. Ce n'est pas de la méthodologie contenant une méthode ; cette dernière organise le traitement des problèmes reconnus dans l'écosystème concerné pour aboutir à la solution conceptuelle et programme exécutable.
Afficher plus

Graph Chatbot

Chattez avec Graph Search

Posez n’importe quelle question sur les cours, conférences, exercices, recherches, actualités, etc. de l’EPFL ou essayez les exemples de questions ci-dessous.

AVERTISSEMENT : Le chatbot Graph n'est pas programmé pour fournir des réponses explicites ou catégoriques à vos questions. Il transforme plutôt vos questions en demandes API qui sont distribuées aux différents services informatiques officiellement administrés par l'EPFL. Son but est uniquement de collecter et de recommander des références pertinentes à des contenus que vous pouvez explorer pour vous aider à répondre à vos questions.