নিজস্ব উত্স কোড সম্পর্কে প্রোগ্রামের যুক্তি


15

এই প্রশ্নের অনুপ্রেরণা নিম্নলিখিত (অস্পষ্ট) প্রশ্ন: একটি এআই থাকার জন্য প্রোগ্রামিং ভাষা / যৌক্তিক ভিত্তি কী যা এটির নিজস্ব উত্স কোড সম্পর্কে যুক্তিযুক্ত হতে পারে এবং এটি সংশোধন করতে পারে?

এটি মোটেই কঠোর নয়, সুতরাং এটি থেকে একটি কংক্রিট প্রশ্ন বের করার চেষ্টা আমার এখানে। আমি আগ্রহী দুটি জিনিস:

(ক) একটি প্রোগ্রামিং ভাষা পি যা ডেটাটাইপ প্রোগ্রাম হিসাবে নিজস্ব প্রোগ্রামগুলিকে প্রতিনিধিত্ব ও পরিচালনা করতে পারে (যেমন, এটিএসটি হিসাবে)। (যদি ইচ্ছা হয় তবে টাইপ প্রোগ্রামের কোনও উপাদান স্ট্রিংয়ে রূপান্তরিত হতে পারে, যা সেই ভাষায় একটি বৈধ প্রোগ্রামের পাঠ্য This এটি একটি সংকলক যা করবে তার বিপরীত হবে))

(খ) পি ভাষায় একটি প্রোগ্রাম কী করে সে সম্পর্কে যুক্তিযুক্ত একটি পদ্ধতি। এখানে আমি দুটি স্তরের বিষয়ে এটি ভাবছি:

  1. অন্য একটি ভাষা কিউ (উপপাদ্য প্রমাণ করার ক্ষমতা সহ) যা পি-প্রোগ্রাম কী করে তা মডেল করে। "প্রোগ্রাম পি চালানোর ফলাফল ফুও" এর মত বিবৃতি প্রকাশ এবং প্রমাণ করতে সক্ষম হওয়া উচিত।
  2. একটি প্রোগ্রাম p সম্পর্কে বিতর্ক করার একটি উপায় p: প্রোগ্রামটি নিজেই P ভাষায় করে। (সুতরাং আমরা উপরে পি = কিউ নিচ্ছি।)

এই জাতীয় কিছুটি কোন ডিগ্রিতে প্রয়োগ করা হয়েছে, বা এই দিকে অগ্রগতি কী? ব্যবহারিক বাধা কি? প্রশ্নের মূল অভিপ্রায়ের আলোকে, সমস্যাটিকে আনুষ্ঠানিক করার সর্বোত্তম উপায় কী?

*

যেমন উত্তরগুলি দেখায় (ধন্যবাদ!), (ক) এবং (বি 1) উভয়ই পৃথকভাবে করা যেতে পারে, যদিও মনে হয় এগুলি একসাথে করা একটি গবেষণামূলক প্রশ্নই বেশি।

এই প্রশ্নে আমার প্রথম কিছু চিন্তা ছিল (সতর্কতা: বরং অস্পষ্ট)। মার্টিন বার্গারের উত্তরে আমার মন্তব্যগুলিও দেখুন।

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

এটি একটি বৃহত প্রকল্প হিসাবে মনে হচ্ছে - সহজ ভাষা, এর মধ্যে সমস্ত কিছু প্রকাশ করা শক্ত; ভাষা যত জটিল, তত বেশি কাজ করতে হবে ভাষার মডেল করার জন্য।

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


1
"প্রোগ্রাম পি চলমানের ফলাফলটি ফু" তা প্রতিষ্ঠিত করার জন্য আপনার কেন তাত্ত্বিক প্রবাদ হিসাবে কাজ করার ভাষা প্রয়োজন? ভাষাটি কেবল পি চালাতে পারত! আসলে, কি ঘটছে।
মার্টিন বার্গার


