La teoria della programmazione della pasta ha a che fare con la complessità delle varie strutture di programmazione. Proprio come la pasta è disponibile in molte dimensioni e forme diverse, lo stesso vale per il codice di programmazione. Con una teoria della pasta, un particolare tipo di pasta viene utilizzato come illustrazione colorata per identificare alcuni aspetti associati a un particolare insieme di protocolli di programmazione.
Un eccellente esempio di una teoria della programmazione della pasta è il codice spaghetti. Gli spaghetti cotti vengono spesso serviti come una raccolta di fili che si incrociano e si intrecciano tra loro. È praticamente impossibile estrarre un filo di spaghetti senza causare un certo grado di disturbo agli altri fili.
Con questo tipo di teoria della pasta, si comprende che lo sforzo di programmazione è in qualche modo casuale e caotico. C’è poca o nessuna struttura reale nel codice di programmazione. Il risultato finale è che il tentativo di modificare il codice associato a una parte della sequenza crea spesso problemi imprevisti con un’altra parte del codice. Di conseguenza, un codice spaghetti è estremamente difficile da comprendere in termini di progressione logica e altrettanto difficile da modificare senza creare nuovi problemi.
Al contrario, la teoria della programmazione della pasta può anche riferirsi a una programmazione altamente strutturata. Un esempio di questo tipo di teoria è noto come il codice delle lasagne. Le lasagne sono un piatto di pasta a strati, con ingredienti posizionati deliberatamente e coerentemente tra gli strati di lasagne. Il risultato finale è un piatto di pasta omogeneo e facilmente scomponibile in componenti identificabili.
Quando la teoria della pasta o la programmazione usa il termine codice lasagne per riferirsi a uno sforzo di programmazione, sta mettendo in luce la logica e l’ordine che sembrano governare l’intera struttura del codice coinvolto. È possibile modificare sezioni del codice senza creare una reazione imprevista in qualche punto successivo dell’elaborazione del codice. La progressione logica e il sequenziamento sono i tratti distintivi di un codice lasagne, rendendolo un opposto del più caotico codice spaghetti.
Il concetto della teoria della programmazione della pasta è tipicamente attribuito a Raymond Rubey. In una lettera che scrisse a una rivista di settore nel 1992, Rubey utilizzò la terminologia relativa a ravioli e spaghetti per riferirsi a strategie e situazioni di programmazione. L’idea generale di una teoria della programmazione della pasta prese piede e presto vari metodi di programmazione iniziarono ad essere etichettati da molti programmatori che utilizzavano vari tipi di pasta. In alcuni casi, la selezione dei nomi di pasta indicava attributi benefici di un determinato approccio al codice di programmazione, mentre altri facevano riferimento a metodi di programmazione considerati meno efficienti e strutturati