কম্পিউটার প্রোগ্রামগুলির ক্রমবর্ধমান জটিলতা এবং ক্রমবর্ধমান গুরুত্বপূর্ণ অবস্থানের কম্পিউটারগুলি আমাদের সমাজে আমাকে ভাবতে থাকে যে আমরা এখনও কেন সম্মিলিতভাবে প্রোগ্রামিং ভাষাগুলি ব্যবহার করি না যেখানে আপনার কোডটি সঠিকভাবে কাজ করে সে সম্পর্কে আপনাকে একটি প্রথাগত প্রমাণ দিতে হবে।
আমি বিশ্বাস করি যে শব্দটি একটি 'শংসাপত্র সংকলক' (আমি এটি এখানে পেয়েছি ): একটি প্রোগ্রামিং ভাষার সংকলনকারী একটি সংকলক যাতে কেবল কোডটি লিখতে হয় তা নয়, কোডের বিশদ বিবরণও উল্লেখ করে এবং প্রমাণ করে যে কোডটি মেনে চলেন স্পেসিফিকেশন (বা এটি করার জন্য একটি স্বয়ংক্রিয় প্রবাদ ব্যবহার করুন)।
ইন্টারনেট অনুসন্ধান করার সময়, আমি কেবলমাত্র এমন প্রকল্পগুলি পেয়েছি যা হয় হয় খুব সাধারণ প্রোগ্রামিং ভাষা ব্যবহার করে বা ব্যর্থ প্রকল্পগুলি যা আধুনিক প্রোগ্রামিং ভাষাগুলি মানিয়ে নেওয়ার চেষ্টা করে। এটি আমাকে আমার প্রশ্নের দিকে নিয়ে যায়:
একটি পূর্ণ-বর্ধিত প্রোগ্রামিং ভাষা প্রয়োগকারী কোনও শংসাপত্র সংকলক আছে, বা এটি খুব কঠোর / তাত্ত্বিকভাবে অসম্ভব?
অধিকন্তু, আমি এখনও প্রবিদ্ধ প্রোগ্রামগুলির সাথে জড়িত কোনও জটিলতা ক্লাস দেখতে পেয়েছি, যেমন 'টুরিং মেশিন দ্বারা সমস্ত ভাষার শ্রেণি নির্ধারণযোগ্য, যার পক্ষে প্রমাণ রয়েছে যে এই টুরিং মেশিনটি বন্ধ রয়েছে', যাকে আমি বলেছি ঠ ই আর একটি অ্যানালগ হিসাবে, , রিকার্সিভ ভাষার সেট।
আমি যেমন একটি জটিলতা বর্গ অধ্যয়নরত সুবিধার দেখতে পারেন: উদাহরণস্বরূপ, জন্য স্থগিত সমস্যা নির্ধার্য আছে (আমি এমনকি অনুমান সুস্পষ্ট ভাবে সংজ্ঞায়িত হবে ভাষার বৃহত্তম শ্রেণি যার জন্য এটি নির্ধারণযোগ্য)। তদতিরিক্ত, আমি সন্দেহ করি যে আমরা কোনও ব্যবহারিকভাবে কার্যকর প্রোগ্রামগুলি বাতিল করব: আপনি যখন কোনও প্রোগ্রামের সমাপ্তি প্রমাণ করতে না পারেন তখন কে ব্যবহার করবে?
সুতরাং আমার দ্বিতীয় প্রশ্নটি হ'ল:
জটিলতার ক্লাসগুলি সম্পর্কে আমরা কী জানি যেগুলির নির্দিষ্ট ভাষা থাকতে পারে যার জন্য তাদের ভাষা রয়েছে?