Che cosa significa "banale"? [duplicare]

0

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?

    
posta ojf 13.06.2014 - 22:35
fonte

2 risposte

5

"Trivial" si riferisce in genere a un'implementazione che dimostra la funzionalità pertinente e non più, sebbene non ci sia una regola hard-and-fast.

Negli esempi che elenchete, la parola viene usata per mettere a confronto contro controesempi costruiti appositamente. Ad esempio, "tutte le astrazioni non banali sono fughe" significa qualcosa come "tutte le astrazioni perdono, tranne quelle che si escogitano specificamente per smentire questa affermazione". Se lo scopo della tua astrazione è quello di illustrare un'astrazione, l'autore probabilmente lo considererebbe banale.

Un'altra interpretazione implica che esiste una certa soglia di complessità al di sotto della quale l'assioma non si applica. In questo senso, "tutte le astrazioni non banali sono fughe" significa che tutte le astrazioni non-leaky sono definite banali da questo assioma. Questo è l'argomento "no Scotsman vero ..." riapplicato.

    
risposta data 13.06.2014 - 22:50
fonte
0

È una domanda piuttosto aperta.

Trivial potrebbe essere un software in cui la quantità di tempo necessaria per risolvere il problema costerebbe più di qualsiasi tipo di soluzione alternativa. Un altro esempio potrebbe essere una piccola utility che ha uno dei bug che hai citato, ma dal momento che è facilmente sostituibile da un'altra utility che fa la stessa cosa, viene ignorata.

Lavoro su sistemi 911, quindi lavoro con un sacco di software non banale. Tuttavia, abbiamo alcune utility di gestione che sono state scritte 10-15 anni fa, che consideriamo insignificanti dal momento che non vi è alcun reale vantaggio commerciale nell'aggiornarle. Anche gli errori occasionali che vengono fuori vengono spesso ignorati poiché possiamo andare direttamente al database e risolvere il problema. Siamo un piccolo negozio, quindi, YMMV.

    
risposta data 13.06.2014 - 22:51
fonte

Leggi altre domande sui tag