কিছু প্রোগ্রামিং ভাষা কেন টিউরিং সম্পূর্ণ তবে অন্যান্য ভাষার কিছু দক্ষতার অভাব রয়েছে কেন?


42

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

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


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

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

2
আরও হাস্যকর হতে হবে: একটি x86 প্রসেসরের MOV নির্দেশনা টিউরিং-সম্পূর্ণ। বিস্তারিত জানার জন্য cl.cam.ac.uk/~sd601/papers/mov.pdf দেখুন ।
গ্যারেথ ম্যাককাগান

3
এমনকি কার্ডগেম যাদু: জড়ো হওয়া টুরিং-সম্পূর্ণ। টিউরিং-সম্পূর্ণতার কোনও ভাষার বৈশিষ্ট্যগুলির সাথে প্রায় কিছুই করার নেই।
মাস্ট

2
বিটিডব্লিউতে খুব জটিল প্রোগ্রামিং ল্যাঙ্গুয়েজ রয়েছে যা সম্পূর্ণ টিউরিং হয় না, যেমন those প্রুফ চেকারদের মতো।
盛安安

উত্তর:


68

NkN

λ

ট্যুরিং সম্পূর্ণতা ধরণের / অ্যারি / ইন্টিজার / অভিধানে তৈরি, ইনপুট / আউটপুট ক্ষমতা, নেটওয়ার্ক অ্যাক্সেস, মাল্টিথ্রেডিং, গতিশীল বরাদ্দ, ...

জাভাতে বৈশিষ্ট্য এক্স (বলুন, ম্যাক্রোস, উচ্চ-স্তরের প্রকারের বা নির্ভরশীল প্রকারের) উপস্থিতি না থাকায় হঠাৎ এটি টুরিং সম্পূর্ণ হওয়া বন্ধ করে না।

টুরিং সম্পূর্ণতা এবং ভাষা প্রকাশের জন্য দুটি পৃথক ধারণা।


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

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

4
@ শাফলেপেন্টস আমি তবেই অবাক হয়েছি যে "আমি অন্য ভাষাটি ব্যাখ্যা করতে পারছি বলে" আমি সি ++ তে এটি করতে পারি "বলার পক্ষে যদি সত্যিই দরকারী হয় তবে। এই টোকেন দ্বারা, জাভা, এমএল, সি ++ সমতুল্য। সিস্কলগুলির জন্য একটি ওরাকল সহ টিএম (আই / ও )ও সমান। আমি আশঙ্কা করি যে সেই যুক্তি দ্বারা কার্যত সমস্ত ভাষা সমানভাবে প্রকাশিত। যদি তা হয় তবে ভাষার তুলনা করা কার্যকর ধারণা নয়।
চি

9
@ কচি আপনি সঠিক, তারা সমতুল্য। এটি টুরিং সম্পূর্ণ হওয়ার অর্থ। একটি টিউরিং সম্পূর্ণ সিস্টেমের সাহায্যে যা কিছু করা যায় তা অন্য টিউরিং সম্পূর্ণ পদ্ধতিতে করা যেতে পারে। এটি কোনও নির্দিষ্ট সিস্টেমে করা সুবিধাজনক হবে না। এবং বিভিন্ন জিনিস করার সুবিধা হ'ল আমরা বিভিন্ন প্রোগ্রামিং ভাষার তুলনা করার প্রাথমিক উপায়। কিন্তু প্রশ্নটি যা জিজ্ঞাসা করছিল তা নয়।
সাফল্য

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

47

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

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

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

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


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

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

