স্পেসিফিকেশন থেকে কম্পিউটার প্রোগ্রাম লেখার জন্য কি আসলেই কেউ এমন একটি সিস্টেম তৈরি করেছেন?


17

কেউ কি আসলেই এমন কোনও সিস্টেম লিখেছেন (সফ্টওয়্যার বা কাগজের উপর সাধারণ উদাহরণ সহ সহজ ব্যাখ্যা) যা কম্পিউটার প্রোগ্রাম তৈরি করে? আমি ইনপুট করে এবং এটি এমন একটি প্রোগ্রাম তৈরি করে যা চেয়ে কম সংখ্যক প্রাথমিক সংখ্যা তালিকাভুক্ত করে কেবলমাত্র 1 <x \ ওয়েজ- হিসাবে উপস্থিত নয় \ উপস্থিত A as হিসাবে সংজ্ঞায়িত হয় ; st 1 <A \ ওয়েজ এ <x \ ওয়েজ x = A can বার বি, \ এমবক্স {সহ \ এ, বি \ ইন th ম্যাথবিবি {এন} অধ্যাপকরা বলছেন তারা পারছেন তবে কেউ প্রকৃত সম্পূর্ণ উদাহরণ দেয় না।পি আর আই এম ( এক্স ) 1 < এক্স Prime(x)x<10Prime(x)

1<xAs.t.1<AA<xx=A×B, with A,BN

13
আপনি যেমন বোঝাতে চেয়েছেন, আপনি কি জানেন যে কোনও সাধারণ উদ্দেশ্য প্রোগ্রামিং ভাষার জন্য একটি সংকলক?
সাশো নিকোলভ

1
হাই - সিস্টেরিতে আপনাকে স্বাগতম! দুর্ভাগ্যক্রমে আপনার প্রশ্নটি তাত্ত্বিক কম্পিউটার বিজ্ঞানের গবেষণা স্তরের প্রশ্ন নয় এবং এই সাইটে এটি অফ-টপিক।

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

2
আপনার প্রশ্নের সাথে সম্পর্কিত একটি বই এখানে । অন্যরাও আছেন। এটি বোঝা সহজ নয় । কক এবং ইসাবেল (এরকম আরও একটি সিস্টেম) জনতার মধ্যে এসই ব্যবহারকারীরা অন্তর্ভুক্ত রয়েছে যারা প্রশ্নটি বন্ধ না করা হলে আপনাকে আরও তথ্য এবং উদাহরণ দিতে পারে। আমি এটি ওয়েবে অনুসন্ধান করে খুঁজে পেয়েছি: কোক উদাহরণ প্রোগ্রাম সংশ্লেষণ।
বাবু

2
কম্পিউটার বিজ্ঞানের যে অঞ্চলটি আমি আপনাকে যা জিজ্ঞাসা করছি তা ক্যাপচার করে একে প্রোগ্রাম সংশ্লেষ বলা হয় এবং এটি গবেষণার একটি সক্রিয় ক্ষেত্র।
হক বনেট

উত্তর:


11

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

এটি যুক্তিযুক্ত ফলাফলের সাথে দৃ .়ভাবে সম্পর্কিত, যাকে বলা হয় কারি-হাওয়ার্ড চিঠিপত্র (বা আইসোমরফিজম), যা দেখায় যে কম্পিউটার প্রোগ্রাম এবং গাণিতিক প্রমাণগুলি খুব মিল।

সুতরাং ধারণাটি হল যে সিস্টেমটি আপনার প্রোগ্রামের স্পেসিফিকেশনটিকে প্রপঞ্চ হিসাবে প্রমাণিত করবে take আপনার উদাহরণের ক্ষেত্রে এটি কিছুটা হবে (অনানুষ্ঠানিকভাবে): "এখানে 10 এর চেয়ে কম সংখ্যক মৌলিক সংখ্যার একটি সেট রয়েছে"।

তারপরে, আপনি প্রমানটি প্রমাণ করার চেষ্টা করবেন এবং বিদ্যমান সিস্টেমগুলি আপনাকে প্রমাণটি সম্পাদন করতে, কিছু অংশ স্বয়ংক্রিয়ভাবে সম্পন্ন করতে, সম্ভবত পুরো প্রমাণটি তৈরি করতে এবং আপনি কখনও ত্রুটি করবেন না তা নিশ্চিত করতে সহায়তা করবে।

সেই প্রমাণ থেকে একজন তখন একটি প্রোগ্রাম বের করতে পারে যা প্রাথমিকভাবে সুনির্দিষ্টভাবে উল্লেখ করা প্রধান সংখ্যাগুলির তালিকাটি গণনা করে।

এই ধারণাগুলি ব্যাখ্যা করার জন্য অতীতে বেশ কয়েকটি সিস্টেম তৈরি করা হয়েছিল। ভাল পরিচিত এক ছিল LCF দ্বারা রবিন মিলনার , যিনি ভাষা নির্মিত এমএল যে উদ্দেশ্যে। বর্তমানে সর্বাধিক উন্নত সিস্টেমগুলির মধ্যে একটি হ'ল কাক

সম্পূর্ণরূপে কাজ করা উদাহরণ রয়েছে যার মধ্যে কয়েকটি বেশ জটিল। আপনি নিম্নলিখিত নিবন্ধে কিছু খুঁজে পেতে পারেন , যদিও এটি কোনওভাবেই সহজ পাঠ নয় এবং লজিকের উন্নত জ্ঞানের প্রয়োজন।


9

ওয়াগের উত্তর: হ্যাঁ, তবে লেখার সময়, বেশিরভাগ অনানুষ্ঠানিক প্রোগ্রামগুলির জন্য স্পেসিফিকেশনগুলিকে লেখা এবং ডিবাগ করা ঠিক ততটাই কঠিন বলে মনে হয় যেগুলি প্রোগ্রামগুলি হবে।

আরও গুরুতরভাবে, বাবুর উত্তর ভাল তবে আমি নির্ভরশীল প্রকারের ক্ষেত্রগুলি পরীক্ষা করার পরামর্শও দিচ্ছি। আছে বরং একটি ভাল Coq ব্যবহার বই (সম্পূর্ণ দাবি পরিত্যাগ: আমার এক বন্ধু দ্বারা লিখিত), কিন্তু এর রয়েছে এপিগ্র্যাম, Agda এবং ইদ্রিস। ইসাবেল / এইচএলও চেক আউট মূল্যবান।

এগুলি সমস্ত নির্মাণের ক্যালকুলাসের উপর ভিত্তি করে। আপনি যদি তাত্ত্বিক ভিত্তি জানতে চান তবে মার্টিন-লফ টাইপ তত্ত্বটি দেখুন। চারপাশে কিছু দুর্দান্ত ভূমিকা রয়েছে।


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

4

এখানে একটি স্পর্শকাতর বন্ধ হয়ে যাওয়া, প্রোগ্রাম জেনারেটর (অর্থাত্ সিস্টেমগুলি যে কোনও বিশেষ ভাষায় কোনও কিছুর উচ্চ স্তরের বর্ণনা দেয়) চিরকাল ছিল। যে কোনও সংকলক অনেকগুলি পার্সার জেনারেটরের মধ্যে যেমন একটি is "তৃতীয় প্রজন্মের ভাষাগুলি" নামক সিস্টেমগুলির মধ্যে, যা একটি উচ্চ-স্তরের বিবরণ এবং উপলভ্য ডেটার একটি ক্যাটালগ প্রদত্ত একটি সাধারণ ব্যবসায়ের অ্যাপ্লিকেশনটির কোড (বেশিরভাগ) কোড উত্পন্ন করে।


1

লজিক প্রোগ্রামিং এবং আরও সাধারণভাবে, ডিক্লারেটিভ প্রোগ্রামিং আপনার প্রস্তাবের ঠিক একটি ভিত্তি হিসাবে গ্রহণ করে: যথা, একটি লজিকাল স্পেসিফিকেশন থেকে, সেই স্পেসিফিকেশনটি পূরণ করে একটি ফল ফিরে আসে।

একটি ক্ষেত্র যা বিশেষত "10 এর চেয়ে কম প্রাইমস" উদাহরণকে সম্বোধন করে বলে মনে হচ্ছে কনস্ট্রেন্ট প্রোগ্রামিং যা আপনি যেমন দিয়েছেন তার পূর্ণসংখ্যার সীমাবদ্ধতা সহ নির্দিষ্ট প্রতিবন্ধকতাগুলির সাথে জড়িত সমস্যার সমাধানের চেষ্টা করে।

আপনি এই জাতীয় সিস্টেমের নির্দিষ্ট (ওপেন সোর্স) প্রয়োগের জন্য ECLiPSe চেষ্টা করতে চাইতে পারেন ।


এটা কি সঠিক হবে যে যুক্তি / সীমাবদ্ধতার দৃষ্টান্তটি প্রোগ্রাম নির্দিষ্ট করার চেয়ে উত্তর নির্দিষ্ট করার চেয়ে বেশি। অবশ্যই, আপনি বলতে পারেন যে একটি অসম্পূর্ণ স্পেসিফিকেশন একটি প্রোগ্রাম। তবে একরকম, আমি নিশ্চিত নই যে এটি প্রোগ্রাম সংশ্লেষণের মতো একই খেলা। এটি উদাহরণস্বরূপ উত্তর দেয় যদিও এটি সত্য, কারণ উদাহরণটি খুব সাধারণ ছিল। আমি বলতে চাইছি না যে বাধা প্রোগ্রামিং কেবল সাধারণ সমস্যার জন্য problems
বাবু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.