একটি প্রোগ্রাম কি সমাপ্ত করার প্রয়োজন? অন্য কথায় এমন একটি প্রোগ্রাম যা প্রযুক্তিগতভাবে অনির্ধারিত আচরণ চিরতরে চলে? নোট করুন এটি খালি লুপগুলি সম্পর্কে নয়। "স্টাফ" (যেমন পর্যবেক্ষণযোগ্য আচরণ) চিরকালের জন্য প্রোগ্রামগুলির বিষয়ে কথা বলা।
যেমন এরকম কিছু:
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
}
}
}
এটি আরও একাডেমিক প্রশ্ন, কারণ যথাক্রমে সমস্ত বুদ্ধিমান সংকলক উপরের ধরণের প্রোগ্রামের জন্য প্রত্যাশিত কোড উত্পন্ন করবে (অবশ্যই ধরে নিবেন যে ইউবির অন্য কোনও উত্স নয়)। এবং হ্যাঁ, অবশ্যই অনেকগুলি প্রোগ্রাম রয়েছে যা কখনই শেষ হয় না (ওএস, এম্বেড করা সার্ভার)। তবে মানটি মাঝে মাঝে উদ্বিগ্ন হয়, এভাবেই প্রশ্ন।
স্পর্শকাতর: "অ্যালগরিদম" এর অনেকগুলি (কিছু?) সংজ্ঞাগুলির প্রয়োজন একটি অ্যালগরিদমকে অবসান করতে হবে , অর্থাৎ এমন ক্রিয়াকলাপ যা কখনও শেষ হয় না একটি অ্যালগরিদম হিসাবে বিবেচিত হয় না।
স্পর্শিনী। থামার সমস্যাটি বলে যে একটি ইনপুট জন্য একটি স্বেচ্ছাসেবী প্রোগ্রাম শেষ হয় কিনা তা নির্ধারণ করার জন্য একটি অ্যালগরিদম থাকতে পারে না। তবে এই নির্দিষ্ট প্রোগ্রামের জন্য যেহেতু কোনও শাখা নেই যা মূল থেকে বেরিয়ে আসে, তাই সংকলক সহজেই নির্ধারণ করতে পারে যে প্রোগ্রামটি কখনই শেষ হবে না। প্রশ্নটি ভাষা-আইনজীবী হিসাবে এটি অবশ্য অপ্রাসঙ্গিক।