4
@chi এটি পুরোপুরি সঠিক নয়। প্রথমত, কার্যত সকলেই সিটিকে ট্যুরিং সম্পূর্ণ বলে বিবেচনা করে কারণ আমরা সাধারণত "আপনার যথেষ্ট স্মৃতিশক্তি আছে" এই ধারনাটির আশেপাশে সেই বাক্যটি নির্ধারণ করি। খুব কম সংখ্যক লোককে যাদের আরও কড়া শব্দটির বিষয়ে চিন্তা করতে হবে যেখানে এই ধরনের অনুমানগুলি অবৈধ, সি কোনও পয়েন্টারের আকার নির্দিষ্ট করে না এবং কত স্মৃতি সম্বোধন করতে পারে তার কোনও সীমা নির্দিষ্ট করে না। সুতরাং এমনকি "টিউরিং সম্পূর্ণ," সি এর নিরঙ্কুশতম অর্থে সত্যই টুরিং সম্পূর্ণ।
আম্মোনকে

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

7
আমি নতুন ভাষার সি-ইনফারেন্সের প্রস্তাব দিচ্ছি, যা হ'ল সি'র মতো, যখন অতিরিক্ত পরিমাণ মেমরি পুনরাবৃত্তি বা হিপ বরাদ্দের মাধ্যমে বরাদ্দ করা বাদে প্রোগ্রামটি বাতিল করা হয়, সাইজেরফ (শূন্য *) এবং সাইজফের (সাইজ_টি) এর বৃহত্তর মান সহ পুনরায় সংমিশ্রিত করা হয়, এবং শুরু থেকে আবার দৌড়াতে শুরু করে।
gnasher729

26

প্রোগ্রামিং ভাষাগুলিকে বিভিন্ন স্থল যান হিসাবে ভাবেন: সাইকেল, গাড়ি, হোভারকার, ট্রেন।

টুরিং কমপ্লিটনেস বলেন "এই যানবাহন যে কোনও জায়গায় যেতে পারে যে কোনও যানবাহন যেতে পারে।" এটি হল, আপনি সমস্ত একই ফাংশন গণনা করতে পারেন। আউটপুট ইনপুট, শেষ শুরু।

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


4
এটি একটি দুর্দান্ত উপমা। এই সাইটের অন্য কোথাও আমি যে প্রশ্নটি দেখেছি তা সম্পর্কে এটি খুব সুন্দরভাবে প্রসারিত হয়েছে, ট্যুরিং মেশিনকে অতিক্রম করে এমন অন্যান্য মডেল গণনাও থাকতে পারে কি না: এই সাদৃশ্যগুলিতে ট্যুরিং কমপ্লিটের চেয়ে বিমান এবং স্পেসশিপগুলি আরও বেশি এবং স্পিডবোটগুলি অন্যটি সম্পূর্ণরূপে মেশিন টাইপ। :)
ওয়াইল্ডকার্ড

2
হালকা ভ্রমণের চেয়ে দ্রুততর ভ্রমণ সম্ভবত সুপার-টিউরিং গণনার জন্য একটি ভাল উপমা। এটি সম্ভব হতে পারে, তবে বেশিরভাগ লোক মনে করেন এটি তা নয়।
jmite

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

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

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

17

আপনি মূলত যা সম্পর্কে জিজ্ঞাসা করছেন তা হ'ল গণনা শক্তি এবং সাধারণত কোন ভাষা (বা গণনার সিস্টেম) এর এক্সপ্রেরিভ শক্তি (বা কেবল এক্সপ্রেশনালিটি ) বলা হয় between

গণনা শক্তি

কম্পিউটেশানাল শক্তির কি সমস্যার ধরণের ভাষা গনা করতে বোঝায়। কম্পিউটেশনাল পাওয়ারের সর্বাধিক সুপরিচিত ক্লাসটি যা ইউনিভার্সাল ট্যুরিং মেশিনের সমান । গণনার অন্যান্য প্রচুর সিস্টেম রয়েছে যেমন র‌্যান্ডম অ্যাকসেস মেশিনস , λ-ক্যালকুলাস , এসকে কম্বিনেটর ক্যালকুলাস , rec-পুনরাবৃত্ত ফাংশন , WHILEপ্রোগ্রাম এবং আরও অনেকগুলি। এবং দেখা যাচ্ছে যে এগুলি সমস্ত একে অপরকে অনুকরণ করতে পারে, যার অর্থ তাদের সকলের একটি একই গণনার শক্তি রয়েছে।