3
মনে রাখবেন যে নীতিগতভাবে সমস্ত ভাষা যা নিজের জন্য দোভাষীকে বাস্তবায়ন করতে পারে সেগুলি আপনার প্রয়োজনীয় জিনিসগুলি করতে পারে। আরও গাণিতিক উপায়ে, পুনরাবৃত্তির উপপাদ্যটি কোনও শক্তিশালী মডেল গণনার জন্য ধারণ করে। কিছু প্রোগ্রামিং ল্যাঙ্গুয়েজ কেবল এটি তৈরি করে আরও সহজ করে তোলে ing যুক্তি হিসাবে একই: আপনি এই ভাষার ভিতরে কোনও যুক্তি ব্যবস্থা প্রয়োগ করতে পারেন system অবশ্যই কোনও কিছুর কারণ হিসাবে আশা করা যায় না, যেমন প্রোগ্রামগুলির জন্য থামানো সমস্যা।
কাভেহ

2
আমি মনে করি প্রশ্নটি খুব পরিষ্কার নয়। পাইথন, জাভা এবং ম্যার্টিন তার উত্তরে যেসব প্রোগ্রামিং ভাষাগুলি উল্লিখিত হয়েছে সেগুলি সম্পর্কে আপনার নজর দেওয়া উচিত এবং প্রশ্নটি পরিষ্কার করে দেওয়া উচিত যাতে এটি স্পষ্ট হয় যে আপনি যা খুঁজছেন তা তারা মিলছে কি না কেন।
কাভেহ

1
@ হোলডেনলি "পি = কিউ" হিসাবে, প্রতিষ্ঠিত পরিভাষাটি "একজাতীয় মেটা-প্রোগ্রামিং", যা "বিজাতীয় মেটা-প্রোগ্রামিং" এর বিরোধী যেখানে পি কিউ
মার্টিন বার্গার

উত্তর:


14

আমার মনে হয় আপনি দুটি ভিন্ন জিনিস সম্পর্কে জিজ্ঞাসা করছেন।

  • একটি প্রোগ্রামিং ভাষার ডেটা হিসাবে তার সমস্ত প্রোগ্রাম উপস্থাপন করার ক্ষমতা।
  • প্রোগ্রাম হিসাবে ডেটা হিসাবে যুক্তি।

বিশ্লেষণাত্মক উদ্দেশ্যে এগুলি পৃথক রাখা দরকারী। আমি পূর্বের উপর ফোকাস করব।

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

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

আপনার সম্ভবত যা মনে রয়েছে তা হ'ল কিছু সুন্দর is যেমন যদি একটি প্রোগ্রাম হয়, তাহলে পি হয় পি , কিন্তু ডেটা যেমন, ম্যানিপুলেশন এবং বিশ্লেষণের জন্য হাতে। এটিকে প্রায়শই উদ্ধৃতি বলা হয় । অনুশীলনে, উদ্ধৃতিটি জটিল নয়, পরিবর্তে আমরা কোটির কোটেশন ব্যবহার করি, যা উদ্ধৃতিটির একটি সাধারণীকরণ যেখানে উদ্ধৃতিতে 'ছিদ্র' থাকতে পারে যেখানে প্রোগ্রামগুলি সঞ্চালিত হতে পারে যা গর্তগুলিকে 'পূরণ' করার জন্য ডেটা সরবরাহ করে। উদাহরণস্বরূপ আমি পিপিপি একটি যেখানে পরিবর্তে একটি শর্ত আমরা একটি গর্ত আছে আপাতদৃষ্টিতে উদ্ধৃতি একটি শর্তাধীন প্রতিনিধিত্বমূলক হয় [ ] । যদি প্রোগ্রাম এম তথ্য মূল্যায়ণএক্স > 0 , তারপর আপাতদৃষ্টিতে উদ্ধৃতিআমি

আমি[]টিএন7গুলি8+ +9
[]এমএক্স>0 তথ্য মূল্যায়ণআমি
আমি[এম]টিএন7গুলি8+ +9
আমিএক্স>0টিএন7গুলি8+ +9

