si può verificare un errore logico molto più tardi della sua causa? [chiuso]

0

Per un confronto, per un errore irreversibile del runtime, spesso la causa dell'errore è molto prima che l'errore si arresti in modo anomalo a un programma.

Per un errore logico, non si blocca un programma. Succede quando lo stato dell'esecuzione del programma non è quello che ci aspettiamo per la prima volta. La causa di un errore logico in un programma, penso, proprio come la causa di un errore irreversibile del runtime, è dove si effettua la correzione e il programma non avrà l'errore logico. Mi chiedo se la causa di un errore logico debba essere dove si verifica l'errore, o può essere molto prima di quello?

Grazie.

    
posta Tim 12.09.2014 - 04:14
fonte

2 risposte

2

Credo che il tuo problema sia più linguistico - il termine "errore logico" è molto vago, e il termine "tempo in cui accade" può significare cose diverse per persone diverse.

Diciamo che scrivi un semplice programma di calcolatrice. Ti permetterà di inserire qualcosa come "1 + 2" dalla tastiera, calcolare e visualizzare il risultato. Ora inserisci "1 + 2" e visualizza non il valore previsto 3, ma 4. Quindi esattamente "quando" si verifica questo errore logico? Dal punto di vista degli utenti, accade proprio quando vede il risultato sbagliato.

Ma la causa può essere ovunque - i dati di input possono essere analizzati in modo errato, il calcolo potrebbe essere andato storto, o il display sullo schermo ha avuto un bug. Quindi dal punto di vista dell'utente, la causa dell'errore è da qualche parte "prima che accada". Tuttavia, dal punto di vista degli sviluppatori, chi usa un debugger esegue il single-stepping del programma, lo "stato di esecuzione del programma" è errato immediatamente nel momento in cui il parser di input fornisce un risultato errato o il calcolo restituisce un errore risultato, o il codice che porta il risultato sul display fa qualcosa di sbagliato. Quindi da questa prospettiva, la causa dell'errore logico è esattamente dove lo stato interno del programma si discosta dal valore atteso.

    
risposta data 12.09.2014 - 09:53
fonte
1

Queste sono la stessa cosa Un errore irreversibile di runtime è (escludendo programmatori maligni e raggi cosmici) sempre il risultato di un errore logico - da qualche parte, il programma ha assunto qualcosa che non era vero e quindi quando si tenta di fare simething basato sulla premessa sbagliata, provoca un errore fatale .

L'assunzione e le sue conseguenze possono ovviamente essere ampiamente separate sia nel tempo che nel flusso.

    
risposta data 12.09.2014 - 04:28
fonte

Leggi altre domande sui tag