এটি চার্চ-টিউরিং থিসিসকে উত্থান দেয় ( Al- ক্যালকুলাস এবং অ্যালান টুরিং যিনি ইউনিভার্সাল ট্যুরিং মেশিন তৈরি করেছিলেন এলোনজো চার্চের নামানুসারে )। চার্চ-টিউরিং-থিসিস দুটি দিকের সংযোগের একটি অনুমান যা:

  1. সাধারণ গণনা করতে সক্ষম সমস্ত কম্পিউটিং সিস্টেম সমান শক্তিশালী, এবং
  2. একটি অ্যালগরিদম অনুসরণকারী একজন মানুষ একটি টুরিং মেশিন (এবং এইভাবে অন্য কোনও সিস্টেমের) কে সঠিকভাবে গণনা করতে পারে।

দ্বিতীয়টি কম্পিউটার সায়েন্সের চেয়ে মনের দর্শনের ক্ষেত্রে বেশি গুরুত্বপূর্ণ।

তবে চার্চ-টিউরিং-থিসিস দুটি জিনিস বলে না , এটি আপনার প্রশ্নের সাথে খুব প্রাসঙ্গিক:

  1. বিভিন্ন সিমুলেশন কতটা দক্ষ এবং
  2. সমস্যার এনকোডিংটি কতটা সুবিধাজনক

(1) এর একটি সাধারণ উদাহরণ: একটি এলোমেলো অ্যাক্সেস মেশিনে, অ্যারের অনুলিপি করতে অ্যারের দৈর্ঘ্যের সমানুপাতিক সময় লাগে। একটি ট্যুরিং মেশিনে, তবে এটি অ্যারের দৈর্ঘ্যের বর্গক্ষেত্রের সমানুপাতিক সময় নেয় , কারণ টুরিং মেশিনটির এলোমেলো মেমরির অ্যাক্সেস নেই, এটি কেবল একবারে টেপের একটি ঘরে যেতে পারে can অতএব, এটা জুড়ে সরানো প্রয়োজন এন অ্যারের উপাদানের এন তাদের কপি করতে বার। সুতরাং, গণনার বিভিন্ন মডেলের বিভিন্ন কর্মক্ষমতা বৈশিষ্ট্য থাকতে পারে, এমনকি অ্যাসেম্পটোটিক ক্ষেত্রেও, যেখানে আমরা প্রয়োগের বিবরণ থেকে দূরে রেখে চেষ্টা করি।

(২) প্রচুর পরিমাণে উদাহরণ: λ-ক্যালকুলাস এবং পাইথন উভয়ই টুরিং-সম্পূর্ণ। তবে আপনি কি বরং পাইথন বা calc-ক্যালকুলাসে একটি প্রোগ্রাম লিখবেন?

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

এখন দেখা যাচ্ছে যে, প্রাকৃতিক সংখ্যায় ফাংশন হিসাবে আপনি অনেকগুলি প্রকাশ করতে পারেন - সর্বোপরি, আমাদের আধুনিক কম্পিউটারগুলি তার চেয়ে অনেক কম পরিমাণে পেয়ে যায় (মূলত 0 এবং 1 সংখ্যাটিতে 3-4 ফাংশন, এবং এটিই ), তবে, উদাহরণস্বরূপ, কোন অপারেটিং সিস্টেম গণনা করে?

আই / ও এর এই ধারণাটি, পার্শ্ব-প্রতিক্রিয়াগুলি, পরিবেশের সাথে যোগাযোগ করে, "প্রাকৃতিক সংখ্যার উপরে ক্রিয়াকলাপ" ধারণাটি ধারণ করে না। এবং এখনও, এটা গুরুত্বপূর্ণ ধরনের, কারণ, যেমন সাইমন Peyton জোনস একবার এটা করা "সমস্ত একটি বিশুদ্ধ ফাংশনটি কোন পার্শ্ব প্রতিক্রিয়া নেই, গরম আপনার CPU- র করা হয় সঙ্গে" , যা একটি শ্রোতা সদস্য বললেন "আসলে, যে হয় একটি পার্শ্ব প্রভাবও!

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

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