(দ্রষ্টব্য যে একটি সাধারণ প্রোগ্রাম (ডেটা হিসাবে কোনও প্রোগ্রাম নয়) যা উদ্ধৃত প্রোগ্রাম, অর্থাত্ প্রোগ্রাম হিসাবে ডেটা দেয় returns) এটি কাজ করার জন্য, আপনাকে প্রোগ্রাম উপস্থাপনের জন্য একটি ডেটা-টাইপ দরকার। সাধারণত ডেটা-টাইপকে এএসটি (অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি) বলা হয় এবং আপনি এএসটিএসের সংক্ষিপ্তকরণ ব্যবস্থা হিসাবে (অর্ধ) উদ্ধৃতি দেখতে পারেন।এম

বেশ কয়েকটি প্রোগ্রামিং ল্যাঙ্গুয়েজে মেটা-প্রোগ্রামিংয়ের জন্য কোয়েস্ট-কোটস এবং অন্যান্য বৈশিষ্ট্য রয়েছে। প্রোগ্রামগুলির ডেটা হিসাবে বিবেচনা করার এই দক্ষতার পথিকৃষ্ঠায় এটি ম্যাক্রোং কার্যকারিতা সহ লিস্প ছিল। সম্ভবত দুর্ভাগ্যক্রমে, লিস্প-ভিত্তিক ম্যাক্রোগুলির শক্তি লিস্পের সংক্ষিপ্ত সিনট্যাক্সের উপর বেশিরভাগ সময় বিশ্রাম নিতে দেখা গেছে; এটি মেটাএমএল (1) অবধি ছিল না যে একটি আধুনিক, সিন্ট্যাক্টিক্যালি সমৃদ্ধ ভাষা মেটা-প্রোগ্রামিংয়ে সক্ষম বলে দেখানো হয়েছিল। তার পর থেকে, মেটাওক্যামল (2) (ডেটা হিসাবে প্রোগ্রামগুলি কীভাবে টাইপ করতে হবে সমস্যা সমাধানের জন্য চলমান চলমান অনুসন্ধানে এটির অগ্রগতির জন্য গুরুত্বপূর্ণ), টেমপ্লেট হাস্কেল (3) এবং কনভার্জ (4) (প্রথম ভাষাটি সমস্ত মূল মেটা-প্রোগ্রামিং বৈশিষ্ট্যগুলি আমার মতে ঠিকঠাক পান) দেখানো হয়েছে যে বিভিন্ন আধুনিক প্রোগ্রামিং ভাষাতে মেটা-প্রোগ্রামিং থাকতে পারে। এটা বুঝতে পারি যে আমরা নিতে পারি importantযে কোনও প্রোগ্রামিং ভাষা এবং এটিকে একটি মেটা-প্রোগ্রামিং ল্যাঙ্গুয়েজে পরিণত করুন L m p যা L এর সাথে একত্রে তার নিজস্ব প্রোগ্রামগুলিকে ডেটা হিসাবে উপস্থাপনের (এবং মূল্যায়ন) সক্ষমতা রাখে।এলএলমিপিএল

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

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

সংক্ষেপে: আপনি যা চেয়েছিলেন তা বাস্তবায়ন করা হয়েছে, তবে এটি বেশ সূক্ষ্ম এবং বিশেষত প্রকার এবং সুশৃঙ্খল যুক্তি সহকারে খোলামেলা প্রশ্ন রয়েছে।


  1. ডাব্লু তাহা। মাল্টি-স্টেজ প্রোগ্রামিং: এর তত্ত্ব এবং অ্যাপ্লিকেশন

  2. ডাব্লু। তাহা এবং এমএফ নীলসেন। পরিবেশগত শ্রেণিবদ্ধ

  3. টি শার্ড এবং এস পাইটন জোন্স। হাস্কেলের জন্য টেম্পলেট মেটা-প্রোগ্রামিং

  4. এল ট্র্যাট। একটি গতিময় টাইপ করা OO ভাষায় সংকলন-সময় মেটা-প্রোগ্রামিং

  5. এম বার্গার, এল ট্র্যাট, সমজাতীয় মেটা-প্রোগ্রামিংয়ের প্রোগ্রাম লজিক্স

  6. আর। ডেভিস, এফ। পেফেনিং, মঞ্চযুক্ত গণনার একটি আধুনিক বিশ্লেষণ

  7. আর। ডেভিস, বাইন্ডিং-টাইম বিশ্লেষণের জন্য একটি অস্থায়ী-যুক্তিযুক্ত দৃষ্টিভঙ্গি

  8. টি.সুকদা, এ। ইগ্রাশি। পরিবেশগত শ্রেণিবদ্ধদের জন্য একটি যৌক্তিক ভিত্তি


