La programmazione potrebbe mai esistere senza il controllo degli errori? [chiuso]

-2

Penso che programmare la verifica degli errori sia estremamente importante, non un argomento secondario, e se il programma si blocca senza errori, semplicemente interrompendolo in modo silenzioso? Cosa succede se devi scoprire un SintaxError alla riga 1293 controllando manualmente tutte le linee? Un programma più lungo di 5-10 righe sarebbe possibile se il controllo degli errori non fosse mai stato inventato?

Per nessun errore di controllo intendo assolutamente zero feedback se qualcosa va storto: non un numero di riga, non un suggerimento, niente.

    
posta Caridorc 10.01.2015 - 14:51
fonte

3 risposte

3

Non sono sicuro del perché qualcuno abbia fatto downvoting; Penso che questa sia una domanda valida, anche se sembra assurda o la risposta è ovvia per tutti gli altri.

Se esiste una lingua con un compilatore che non ha segnalazioni di errori / sintassi, il programmatore può implementare la propria segnalazione degli errori con test di base e il loro programma deve soddisfare tali aspettative quando eseguono il programma di test; quando tutte le aspettative nel test sono soddisfatte, il programma non ha errori noti. Se una parte del test non riceve il valore atteso dal programma, il programmatore può sapere dove qualcosa è andato storto. Potrebbero non esserci segnalazioni di errori di per sé, ma ciò consentirebbe sicuramente la scrittura di applicazioni di grandi dimensioni con uno stupido compilatore o interprete. Questo, naturalmente, è presupposto che si tratti di linguaggi con un costrutto che consenta l'interazione con componenti specifici (funzioni / metodi / classi / moduli / librerie / ecc.). Anche senza questo, si potrebbe scrivere una routine di test che vada a una specifica riga di codice e testare qualsiasi valore venga restituito.

Oggi, quello che ho descritto è Behavior Driven Development (aka BDD).

Anche senza tali test, le persone hanno scritto applicazioni con enormi basi di codice senza molti utili feedback. A seconda della forma del linguaggio di assemblaggio in cui si scrive, è possibile che non si ottengano feedback ad eccezione di comportamenti imprevisti. Molti compilatori C non hanno molti feedback utili; non come quello delle lingue moderne interpretate. Chris Sawyer ha scritto l'originale Roller Coaster Tycoon per lo più in assemblaggio e alcuni C, che era decisamente più grande di 10 linee e sono disposto a scommettere che gran parte del suo sviluppo si basava sul vedere se stava ottenendo o meno il comportamento atteso dal suo codice .

EDIT: Meglio ancora, è successo che ho avuto un'esperienza circa 5 giorni fa, in cui ho scritto 126 righe di codice Python e ha funzionato la prima volta che l'ho eseguito. Ciò non accade troppo spesso, ma dimostra che anche un programmatore mediocre come me può scrivere più di 10 righe di codice utile senza controllo degli errori. Ci vuole solo un sacco di pensiero e pianificazione.

Non dimentichiamo inoltre che prima delle tastiere QWERTY e dei moderni file system, le persone scrivevano programmi e persino semplici giochi perforando i buchi nelle carte e i programmi erano memorizzati su grandi pile di schede perforate che erano state inserite in un gigantesco computer; il programma funzionava o no, ed era semplicemente non pratico affidarsi al feedback del computer. Anche l'utilizzo di un computer era un privilegio per la maggior parte, poiché non tutti ne avevano la proprietà o l'accesso a uno su base regolare. L'equivalente di 10+ linee di codice funzionante è stato scritto in questo modo.

    
risposta data 10.01.2015 - 20:46
fonte
2

La programmazione viene spesso eseguita senza alcun controllo degli errori, anche adesso. È solo considerato sciatto e dovrebbe essere fatto solo per prototipi veloci ( o code golf ) che è probabile che buttino via o riscrivi più tardi. I linguaggi di scripting tendono ad essere buoni in questo senso, in parte perché gestiscono gli errori abbastanza bene, indipendentemente dal fatto che tu scriva da solo un codice di gestione degli errori.

Se intendi "potremmo essere dove siamo senza che nessun software faccia mai controlli di errore?", la risposta è no, a meno che qualcuno non abbia inventato un computer con memoria infinita e difetti hardware, insieme a una rete con 100% di uptime per tutti per sempre, e così via.

Se stai pensando ad una convenzione specifica come controllare i codici di errore restituiti da una chiamata di funzione, lanciare e catturare eccezioni, o passare in callback di successo e fallimento, allora sì avremmo potuto usare tecniche diverse.

C'è anche il problema filosofico (come sottolineato da delnan) che non si può sempre tracciare una linea sottile tra "codice di controllo degli errori" e "codice reale". Se sto scrivendo una funzione sqrt (), controllare che l'input sia positivo è sicuramente un controllo degli errori. Ma se sto scrivendo un modulo HTML con un po 'di Javascript che sillabica automaticamente i numeri di telefono indipendentemente da come l'utente li ha immessi, è considerato "gestione degli errori" o "logica di presentazione"?

    
risposta data 10.01.2015 - 16:21
fonte
1

Naturalmente.

L'unico modo in cui hai errori di sintassi è se hai sintassi . Per avere la sintassi, devi avere una lingua. Per usare una lingua, hai bisogno di un compilatore. Come minimo, il primo compilatore era un programma scritto dove non c'erano messaggi di errore piacevoli quando le cose andavano a sud.

    
risposta data 10.01.2015 - 15:04
fonte

Leggi altre domande sui tag