সুতরাং, সর্বোপরি, টিউরিং-সমতুল্যতা মারাত্মক আকর্ষণীয় নয়, যদি না আপনি স্ট্যাটিকালি প্রোগ্রামগুলি বিশ্লেষণ করতে চান।

expressiveness

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

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

তবে আরও সুনির্দিষ্ট সংজ্ঞা দেওয়ার চেষ্টা রয়েছে। সর্বাধিক বিখ্যাত একটি (এবং আমি জানি সবচেয়ে কঠোর এক) ম্যাথিয়াস ফেলেলিসেন তাঁর গবেষণাপত্রে প্রোগ্রামিং ল্যাঙ্গুয়েজগুলির এক্সপ্রেসিভ পাওয়ার সম্পর্কে (প্রথম দুটি পৃষ্ঠায় একটি মৃদু পরিচয় রয়েছে, বাকী কাগজটি আরও মিষ্টিজাতীয়)।

যখন অন্য ভাষা থেকে ভাষা থেকে একটি প্রোগ্রাম অনুবাদ, তবে আপনি যে পরিবর্তনগুলি করতে হবে কিছু স্থানীয়ভাবে অন্তর্ভুক্ত করা হয় (যেমন যেমন বাঁক হিসাবে: প্রধান স্বজ্ঞা এই হল FORমধ্যে লুপ WHILEloops বা শর্তাধীন মধ্যে লুপ GOTOগুলি), এবং কিছু বিশ্বব্যাপী কোন পরিবর্তন প্রয়োজন প্রোগ্রাম গঠন।

আপনি যখন কেবলমাত্র স্থানীয় রূপান্তর দ্বারা কোনও ভাষার একটি বৈশিষ্ট্যকে একটি ভিন্ন ভাষার আলাদা বৈশিষ্ট্যের সাথে প্রতিস্থাপন করতে পারেন, তখন বলা হয় যে এই বৈশিষ্ট্যগুলি এক্সপ্রেশনাল শক্তিতে কোনও প্রভাব ফেলবে না। একে সিনট্যাকটিক সুগার বলে

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

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

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

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

স্ট্যাকওভারফ্লোতে আমি রুবি ট্যাগে একটি উদাহরণ পেয়েছি: অনেক ব্যবহারকারী যারা রুবি ট্যাগ অনুসরণ করেন তারা দাবি করেন যে লুপগুলি পুনরাবৃত্তির চেয়ে বোঝা সহজ এবং পুনরাবৃত্তি কেবল উন্নত ফাংশনাল প্রোগ্রামারদের জন্য এবং লুপগুলি নতুনদের জন্য আরও স্বজ্ঞাত, তবে আমি একাধিক ক্ষেত্রে দেখেছি সম্পূর্ণ নতুন যারা সম্পূর্ণ স্বতঃস্ফূর্তভাবে কোড লিখেছেন:

def rock_paper_scissors
  get_user_input
  determine_outcome
  print_winner
  rock_paper_scissors # start from the top
end

যা সাধারণত বেশিরভাগ লোককে মন্তব্য করে যে "এটি কাজ করে না" এবং "তারা এটি ভুল করছে" এবং "সঠিক উপায়" হ'ল:

def rock_paper_scissors
  loop do
    get_user_input
    determine_outcome
    print_winner
  end
end

সুতরাং, স্পষ্টতই, কিছু লোক রয়েছে যাদের জন্য লেল পুনরাবৃত্তি লুপ কনস্ট্রাক্টসের চেয়ে "লুপিং" ধারণাটি প্রকাশ করার আরও প্রাকৃতিক উপায়।

সারাংশ