আপনি ঠিক বলেছেন - প্রোগ্রামিং ল্যাঙ্গুয়েজ P ভাষা ভাষার Q থেকে পৃথক হতে পারে যা সেই ভাষায় প্রোগ্রামগুলি সম্পর্কে উপপাদাগুলি / প্রমাণগুলি প্রকাশ করে (যা কোক্রে থাকতে পারে)। আমি যে ধরণের উপপাদ্যের কথা ভাবছি তা এরকম হয়: মনে করুন আমাদের একটি যত্ন সহকারে ডিজাইন করা প্রোগ্রাম A_1 রয়েছে। থিম: প্রতিটি এন এর জন্য নিম্নলিখিত ধারণাগুলি রয়েছে: প্রোগ্রাম এ_এন আউটপুট দেবে (এম_এন, এ_ + n + 1}), যেখানে এম_এন একটি পূর্ণসংখ্যা, এ_ + n + 1 another অন্য প্রোগ্রাম (যেমন, কোনওভাবে এ_এন সংশোধন করে প্রাপ্ত) , এবং সমস্ত এন এর জন্য, আমাদের কাছে এই m_n> 0 রয়েছে।
হোল্ডেন লি

(এর বিজ্ঞান কথাসাহিত্য সংস্করণটি হ'ল আমাদের কাছে একটি "প্রমাণ" রয়েছে যে কোনও প্রোগ্রাম যা নিজেকে পরিবর্তন করে চলেছে, কখনও কখনও বোমাটি চাপবে না যে পারমাণবিক ক্ষেপণাস্ত্র উৎক্ষেপণ করে, বলে বা এই প্রোগ্রামটি সর্বদা একটি নির্দিষ্ট পরিমাণকে অনুকূল করে তুলবে))
হোল্ডেন লি

এই কারণেই আমি প্রোগ্রামটি চালানো এবং প্রোগ্রামটি কী আউটপুট নিয়ে আসবে তার মধ্যে তর্ক করতে চাইছিলাম - আমরা এটি চালানোর আগে এটি কী করবে তার বৈশিষ্ট্য জানতে চাই it মনে রাখবেন যে আমরা যদি A_n A_ {n + 1 produce উত্পাদন করতে "এর উত্স কোডটি সংশোধন করতে" সক্ষম করতে চাই, তবে পি অবশ্যই অবিচ্ছিন্ন দক্ষতা (যা আমাদের (5)) অবস্থানে রাখে।
হোল্ডেন লি

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

@ হোল্ডেনলি A_n এর মতো প্রোগ্রাম লিখতে পারা সম্ভব। আপনি যদি প্রোগ্রামগুলির প্রতিনিধি হিসাবে স্ট্রিংগুলি ব্যবহার করেন তবে এটি যে কোনও ভাষায় তুচ্ছভাবে করা যেতে পারে, আপনি যদি কোটির কোট বা অনুরূপ চান, এটি উদাহরণস্বরূপ রূপান্তর সম্ভব। আমি নির্মাণে m_n এর ভূমিকা বুঝতে পারি না।
মার্টিন বার্গার

6

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

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

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

সুতরাং একটি হোমোকোনিক ভাষা আপনার প্রয়োজনীয়তার তিনটি করে। এমনকি আপনি লিস্পে একটি আনুষ্ঠানিক প্রোগ্রামের ধারণাটি সংজ্ঞায়িত করতে পারেন।

আপনি লিস্প ভিতরে মডেল করতে পারেন? হ্যাঁ এটি প্রায়শই আপনার দক্ষতা পরীক্ষা করার জন্য একটি লিস্প প্রোগ্রামিং বইয়ের শেষে একটি অনুশীলন হিসাবে করা হয়। SICP

বর্তমান সময়ে ইস্যু চারটি একটি গবেষণা প্রশ্ন এবং নীচে আমি যা পেয়েছি তা এই প্রশ্নের উত্তর দেওয়ার চেষ্টা করেছে।

আমি বলব যে অনেক ধরণের প্রোগ্রাম রয়েছে যা এটি করার চেষ্টা করে। নীচে আমি জানি সমস্ত প্রোগ্রাম সম্পর্কে।

  • জেএসলিন্ট একটি স্ট্যাটিক বিশ্লেষকের একটি উদাহরণ যা মেশিন কোড বা অন্য কোনও ভাষা নেয় এবং স্পষ্টভাবে বাগগুলি সন্ধান করে। তারপরে এটি কোনও প্রোগ্রামারকে এটি সংশোধন করার জন্য বলে।

  • কোক এমন একটি পরিবেশ যা আপনাকে প্রোগ্রামিং ভাষা ব্যবহার করে প্রমাণগুলি নির্দিষ্ট করতে দেয়। এটির কৌশলগুলিও রয়েছে যেখানে এটি আপনার সমস্যার সমাধান করার উপায়গুলি প্রস্তাব করে। তবুও এটি একজন মানুষের কাজটি করবে বলে প্রত্যাশা করে। কোক নির্ভরশীল প্রকারের কাজ করতে ব্যবহার করে এবং তাই তাত্ত্বিক ক্ষেত্রে খুব টাইপ করে। এটি কম্পিউটার বিজ্ঞানী এবং হোমোপি টাইপ থিওরিতে কাজ করা লোকদের মধ্যে খুব জনপ্রিয়।

  • অন্যদিকে ACL2 একটি স্বয়ংক্রিয় উপপাদ প্রবাদ the এই সিস্টেমটি আপনার যে কোনও প্রোগ্রামের ভিত্তিতে বিবৃতি প্রমাণ করবে।

  • এসিএল 2 এবং ককের একটি সফ্টওয়্যার প্লাগইন রয়েছে যা তাদের সিস্টেমটিকে একটি মেশিন লার্নিং সিস্টেমের সাথে ইন্টারফেস করে । এই সিস্টেমগুলি প্রশিক্ষণের জন্য যা ব্যবহৃত হয় তা হ'ল পূর্বে লিখিত প্রোগ্রামগুলি। আমার উপলব্ধি থেকে এই সিস্টেমগুলি আরও একটি বৈশিষ্ট্য যুক্ত করেছে যেখানে আপনার কেবল কৌশলগুলিই নয় বরং প্রমাণিত বিকাশে সহায়তা করে এমন উপপাদাগুলির পরামর্শ দিয়েছেন।

নীচে আপনার প্রশ্নের অর্থ কী তার একটি ভিত্তি রয়েছে।

  • জিসিসি একটি optimizng কম্পাইলার যা ইনপুট এবং তারপর আউটপুট নিজেই একটি অনুকূল সংস্করণ হিসাবে নিজেকে নিতে পারার একটি উদাহরণ। একটি সংকলক ধারণা যা একটি উপস্থাপনা থেকে অন্যটিতে প্রোগ্রামগুলি অনুবাদ করে এবং কিছু অপ্টিমাইজেশান পতাকার কারণে গতি উন্নত করে খুব ভালভাবে বোঝা যায়। একবার আপনি সংকলকটি বুটস্ট্র্যাপ করুন এবং এটি বৈধ মেশিন কোড উত্পন্ন করলে আপনি একটি অপ্টিমাইজেশন যুক্ত করতে এবং সংকলকটি পুনরায় সংকলন করতে পারেন এবং এটি নিজেই আরও কার্যকর সংস্করণ তৈরি করে।

1
ভাষা যতটা সম্ভব ন্যূনতম করার দরকার নেই। আপনি যে কোনও ভাষায় প্রাসঙ্গিক মেটা-প্রোগ্রামিং বৈশিষ্ট্য যুক্ত করতে পারেন। তাহার মেটাএমএল কাজ এটি দেখিয়েছে। প্রকৃতপক্ষে মেটা-প্রোগ্রামিং ক্ষমতাগুলির সংযোজন যান্ত্রিক।
মার্টিন বার্গার

1
আমি এটিও দ্বিমত করি যে "কোনও বর্তমান সিস্টেম যা চারটি পদক্ষেপ করে না"। প্রশ্ন 4 কেবল কোড হিসাবে দেওয়া প্রোগ্রামগুলি চলমান সম্পর্কে আলোচনা করে। এটি পুরোপুরি সম্ভব, প্রকৃতপক্ষে জাভাস্ক্রিপ্টের ইওল এটিও করে।
মার্টিন বার্গার

@ মার্টিনবার্গার বলতে চাইছি আপনি মূল কর্নেলটিকে যতটা সম্ভব ন্যূনতম করুন। এছাড়াও যদি আপনি এটি আশা করতে শুরু করেন যে আপনার সিস্টেমটি # 4 করবে তবে আপনি এমন একটি সিস্টেম চান যা আপনি কেবল মানুষকে নয় কম্পিউটারগুলি ব্যবহারের জন্য প্রশিক্ষণ দিতে পারেন যাতে এটি আপনার একটি ন্যূনতম সিস্টেমের জন্য উপকৃত হতে পারে এবং তাদের কাছে লাইব্রেরি রয়েছে যা কোডড রয়েছে একটি সিস্টেম একটি মেটা প্রোগ্রামিং টেম্পলেট মত
জোশুয়া হারম্যান

এটি নির্ভর করে যা আমরা (4) এর বিষয়ে বলছি। মূল প্রশ্নটিতে সেগুলির দুটি বিবরণ রয়েছে। প্রথমটি তুচ্ছ, আপনি কেবল প্রোগ্রামটি চালান। দ্বিতীয়টিটি আমার দ্বারা টাইপিং সিস্টেমের (2) আমার উত্তরে (5) হিসাবে যুক্তিযুক্ত যুক্তি দ্বারা পরিচালিত হতে পারে। পরবর্তীতে মেটাওসিএএমএলে প্রয়োগ করা হয়। তবে আরও গবেষণার সুযোগ রয়েছে: (2) বা (5) কোনওভাবেই মেটা-প্রোগ্রামিংয়ের স্বেচ্ছাসেবী ফর্মগুলির সাথে মোকাবিলা করতে পারে না এবং (2) এর গ্যারান্টিযুক্ত বৈশিষ্ট্যগুলি কিছুটা দুর্বল (সর্বোপরি, এটি টাইপিং টাইপ সহ টাইপিং সিস্টেম) ।
মার্টিন বার্গার

1
"আপনি যতটা সম্ভব কম কার্নেলটি ন্যূনতম তৈরি করুন": এটির প্রয়োজন নেই। আপনি যে কোনও ভাষায় পূর্ণ মেটা-প্রোগ্রামিং যুক্ত করতে পারেন।
মার্টিন বার্গার

5

হিসাবে @ user217281728 এর উত্তর উল্লেখ অনুমান এবং এআই সঙ্গে বেশি সম্পর্কিত মেশিন এক ধরনের বলা আছে গোডেলের মেশিন

জেডেল মেশিন হ'ল জার্জেন শ্মিধুবার দ্বারা উদ্ভাবিত একটি স্ব-উন্নত কম্পিউটার প্রোগ্রাম যা সর্বোত্তম উপায়ে সমস্যার সমাধান করে। এটি একটি পুনরাবৃত্তির স্ব-উন্নতি প্রোটোকল ব্যবহার করে যাতে এটি তার নিজস্ব কোডটি পুনরায় লেখায় যখন এটি প্রমাণ করতে পারে যে নতুন কোড আরও অনুকূল কৌশল সরবরাহ করে। যন্ত্রটি জার্গেন শ্মিধুবার আবিষ্কার করেছিলেন, তবে কার্ট গুডেলের নামানুসারে এই গাণিতিক তত্ত্বগুলি অনুপ্রাণিত করেছিলেন।

"গোয়েলেল মেশিনস: স্ব-রেফারেন্সিয়াল ইউনিভার্সাল সমস্যা সমাধানকারী যথাযথভাবে সর্বোত্তম স্ব-উন্নতিকরণ", (2006) আরএক্সিভি: সিএস / 0309048v5 এ জার্গেন শ্মিধুবারের রেফারেন্সড প্রকাশনা

মেশাটি মেটা-শিক্ষার বাস্তবায়নে যেভাবে কাজ করে তার দুটি ধাপ রয়েছে:

  1. তথ্য থেকে শিখতে (স্তর 1, শিখুন)
  2. এর উত্স কোড / অ্যালগরিদম সংশোধন / অপ্টিমাইজ করতে শিখেছে ডেটা ব্যবহার করা (স্তর 2, শিখতে শিখুন)

যেহেতু মেশিন তার নিজস্ব উত্স পরিবর্তন করে এটি স্ব-রেফারেন্সিয়াল, অর্থাৎ স্ব-সংশোধন সম্পত্তি রয়েছে ( এখানেও দেখুন )।

এই অর্থে এটি শিখার অ্যালগরিদমকে কঠোর অর্থে নিজেই সংশোধন করতে পারে (অনুকূল স্ব-পরিবর্তনগুলি প্রমাণ করে)। স্ব-রেফারেন্স এবং অনিবার্যতা নিয়ে সমস্যা রয়েছে যা এই ক্ষেত্রে ফর্মটি গ্রহণ করে:

.. একটি সীমাহীন কম্পিউটেশনাল রিসোর্স সহ গডেল মেশিনকে সেই স্ব-উন্নতিগুলি এড়িয়ে যেতে হবে যার কার্যকারিতা এটি প্রমাণ করতে পারে না

স্ব-সংশোধন সম্পত্তি রয়েছে এমন অন্যান্য ভাষা (এবং তাদের সম্পর্কিত দোভাষী মেশিন) উদাহরণস্বরূপ এলআইএসপি

এলআইএসপি কোড এবং ডেটা আন্তঃ পরিবর্তনযোগ্য, বা সোর্স কোড এএসটি ডেটা হিসাবে এলআইএসপি প্রোগ্রামে উপলব্ধ এবং ডেটা হিসাবে পরিবর্তিত হতে পারে। অন্যদিকে, কিছু উত্স কোডের জন্য ডেটা এএসটি হিসাবে দেখা যেতে পারে।

হালনাগাদ

স্ব-প্রোগ্রামিং মেশিনগুলির মতো (অন্যদের মধ্যে) স্ব-রেফারেন্স , স্ব-প্রজনন এবং স্ব-প্রোগ্রামিংয়ের সংমিশ্রণের মতো অন্যান্য মেশিন রয়েছে

উপরের একটি আকর্ষণীয় দিক হ'ল স্ব-উল্লেখটি মোটেই সমস্যাযুক্ত নয়, বরং এটি স্ব-প্রজননে একটি প্রয়োজনীয় উপাদান / স্ব-প্রোগ্রামিং অটোমেটার ক্ষেত্রে

আরও তথ্যের জন্য (এবং আরও প্রকাশনা) জেপি মৌলিন, সিআর বায়োলজ 329 (2006) দেখুন

বিমূর্ত

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


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.