টুরিং সম্পূর্ণ নয় এমন একটি 'কার্যকর' প্রোগ্রামিং ভাষা থাকা কি আসলেই সম্ভব?


37

যেখানে এটি গৃহীত হয় যে কোনও ভাষা ভাল হওয়ার জন্য টিউরিং সম্পূর্ণ হতে হবে, সেখানে ট্যুরিং সম্পূর্ণ নয় এমন কোনও 'কার্যকর' প্রোগ্রামিং ভাষা থাকা কি সম্ভব?

আমার স্পষ্ট করে বলা উচিত যে এটি প্রচলিত অর্থে 'প্রোগ্রামিং' ভাষা সম্পর্কিত, এবং মার্কআপ বা কোয়েরি ভাষা নয়।


3
@ ফোনিক ইউ এসকিউএল প্রথমে সম্পূর্ণ টিউরিং করছিল না
রাইথাল

4
@ রাইথাল এসকিউএল কোনও প্রোগ্রামিং ভাষা নয়, এটি একটি কোয়েরি ভাষা।
ইয়ানিস

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

5
রেজেক্স সম্পূর্ণ টিউরিং হয় নি এখনও এটি ব্যাপকভাবে ব্যবহৃত হয়
ratchet freak

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

উত্তর:


48

মোরগ , Agda , Hol এবং ACL2 খুব দরকারী এবং অত্যন্ত শক্তিশালী ভাষা, যদিও তারা টুরিং সম্পূর্ণ-করছি না হয়।

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


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

8
@ ফনিকুক: সি সংকলক সি বাস্তবায়ন নয় । এটি এমন একটি সরঞ্জাম যা একটি ভাষার (সি) কোডগুলিকে অন্য একটি ভাষায় (সাধারণত মেশিন কোড) রূপান্তর করে। এর অর্থ এই নয় যে সি সংকলক নিজেই যেকোন র্যান্ডম সি প্রোগ্রামের সমতুল্য।
জোছিম সউর

9
@ ফোনিক ইউকে, আপনি নন-টিউরিং-সম্পূর্ণ ভাষায় টুরিং-সম্পূর্ণ ভাষার জন্য দোভাষীকে প্রয়োগ করতে পারবেন না। তবে আপনি অবশ্যই একটি সংকলক বাস্তবায়ন করতে পারেন (যেহেতু একটি টুরিং-সম্পূর্ণ সিপিইউ প্রকৃত মূল্যায়ন করবে)।
এসকে-যুক্তি

11
@ এসকে-যুক্তি: "অবশ্যই?" এটি কেবলমাত্র সি এর পক্ষে সম্ভব কারণ এটি মোটামুটি সহজ ভাষা। সি ++ এর পক্ষে এটি সম্ভব নয় কারণ একটি সংকলককে টেম্পলেট কোডটি ব্যাখ্যা করতে হয় (যা সংকলনের সময় টুরিং-সম্পূর্ণ)।
এমএসএলটারস 30:58

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

12

আমার মনে হয় ইয়েগের "মিনি-ভাষা" শব্দটি এমন একটি বিষয়কে বোঝায় যে নির্দিষ্ট সমস্যার জন্য কোনও ভাষা ব্যবহার করা প্রায়শই কার্যকর হয় যেখানে ভাষাটি কার্য সম্পাদন করার জন্য টুরিং-পূর্ণতা প্রয়োজন হয় না এবং এটি কতটা অদ্বিতীয় বিষয়টির অন্তরে যায় - সম্পূর্ণ ভাষা প্রশিক্ষণ দরকারী হতে পারে। https://sites.google.com/site/steveyegge2/language-grubbing

আমার অন্ত্র যা বলেছিল ঠিক তার সাথে সামঞ্জস্য করে উইকিপিডিয়া এটি খুব ভাল উত্তর দেয়। প্রথমে আমি খাঁটি গণিতের কথা ভাবছিলাম তখন আমি রেজিএক্সএক্সের কথা স্মরণ করি এবং উইকিপিডিয়া এপিগ্রামের তালিকা দেয় যা আমার বিশ্বাস 'খাঁটি গণিত' শিরাতে থাকবে।

http://en.wikipedia.org/wiki/Turing_completeness#Non-Turing-complete_languages

অ-টিউরিং-সম্পূর্ণ ভাষাগুলি

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

ডেটা ভাষা

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

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


8

আমি বুঝতে পারি এসকিউএল ব্যবসায়ের ধরণের মধ্যে বেশ জনপ্রিয়


3
এসকিউএল একটি কোয়েরি ভাষা, প্রোগ্রামিং ভাষা নয়।
ফোনিকুক

4
@ ফোনিক ইউকে: এবং কোয়েরি ভাষা এবং প্রোগ্রামিং ভাষার মধ্যে পার্থক্য কী?
জোছিম সউর

8
@ ফোনিউক - টেক্স একটি পাঠ্য মার্কআপ ল্যাঙ্গুয়েজ এবং এটি টিউরিং সম্পূর্ণ
মার্টিন বেকেট

3
আধুনিক এসকিউএল বাস্তবায়ন, যতদূর আমি জানি, সম্পূর্ণরূপে ট্যুর হচ্ছে।
shabunc

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

5

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

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

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

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

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


2
আপনার কি সিএসএসে কনওয়ের লাইফ প্রয়োগ করার কোনও লিঙ্ক আছে?
RBerteig

