Apakah program wajib diberhentikan? Dengan kata lain, apakah ada program yang berjalan selamanya, perilaku yang secara teknis tidak terdefinisi? Perhatikan ini bukan tentang loop kosong. Berbicara tentang program yang melakukan "hal-hal" (yaitu perilaku yang dapat diamati) selamanya.
Misalnya sesuatu seperti ini:
int main()
{
while (true)
{
try
{
get_input(); // calls IO
process();
put_output(); // calls IO, has observable behavior
// never break, exit, terminate, etc
} catch(...)
{
// ignore all exceptions
// don't (re)throw
// never go out of loop
}
}
}
Ini lebih merupakan pertanyaan akademis, karena secara empiris semua penyusun waras akan menghasilkan kode yang diharapkan untuk jenis program di atas (dengan asumsi tentu saja tidak ada sumber lain dari UB). Dan ya, tentu saja ada banyak program yang tidak pernah berakhir (os, embeded, server). Namun standar kadang-kadang unik, jadi pertanyaannya.
Tangensial: banyak (beberapa?) Definisi "algoritma" mensyaratkan algoritma harus diakhiri , yaitu serangkaian operasi yang tidak pernah berakhir tidak dianggap sebagai algoritma.
Tangensial. Masalah penghentian menyatakan bahwa tidak ada algoritma untuk menentukan apakah program arbitrer selesai untuk input. Namun untuk program khusus ini karena tidak ada cabang yang mengarah keluar dari utama, kompiler dapat dengan mudah menentukan program tidak akan pernah berakhir. Namun ini tidak relevan karena pertanyaannya adalah pengacara bahasa.