প্রথমে, আমি ধরে নিয়েছি আপনি ইতিমধ্যে চার্চ-টিউরিং থিসিসের কথা শুনেছেন , যা বলে যে আমরা যাকে "গণনা" বলি তা এমন কিছু যা ট্যুরিং মেশিন (বা অন্য অনেক সমতুল্য মডেলের কোনওটি) দিয়ে করা যায়। সুতরাং একটি টিউরিং-সম্পূর্ণ ভাষা এমন একটি যাতে কোনও গণনা প্রকাশ করা যায়। বিপরীতভাবে, একটি টিউরিং-অসম্পূর্ণ ভাষা এমন এক যাতে এমন কয়েকটি গণনা রয়েছে যা প্রকাশ করা যায় না।
ঠিক আছে, এটি খুব তথ্যপূর্ণ ছিল না। আমাকে একটি উদাহরণ দিতে দাও। আপনি কোনও টুরিং-অসম্পূর্ণ ভাষায় একটি জিনিস করতে পারবেন না: আপনি কোনও টুরিং মেশিন সিমুলেটর লিখতে পারবেন না (অন্যথায় আপনি সিমুলেটেড টুরিং মেশিনে কোনও গণনা এনকোড করতে পারেন)।
ঠিক আছে, এখনও খুব তথ্যপূর্ণ ছিল না। আসল প্রশ্নটি হচ্ছে, কোন কার্যকর প্রোগ্রামটি টিউরিং-অসম্পূর্ণ ভাষায় লেখা যায় না? ঠিক আছে, কেউই "দরকারী প্রোগ্রাম" এর সংজ্ঞা নিয়ে আসেনি যার মধ্যে যে কোনও প্রোগ্রাম কোনও কাজের জন্য লিখেছেন এমন সমস্ত প্রোগ্রাম অন্তর্ভুক্ত রয়েছে এবং এতে সমস্ত ট্যুরিং মেশিনের গণনা অন্তর্ভুক্ত নেই। সুতরাং একটি টিউরিং-অসম্পূর্ণ ভাষা ডিজাইন করা যাতে আপনি সমস্ত দরকারী প্রোগ্রাম লিখতে পারেন এখনও একটি খুব দীর্ঘমেয়াদী গবেষণা লক্ষ্য।
এখন বেশ কয়েকটি বিভিন্ন ধরণের টিউরিং-অসম্পূর্ণ ভাষা রয়েছে এবং তারা যা করতে পারে না তার মধ্যে সেগুলি আলাদা। তবে একটি সাধারণ থিম রয়েছে: টিউরিং-সম্পূর্ণ ভাষাগুলি অবশ্যই শর্তসাপেক্ষে সমাপ্ত হতে পারে এমন একটি উপায় যা প্রোগ্রামের আকারের সাথে আবদ্ধ না হয় এবং কিছুটা মেমরি যা ইনপুটটির উপর নির্ভর করে ব্যবহার করার জন্য অন্তর্ভুক্ত থাকতে পারে । কংক্রিটের সাথে, বেশিরভাগ অপরিহার্য প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি যথাক্রমে লুপগুলি এবং গতিশীল মেমরির বরাদ্দের মাধ্যমে এই ক্ষমতাগুলি সরবরাহ করে। সর্বাধিক কার্যক্ষম প্রোগ্রামিং ভাষা পুনরাবৃত্তি এবং ডেটা স্ট্রাকচার নেস্টিংয়ের মাধ্যমে এই ক্ষমতাগুলি সরবরাহ করে।
ইদ্রিস দৃda়ভাবে আগদার দ্বারা অনুপ্রাণিত । আগদা উপমা প্রমাণের জন্য ডিজাইন করা একটি ভাষা । এখন প্রমাণিত হচ্ছে উপপাদ্য এবং চলমান প্রোগ্রামগুলি খুব ঘনিষ্ঠভাবে সম্পর্কিত , সুতরাং আপনি কোনও উপপাদ্য প্রমাণ করার মতোই আপনি আগডায় প্রোগ্রাম লিখতে পারেন। স্বজ্ঞাতভাবে, উপপাদকের প্রমাণ "এ ইম্প্লিস বি" এমন একটি ফাংশন যা তাত্ত্বিক এ এর প্রমাণকে আর্গুমেন্ট হিসাবে গ্রহণ করে এবং উপপাদ্য বিয়ের প্রমাণ ফেরত দেয় is
যেহেতু সিস্টেমের লক্ষ্য উপপাদাগুলি প্রমাণ করা, আপনি প্রোগ্রামারকে স্বেচ্ছাসেবী ফাংশন লিখতে দিতে পারবেন না। কল্পনা করুন যে ভাষা আপনাকে একটি নির্লিপ্ত পুনরাবৃত্ত ফাংশন লিখতে দিয়েছে যা কেবলমাত্র নিজেকে ডেকেছে:
oops : A -> B
oops x = oops x
আপনি এ জাতীয় ফাংশনটির অস্তিত্ব আপনাকে বোঝাতে দিতে পারবেন না যে এ-কে বি বোঝায়, অন্যথায় আপনি কিছু প্রমাণ করতে সক্ষম হবেন এবং কেবল সত্য উপপাদ্যই নয়! সুতরাং আগদা (এবং অনুরূপ উপপাদ্য প্রবাদগুলি) স্বেচ্ছাচারিত পুনরাবৃত্তি নিষেধ করে। আপনি যখন একটি পুনরাবৃত্ত ফাংশন লিখেন, আপনাকে অবশ্যই প্রমাণ করতে হবে যে এটি সর্বদা শেষ হয় , যাতে আপনি যখনই এটিকে উপপাদ্য এ এর প্রমাণ হিসাবে চালান আপনি জানেন যে এটি উপপাদ্য বিয়ের প্রমাণ তৈরি করবে know
আগদার তাত্ক্ষণিক ব্যবহারিক সীমাবদ্ধতা হ'ল আপনি স্বেচ্ছাচারিত পুনরাবৃত্তি ফাংশন লিখতে পারবেন না। যেহেতু সিস্টেমকে অবশ্যই সমস্ত নন-টার্মিনেটিং ফাংশনগুলি প্রত্যাখ্যান করতে সক্ষম হতে হবে, তাই থামানো সমস্যার অনস্বীকার্যতা (বা আরও সাধারণভাবে রাইসের উপপাদ্য ) নিশ্চিত করে যে সমাপ্ত ফাংশনগুলিও প্রত্যাখ্যানযোগ্য। একটি অতিরিক্ত যুক্তিযুক্ত অসুবিধা হ'ল আপনার ফাংশনটি সমাপ্ত হয় তা প্রমাণ করতে আপনাকে সিস্টেমকে সহায়তা করতে হবে।
প্রুফ সিস্টেমগুলিকে আরও প্রোগ্রামিং-ভাষা-তৈরির বিষয়ে তাদের গ্যারান্টি নিয়ে আপস না করে অনেকগুলি গবেষণা চলছে যে আপনার যদি A থেকে B পর্যন্ত কোনও ফাংশন থাকে তবে এটি গাণিতিক প্রমাণের মতোই ভাল good যে বি বোঝায় সিস্টেমটিকে আরও গ্রহণ করার জন্য প্রসারিত করা সমাপ্তি কার্যাদি গবেষণা বিষয়গুলির একটি। অন্যান্য বর্ধনের দিকনির্দেশগুলির মধ্যে ইনপুট / আউটপুট এবং সম্মতি হিসাবে যেমন "বাস্তব-বিশ্বের" উদ্বেগগুলির সাথে লড়াই করা অন্তর্ভুক্ত। আর একটি চ্যালেঞ্জ হ'ল এই সিস্টেমগুলিকে নিখুঁত প্রাণীদের কাছে অ্যাক্সেসযোগ্য করে তোলা (বা সম্ভবত নিছক নশ্বরকে বোঝাতে হবে যে তারা বাস্তবে অ্যাক্সেসযোগ্য)।
আমি ইদ্রিসের সাথে পরিচিত নই। আমি যেসব চ্যালেঞ্জগুলি উল্লেখ করেছি তা হ'ল এটি। যতদুর আমি একটি দ্রুত এক নজরে থেকে বুঝতে যেমন 2013 উদ্ভাবনের , ইদ্রিস হয় টুরিং-সম্পূর্ণ, কিন্তু একটি সম্পূর্ণতা পরীক্ষক অন্তর্ভুক্ত করা হয়েছে। সামগ্রিকতা যাচাইকারী যাচাই করে যে প্রতিটি ফাংশন মূলশব্দ দিয়ে total
টার্মিনেটে সমাপ্ত হয়। যে ভাষাগুলি কেবল ইদ্রিসের প্রোগ্রামগুলিতে থাকে সেখানে প্রতিটি ফাংশন মোট থাকে অর্ডার মত প্রকাশের ক্ষমতাতে একই রকম (টাইপ তত্ত্বের পার্থক্যের কারণে সম্ভবত কোনও সঠিক মিল নয়, তবে আপনি যথেষ্ট পরিমাণে ঘনিষ্ঠ হন যে আপনি যদি ইচ্ছাকৃতভাবে চেষ্টা না করেন তবে আপনি খেয়াল করবেন না)।
বিভিন্ন উপায়ে টিউরিং-সম্পূর্ণ নয় এমন ভাষার অন্যান্য উদাহরণগুলির জন্য দেখুন কোকের মতো টিউরিং-সম্পূর্ণ ভাষার ব্যবহারিক সীমাবদ্ধতাগুলি কী? (যা এই উত্তর থেকে নেওয়া একটি বৃহত প্রসারিত হয়)।