আমি সিএসএসে কোনও সিজিওএল বাস্তবায়ন সম্পর্কে জানি না, তবে আমি জানি যে 110 রুল বাস্তবায়িত হয়েছিল। যদিও এটি সন্ধান করেছে বলে মনে হচ্ছে না, এটি সরিয়ে নেওয়া হয়েছে বলে মনে হয়।
খ্রিস্টান মান

2
@ ক্রিশ্চিয়ানমান, এই একজন? Raw.github.com/elitheeli/stupid-machines/master/rule110/…
এসকে-যুক্তি

-1 খুব আকর্ষণীয় তবে জিজ্ঞাসিত প্রশ্নটির ঠিকানা দেয় না
mattnz

2
@ ম্যাটনজ: ভুল। আমি নন-টিউরিং-সম্পূর্ণ ভাষাগুলির কার্যকর উদাহরণ যা আমি মনে করি এটির একটি উপযুক্ত প্রতিক্রিয়া বলে আমি মনে করি "টুরিং সম্পূর্ণ নয় এমন একটি 'কার্যকর' প্রোগ্রামিং ল্যাঙ্গুয়েজ পাওয়া কি আসলে সম্ভব?", এখানে অন্য উত্তরটির
back2dos

3

প্রকৃতপক্ষে প্রোগ্রামিং ভাষা বিদ্যমান রয়েছে, যেখানে আপনি কেবল "দক্ষ" প্রোগ্রাম লিখতে পারেন। এই অর্থে দক্ষতার অর্থ এই জাতীয় ভাষায় লিখিত প্রতিটি প্রোগ্রামই কোনও ভাষার প্রতিনিধিত্ব করে P। বেলানটোনি, নিগল এবং শুইচটেনবার্গ এখানে এ জাতীয় ভাষার বর্ণনা দিয়েছেন


1

সি প্রাক প্রসেসর টুরিং-সম্পূর্ণ নয় (নকশা দ্বারা), এখনো এটি এখনও একটি অনুবাদক বাস্তবায়ন করতে পারে একটি ভাষা যে জন্য করা হয় সম্পূর্ণ হয়েছে (অর্ডার-ভাষার টুরিং ডকুমেন্টেশন বর্ণনা অনুযায়ী, মূলত শুধু একটি রান-অফ-the- হয় মিলটি খাঁটিভাবে কার্যকরী এমএল / স্কিম ধরণের জিনিস, এবং এটি তুলনামূলক অবিস্মরণীয় হবে - সম্ভবত ব্যবহার করতে বেশ চমৎকার - যদি এটি অস্বাভাবিক বাস্তবায়নের জন্য না হয়)।

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

  1. একটি অযৌক্তিকভাবে বড় গতিশীল সংখ্যা সরবরাহ করুন (2 ^ 64 বা তাই ডিফল্টরূপে), তাত্পর্যপূর্ণ প্রসারণ প্রক্রিয়া ( মহাবিশ্বের স্তূপিত হয়ে যাওয়া জীবনযাপনের স্তম্ভিত জীবনকাল ) ব্যবহার করে সর্বাধিক বাস্তব সমস্যা সমাধানের জন্য যথেষ্ট পরিমাণে ।

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

অর্ডারটি নিজের মধ্যে প্রয়োজনীয়ভাবে "দরকারী" বা তদন্তের কোনও সিপিপি-বাস্তবায়িত ইঞ্জিন হতে পারে তা তর্ক করার মতো নয়, তবে এটি ধারণার একটি আকর্ষণীয় প্রমাণ। এটি গতিময়ভাবে টাইপ করাও রয়েছে যা এই অঞ্চলের পক্ষে অস্বাভাবিক।


বক্তৃতার মাঝখানে বিড়বিড় করার জন্য উপভোট করুন।
jpaugh

-1

হ্যাঁ, সত্যিই এমন একটি কার্যকর ভাষা থাকা সম্ভব যা টুরিং সম্পূর্ণ নয়। এখানে দেখুন: http://tkatchev.bitbucket.org/tab/exferences.html

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

আপনি এমন একটি ভাষা কেন চান যা টুরিং সম্পূর্ণ নয়: কারণ এটি আপনাকে রানটাইম আচরণ সম্পর্কে কিছু দৃ strong় গ্যারান্টি দেওয়ার অনুমতি দেয়।

সম্পূর্ণরূপে টুরিং করা, স্পষ্টভাবে বলা মানে, পুনরাবৃত্তির জন্য ক্ষমতা থাকা। পুনরাবৃত্তি হওয়ার অর্থ স্মৃতিতে সম্ভাব্য সীমাহীন কাঠামো থাকা। যেহেতু বাস্তব বিশ্বের স্মৃতি অসীম নয়, টুরিং সম্পূর্ণতার জন্য মেমরি পরিচালনা এবং / অথবা আবর্জনা সংগ্রহ প্রয়োজন।

রিসর্ট নিষিদ্ধকরণ রিসোর্স ম্যানেজমেন্টের সত্যই, সত্যই কঠিন সমস্যা এড়ানোর এক দুর্দান্ত উপায়।

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


-1

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

একে বলা হয় "ক্রেমা" । এটি নিজেকে বর্ণনা করে:

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

এটি বেশ নরমাল এবং বরং নিম্ন স্তরের।

এটি সি বিকাশকারীদের কাছে এক ধরণের পরিচিত দেখা উচিত।

এটি প্রথমে ডিফেন্স অ্যাডভান্সড রিসার্চ প্রজেক্টস এজেন্সি (ডিআরপা) দ্বারা অর্থায়ন করা হয়েছিল তবে লেখার মুহুর্তে এটি বেশ অবিচলিত দেখাচ্ছে। তবে তবুও কেউ আগ্রহী।

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