Spesso si vedono affermazioni come "tutto il software non banale ha dei bug" o "tutte le astrazioni non banali hanno perdite". Ma cosa rende un programma "banale" anziché non banale? Dov'è la linea di demarcazione alla quale possiamo dire che un programma non è un bug banale e "scusa"?
Anche qualcosa di solo poche righe potrebbe avere bug. Supponiamo che tu abbia un semplice programma a riga di comando C che chiede "Qual è il tuo nome?", Legge una risposta usando scanf o gets, lo memorizza in un buffer e stampa "Hello" + nome. Quel programma potrebbe facilmente avere un buffer overflow se l'input è più grande di un buffer, quindi potrebbe avere un bug anche se si tratta solo di poche righe.
Ma se ti sei assicurato di aver sempre assegnato una memoria oblunda o dei limiti controllati, ecc., non hai il bug. Quindi il programma è "banale" o no? Può essere bacato o no, ma è piccolo e semplice. Possiamo dare un senso all'idea di un "programma banale" o è solo una scusa per la sciatteria?