La mia risposta sarà dalla prospettiva del mondo reale e dalle sfide che ogni team di sviluppo deve affrontare. Quello che vedo in questa domanda e molte risposte riguarda davvero il controllo dei difetti.
Il codice può essere privo di bug. Prendi uno qualsiasi degli esempi di codice "Hello World" per qualsiasi linguaggio di programmazione ed eseguilo sulla piattaforma in cui è previsto e funzionerà in modo coerente e produrrà i risultati desiderati. Termina qualsiasi teoria sull'impossibilità che il codice sia privo di bug.
I potenziali bug arrivano quando la logica diventa più complessa. Il semplice esempio di Hello World non ha logica e fa sempre la stessa cosa statica. Non appena si aggiunge un comportamento dinamico basato sulla logica è ciò che introduce la complessità che porta ai bug. La logica stessa può essere difettosa oppure i dati immessi nella logica possono variare in un modo che la logica non gestisce.
Un'applicazione moderna dipende anche da librerie di runtime, CLR, middleware, database, ecc. Che, pur risparmiando tempo di sviluppo complessivo, sono anche livelli in cui possono esistere bug all'interno di tali livelli che non vengono rilevati attraverso lo sviluppo e il test UAT e nella produzione.
Infine, la catena di app / sistemi in cui l'applicazione consuma i dati che alimentano la sua logica sono tutte le fonti di potenziali bug o all'interno della loro logica, o all'interno del software impila i percorsi logici in cima o i sistemi a monte che consuma i dati.
Gli sviluppatori non hanno il controllo al 100% di ogni elemento mobile che supporta la logica della loro applicazione. In realtà, non abbiamo molto controllo. Questo è il motivo per cui i test unitari sono importanti e la configurazione e la gestione delle modifiche sono processi importanti che non dobbiamo ignorare o essere pigri / sciatti.
Inoltre, gli accordi documentati tra l'applicazione che consuma i dati da una fonte al di fuori del proprio controllo, che definisce il formato e le specifiche specifici per i dati trasferiti, nonché qualsiasi limite o vincolo che il sistema presume sia responsabile del sistema di origine per garantire che l'output sia all'interno quei limiti.
Nell'applicazione del mondo reale dell'ingegneria del software non sarai in grado di farlo volare spiegando al business perché teoricamente le applicazioni non possono essere prive di bug. Discussioni di questa natura tra tecnologia e impresa non accadranno mai se non a seguito di un malfunzionamento tecnologico che ha influito sulla capacità dell'azienda di fare soldi, impedire di perdere denaro e / o mantenere in vita le persone. La risposta a "come può accadere" non può essere "lasciami spiegare questa teoria in modo che tu capisca".
In termini di calcoli enormi che teoricamente potrebbero richiedere un'eternità per eseguire il calcolo e ottenere un risultato, un'applicazione che non può finire e restituire con un risultato - questo è un bug. Se la natura del calcolo è tale da richiedere molto tempo e un'elaborazione intensiva, prendi quella richiesta e fornisci feedback all'utente come / quando possono recuperare il risultato e dare il via ai thread paralleli per sfornare. Se ciò deve avvenire più rapidamente di quanto si possa fare su un server ed è abbastanza importante per le aziende, lo si ridimensiona su tutti i sistemi necessari. Questo è il motivo per cui il cloud è molto interessante e la capacità di far girare i nodi per iniziare a lavorare e rigirarli al termine.
Se esiste la possibilità di ottenere una richiesta che nessuna quantità di potenza di calcolo può completare, non dovrebbe rimanere in esecuzione all'infinito con un processo aziendale in attesa della risposta a ciò che l'azienda ritiene sia un problema finito.
print "Hello, World!"
... puoi essere un po 'più chiaro?