দুটি ভাষা টিউরিং-সমতুল্য হ'ল একটি এবং ঠিক একটি জিনিস বলে যে: তারা ট্যুরিং মেশিনের মতো প্রাকৃতিক সংখ্যায় একই ফাংশনের সংকলন করতে পারে। এটাই.

তারা কত দ্রুত এই ফাংশনগুলি গণনা করে সে সম্পর্কে কিছুই বলে না। এই ফাংশনগুলি প্রকাশের স্বাচ্ছন্দ্য সম্পর্কে এটি কিছু বলে না। এবং এটি প্রাকৃতিক সংখ্যায় কম্পিউটিং ফাংশন ছাড়াও আর কী করতে পারে সে সম্পর্কে কিছুই বলে না (যেমন সি লাইব্রেরিতে লিঙ্ক করা, ব্যবহারকারীর কাছ থেকে ইনপুট পড়া, স্ক্রিনে আউটপুট লিখুন)।

এর অর্থ কি এই যে সমস্ত শ্রেণিকেন্দ্রিক ভাষা সম্পূর্ণরূপে হওয়া সত্ত্বেও, প্রতিটি প্রোগ্রামিং ভাষা একত্রে সমাধান করতে পারে এমন সমস্যাগুলির শ্রেণীর ভাষা পরিবর্তিত হয়?

হ্যাঁ.

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

7

সমস্ত টিউরিং সম্পূর্ণ প্রোগ্রামিং ভাষা একই অ্যালগরিদমের সেটটি প্রয়োগ করতে পারে। সুতরাং, যদি আপনি দেখতে পান যে কোনও নির্দিষ্ট অ্যালগরিদম কোনও নির্দিষ্ট ভাষায় প্রয়োগ করা খুব কঠিন, তবে এর অর্থ এটি অসম্ভব নয়।

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

এর মধ্যে কয়েকটি আগ্রহী হতে পারে:


5

সমস্ত টিউরিং-সম্পূর্ণ ভাষা একই জিনিসগুলি গণনা করতে পারে।

আপনি যদি কোনও আধুনিক ভাষা বাস্তবায়নের চেষ্টা করেন তবে আপনি লক্ষ্য করবেন যে এর বৈশিষ্ট্যগুলির বেশিরভাগটি কোনও গণনামূলক ক্ষমতা যুক্ত করে না । এই বৈশিষ্ট্যগুলির মধ্যে অনেকগুলি সরলতরগুলিতে নামানো যেতে পারে যা ইতিমধ্যে একই ভাষায় বিদ্যমান।

এখানে কিছু উদাহরন:

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

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

খাঁটি গণনার জিনিসগুলি দীর্ঘদিন আগে পেরেক দেওয়া হয়েছিল।


4

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

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


2

প্রত্যেকের উত্তরের উপরে, এখানে আরও একটি সাদৃশ্য।

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

সুতরাং একটি আধুনিক কম্পিউটারাইজড ওয়াশিং মেশিন এবং নদীর পাশের একটি শিলার মধ্যে পার্থক্য কী?

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

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


2

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

উদাহরণস্বরূপ, এমন একটি ভাষা নিন যা টুরিং মেশিনগুলিকে প্রকাশ করে। ভাষার প্রতিটি প্রোগ্রাম একটি টুরিং মেশিন।

এখন সমস্ত টিউরিং মেশিনের সাবল্যাঙ্গেজ বিবেচনা করুন যা কেবল a, b এবং ফাঁকা অক্ষরগুলি পড়ে এবং লিখতে পারে। এটি টুরিং সম্পূর্ণ, তবে এটি কোনও প্রোগ্রাম প্রকাশ করতে পারে না যা উদাহরণস্বরূপ, সমস্ত ইনপুটগুলিতে সি উত্পাদন করে, কারণ এটি কোনও সিএস লিখতে পারে না। এটি কেবলমাত্র ইনপুট এবং আউটপুটগুলিতে এবং বিএস এর স্ট্রিং হিসাবে এনকোডযুক্ত সমস্ত গণনীয় ফাংশন প্রকাশ করতে পারে।

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

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