আমি জানি যে, অপরিহার্য প্রোগ্রামিং ভাষায়, ভাষাটিকে টুরিং-সম্পূর্ণ করার জন্য নিয়ন্ত্রণ প্রবাহের কাঠামো হিসাবে কিছুক্ষণের জন্য একটি লুপই যথেষ্ট (নিয়ন্ত্রণ প্রবাহ যতদূর যায় - অবশ্যই আমাদেরও আনবাউন্ডেড মেমরি এবং কিছু নির্দিষ্ট অপারেটর প্রয়োজন ...) । আমার প্রশ্নের সংক্ষিপ্তসারটি হ'ল: একটি ডু-ওয়ে লুপের কি কিছুক্ষণের জন্য লুপের মতো একই গণনার শক্তি আছে? অন্য কথায়, কোনও নির্দেশিকা সম্পূর্ণরূপে এড়িয়ে যাওয়া অসম্ভব হলে কোনও ভাষা কি টুরিং-সম্পূর্ণ হতে পারে।
আমি বুঝতে পারি যে এখানে কিছু শব্দার্থবিজ্ঞান কিছুটা দ্ব্যর্থহীন হতে পারে, সুতরাং আসল প্রশ্নটি একটি নির্দিষ্ট উদাহরণ দিয়ে বাক্যটি দিয়ে দেই:
ব্রেইনফাক (বিএফ) একটি টুরিং তরপিট যেখানে একমাত্র নিয়ন্ত্রণ প্রবাহ কিছুক্ষণের জন্য লুপ হয়, এটি হিসাবে চিহ্নিত করা হয় [...]
(আপনি ব্রেনফাকের সাথে পরিচিত না হলে এই প্রশ্নের নীচে একটি সম্পূর্ণ ভাষা নির্দিষ্ট রয়েছে)। আসুন একটি নতুন ভাষা বিএফ * সংজ্ঞায়িত করুন, যেখানে বিএফ ,.+-<>
-তে একই শব্দার্থক রয়েছে, তবে এর পরিবর্তে []
আমাদের {}
এমন একটি রয়েছে যা একটি ডু-ওয়েল লুপকে বোঝায়। অর্থাৎ, বিএফ-এর একমাত্র পার্থক্য হ'ল প্রতিটি পুনরায় লুপগুলি কমপক্ষে একবার চালানো হয় এর আগে আরও পুনরাবৃত্তিগুলি এড়ানো যায়।
বিএফ * টিউরিং-সম্পূর্ণ? যদি এটি হয় তবে আমি আগ্রহী যে আমি কীভাবে বিএফকে বিএফ অনুবাদ করতে পারি *। যদি তা না হয় তবে আমি কীভাবে প্রমাণ করব?
আমার নিজের কিছু পর্যবেক্ষণ:
- প্রতিটি বিএফ প্রোগ্রাম বিএফ * তে অনুবাদ করা যায় না। উদাহরণস্বরূপ, বিএফ * তে এমন কোনও প্রোগ্রাম লেখা অসম্ভব যেটি কোনও মান পড়তে বা না ছাপতে পারে - যদি প্রোগ্রামটি এক বা একাধিক মান প্রিন্ট করে তবে এটি সর্বদা কমপক্ষে একটি মুদ্রণ করবে will তবে, বিএফের একটি টুরিং-সম্পূর্ণ সাবসেট থাকতে পারে যা বিএফ * তে অনুবাদ করা যেতে পারে।
- আমরা কেবল অনুবাদ করতে পারি না
[f]
(যেখানেf
কিছু নির্বিচারে ব্রেনফাক প্রোগ্রাম রয়েছে কেবল+-[]<>
) এটিতে (প্রথম পুনরাবৃত্তির প্রভাব বাতিল করার প্রয়াসে), কারণ ক) প্রতিটি গণনীয় ফাংশনটিতে একটি গণনীয় বিপরীত থাকে না এবং খ) এমনকি যদি তা হয়, অগত্যা এই পদক্ষেপটি পুনরাবৃত্তভাবে প্রয়োগ করা প্রথম স্থানে শেষ করার গ্যারান্টিযুক্ত না হওয়ার চেয়ে কম লুপ থাকবে না ।f-1{f}
f-1
f
ব্রেইনফাক ভাষা সম্পর্কে এখানে একটি দ্রুত পর্যালোচনা দেওয়া হয়েছে। ব্রেইনফাক একটি অসীম টেপে পরিচালনা করে যেখানে প্রতিটি ঘরে প্রাথমিকভাবে শূন্য থাকে একটি বাইট মান। ওভারফ্লোগুলি চারপাশে মোড়ানো, সুতরাং 255 বাড়ানো 0 দেয় এবং বিপরীতে। ভাষাতে 8 টি নির্দেশনা রয়েছে:
+ Increment the current cell.
- Decrement the current cell.
> Move tape head to the right.
< Move tape head to the left.
, Input a character from STDIN into the current cell.
. Output the current cell as a character to STDOUT.
[ If the current cell is zero, jump past the matching ].
] If the current cell is non-zero, jump back to just behind the matching [.
[]
বিএফ-তে একটি "যখন কর" লুপটি হুবহু সংজ্ঞায়িত করছে না। আপনার টেবিলের মতো বাম এবং ডান বন্ধনীগুলি বর্তমান সেল শূন্য / ননজারো মূল্যায়ন করে। সুতরাং সম্পর্কিত {}
ধনুর্বন্ধনী মূল্যায়ন যুক্তি সঠিক বর্ণনা কি ? কম্পিউটার সায়েন্স চ্যাটে আরও সংলাপ / আলোচনার পরামর্শ দিন । এছাড়াও আপনার "পর্যবেক্ষণ" প্রমাণ ছাড়া "পোস্টুলেটস" বা "প্রস্তাব" এর মতো।
{}
করতে হবে {
সব এবং কিছুই করতে }
হিসাবে একই ]
। পরের কয়েক দিন আমার বেশি সময় থাকবে না, তবে কিছুটা সময় পেলে আমি আপনাকে আড্ডায় যোগ দেব।
{}
এবং গ্রহণের []
সাথে বিএফ * টিউরিং সম্পূর্ণ। এই বোঝার সাথে যে বিএফ []
সম্পূর্ণরূপে টিউরিং ভাষায় কিছুটা লুপের মতো কিছুটা অনুরূপ / অনুরূপ ruct