প্রোগ্রামিং ভাষা যেখানে প্রতিটি অভিব্যক্তি বোঝায়


23

প্রতি সুপারিশ আমি স্ট্যাক ওভারফ্লো থেকে এটি পুনরায় পোস্ট করছি ।

সম্প্রতি আমি নিম্নলিখিত ইস্যু সম্পর্কে চিন্তা করা হয়েছে।

স্ট্যান্ডার্ড "হ্যালো ওয়ার্ল্ড!" এর কোডটি বিবেচনা করুন কার্যক্রম:

main()
{
    printf("Hello World");

}

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

main(5
{
    printf("Hello World");

}

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

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

  2. ভেরিয়েবলের স্ট্যাক সহ "পোস্টফিক্স"। ভেরিয়েবলগুলি একটি স্ট্যাকের মধ্যে সংরক্ষণ করা হয়; প্রতিটি ক্রিয়াকলাপ শীর্ষ থেকে দুটি ভেরিয়েবল নেয় এবং ফলাফলটি তাদের জায়গায় রাখে। প্রোগ্রামটি শেষ অপারেশন বা ভেরিয়েবল এ পৌঁছালে শেষ হয়।

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

এই সমস্যাটি কীভাবে সমাধান করবেন সে সম্পর্কে কারও কি অন্য ধারণা আছে?


48
একটি কম্পাইলার দেওয়া , একটি নতুন কম্পাইলার তৈরি সি ' দেওয়া উৎস: যা অনুসরণ করে কাজ করে গুলি , এটা পাস সি । যদি সি এটির সাথে খুশি হয় এবং একটি এক্সিকিউটেবল উত্পাদন করে, তারপর যে, কিন্তু যদি সি তারপর আউটপুট একটি এক্সিকিউটেবল যা আউট প্রিন্ট অভিযোগ কম্পাইলার সি ' একটি বৈধ প্রোগ্রাম হিসাবে যে স্ট্রিং গ্রহণ করে। CCsCCCYou are a bimbo.C
আন্দ্রেজ বাউর

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

1
আপনার হার্ডওয়্যারটিকে 64k র্যামের জেড -80 সিপিইউ হতে দিন। একটি সংকলক লিখুন যা কেবলমাত্র ASCII- কোডেড উত্স কোডটি k৪ কে মেমরির (খুব প্রয়োজন হলে কাটা বা শূন্য-প্যাডিং) অনুলিপি করে। এই সংকলকটি কোনও সিনট্যাক্স ত্রুটি দেয় না।
বেন ক্রোয়েল

1
@RanG। একটি 'সংকলক' যা কোনও বিটস্ট্রিম প্রক্রিয়া করে এবং প্রদত্ত প্রসেসরের জন্য অবজেক্ট কোডের একটি বৈধ বিট হিসাবে এটি ঠিক করে দেয়, আমি মনে করি, ওপি প্রয়োজনীয়তাগুলি পূরণ করব। এমনকি x86 এর মতো জটিল নির্দেশাবলী সেট সিস্টেমগুলির জন্য এটি মারাত্মকভাবে কঠিন হবে না। আমি x86 প্রোগ্রাম হিসাবে র্যান্ডম বাইটগুলির বৈধতা সম্পর্কে একটি বছর আগে একটি কাগজ পড়েছি এবং এটিতে পাওয়া গেছে যে x86 আসলে লেখকদের মূলত প্রত্যাশার চেয়ে অনেক বেশি শক্তিশালী ছিল।
ওটাকুকোড

2
আরও শর্ত ছাড়াই, এই প্রশ্নটি বিরক্তিকর: আন্ড্রেজের মন্তব্য এবং ডেভিডের উত্তর "তুচ্ছ" উত্তর দেয়। আপনি যা চান তা আরও নিখুঁতভাবে পেরেক করতে হবে।
রাফেল

উত্তর:


31

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

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

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

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


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

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

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

টেকো আরেকটি বাস্তব-বিশ্বের উদাহরণ।
সিজেএম

1
@ cjm বাহ! "আপনি সমস্ত কিছু যুক্ত করে শেষ করার পরে একটি এআইপি শেষ হয় না, তবে আপনি যখন সমস্ত কিছু শেষ করে শেষ করেন তখন"। আপনি যদি TECO না হন, তারপরে আপনি অর্থ নির্ধারণের জন্য অক্ষরগুলি ফুরিয়ে গেলে আপনি শেষ করে ফেলবেন।
কর্ট অ্যামোন -

16

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

যদি আপনি শঙ্কিত হন যে কিছু নম্বর অবৈধ প্রোগ্রামগুলি কোড করতে পারে, তবে এটি নীচের দিক থেকে পদক্ষেপে থাকতে পারে। আপনার প্রোগ্রামিং ভাষার ক্যারেক্টার সেটটিতে সমস্ত স্ট্রিং লিখার কল্পনা করুন (বলুন, জাভা), ডিক্সিকোগ্রাফিক ক্রমে, এক দৈর্ঘ্যের স্ট্রিং দিয়ে শুরু করে, তারপরে দুটি, তারপরে তিন, ... তারপর, সংখ্যাটি দিয়ে একটি নতুন প্রোগ্রামিং ভাষা তৈরি করুন বৈধ জাভা প্রোগ্রামের তালিকায় এন- স্ট্রিংয়ের জন্য দাঁড়ান । নতুন প্রোগ্রামিং ভাষায় প্রোগ্রামগুলি কেবল প্রাকৃতিক সংখ্যা এবং প্রতিটি প্রাকৃতিক সংখ্যা একটি বৈধ প্রোগ্রাম।এনএন

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


13

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

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

এটি মোকাবেলার আরেকটি উপায় হ'ল প্রতিটি ইনপুটটির জন্য কি সংকলন-সময়, লোড-টাইম বা রান-টাইম ত্রুটি উত্পন্ন করা উচিত তা উল্লেখ সহ সমস্ত সম্ভাব্য ইনপুটগুলির শব্দার্থবিজ্ঞানের সম্পূর্ণরূপে সংজ্ঞা দেওয়া। অর্থাৎ, " Syntax error at line 42স্ট্যান্ডার্ড ত্রুটি প্রবাহে মুদ্রণের পরে প্রোগ্রামটি বাতিল করুন " ভাষার সংজ্ঞায়িত শব্দার্থের একটি অংশ। প্রতিটি অভিব্যক্তি "বোঝায়" এটির একটি সংজ্ঞায়িত অর্থ রয়েছে। এটি কি দরকারী অর্থ? হতে পারে - সর্বোপরি, প্রোগ্রামটি যদি স্পষ্টতই ভুল হয় তবে তা প্রত্যাখ্যান করা কার্যকর।


12

পরীক্ষা করে দেখুন Jot , একটি টুরিং-সম্পূর্ণ সমন্নয়ের যুক্তি, যেখানে 0 সেঃ এবং 1s (একটি খালি ক্রম সহ) প্রতিটি ক্রম একটি বৈধ প্রোগ্রাম উপর ভিত্তি করে ভাষা।


2
এটি কম্পিউটার বিজ্ঞানের উত্তর নয়।
রাফেল

2
@ আবদুলারহমান বাইনারি স্ট্রিং এবং প্রাকৃতিক সংখ্যার মধ্যে দ্বিপাক্ষিকতা সংজ্ঞায়নের জন্য সোজা এগিয়ে রয়েছে। আপনি চাইলে যে কোনও প্রোগ্রামকে প্রাকৃতিক নম্বর হিসাবে এনকোড করতে পারেন।
কোডসইনচওস

7
@ রাফেল দয়া করে বিশদ দিন, বা উত্তরের উন্নতির পরামর্শ দিন, আপনি যদি আপনার সমালোচনার ভিত্তি সরবরাহ করেন তবে আমি এটির উন্নতি করতে পেরে খুশি হব।
পেটর পুডলিক

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

8

একটি দুর্দান্ত উদাহরণ হ'ল স্পেস স্পেস । উপযুক্ত ভাষায়, অপারেটরগুলির যে কোনও সংমিশ্রণ বৈধ। অপারেটরগুলি হ'ল স্থান, ট্যাব এবং নতুন লাইন (বিশেষত "\ n")। অন্যান্য সমস্ত চরিত্র মন্তব্য হিসাবে বিবেচিত হয়

এই উত্তর, এবং প্রকৃতপক্ষে আপনার প্রশ্ন (পাশাপাশি এই পুরো ওয়েব পৃষ্ঠা) হ'ল হোয়াইটস্পেস প্রোগ্রামগুলির উদাহরণ (যদিও তারা বিশেষ আকর্ষণীয় কিছু নাও করতে পারে)।


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

এটি কম্পিউটার বিজ্ঞানের উত্তর নয়। (এছাড়াও, "প্রতিটি সাদা অংশের স্ট্রিং"! = "প্রতিটি স্ট্রিং"।)
রাফেল

2
@ রাফেল: তবে প্রতিটি সম্ভাব্য স্ট্রিং (কোনও শ্বেতক্ষেত্র নেই এমনগুলি সহ) বৈধ হোয়াইটস্পেস প্রোগ্রামগুলি - নোট করুন যে কোনও চরিত্র যা
শ্বেত

2
@ স্লেবেটম্যান আপনি আমার বন্ধনীটির মন্তব্যকে খুব আক্ষরিক অর্থে ব্যাখ্যা করছেন। আমি আনপেইার্ড লুপ টোকেনের কথা বলছিলাম। হোয়াইটস্পেসে কিছু অনুরূপ সমস্যাগুলি হতে পারে: পূর্ববর্তী কল কাজ ছাড়া ফিরে আসা কি? (এনকোডযুক্ত হিসাবে [LF][Tab][LF]) আপনি যদি খালি স্ট্যাকটি পপ করেন তবে কি হবে? আপনি যদি অপরিবর্তিত লেবেলে ঝাঁপ দেন তবে কি হবে? আপনি যদি সদৃশ লেবেলগুলি সংজ্ঞায়িত করেন তবে কী হবে?
কোডসইনচাউস

7

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

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

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

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

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

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

বাইনারি সমন্বয়যুক্ত যুক্তি এবং বাইনারি ল্যাম্বদা ক্যালকুলাসের মতো ভাষাগুলি সরাসরি অ্যালগোরিদমিক তথ্য তত্ত্বের কাজের বাইরে উঠে আসে, যেমন। http://tromp.github.io/cl/cl.html থেকে

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


2

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

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


0

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

( সম্পাদনা করুন: দেখা যাচ্ছে আপনাকে স্কোয়ার বন্ধনীগুলি খোলার সাথে সাথে বন্ধ করতে হবে তবে অন্যথায়, উপরেরটি সত্য)

এটি এই দুটি সহজ পদ্ধতির মাধ্যমে এটি অর্জন করে:

  1. যে কমান্ডগুলি এটি বুঝতে পারে সেগুলির সবকটিই একটি একক বাইট (বিএফ এ তারা সমস্ত একক ASCII অক্ষর উদাহরণস্বরূপ *)।

  2. সমস্ত অক্ষর এটি বুঝতে পারে না, এটি মন্তব্য হিসাবে ছাড় দেয়।

প্রোগ্রামিং ল্যাঙ্গুয়েজ টিউরিং সম্পূর্ণ (অর্থাত্, এটি অন্য কোনও ভাষা যা কিছু করতে পারে তা করতে পারে)।

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


2
এটি কেবল প্রশ্নের উত্তর দেয় না, এটি কম্পিউটার বিজ্ঞানেরও উত্তর নয়।
রাফেল

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

1
@ রাফেল ওপির প্রশ্নটি ছিল "এমন কোনও প্রোগ্রামিং ভাষা রয়েছে যেখানে প্রতিটি সম্ভাব্য চিহ্নের সংমিশ্রণ - অর্থাত প্রতিটি অভিব্যক্তিটি বোঝায়?" - আমার উত্তর "হ্যাঁ, এখানে কাছে আসার একটি উদাহরণ এখানে এবং এটির পিছনে তত্ত্ব এখানে ।" - ওপির প্রয়োজনীয়তা মেটাতে পারে এমন এক শ্রেণীর ভাষার জন্য সঠিক বিধি বিধান দেওয়া ছাড়া, আমি নিশ্চিত নই যে এখানে বিজ্ঞানের আরও কতটা জায়গা রয়েছে। আপনি কি এখানে দেখার প্রত্যাশা করছেন তার উত্সটির জন্য একটি উদাহরণ বা লিঙ্ক দিতে পারেন? -- ধন্যবাদ.
BrainSlugs83

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

এক সহজে "ফিক্স" বি এফ যাতে কোন স্ট্রিং গ্রহণ করা হবে না পারে: আপনি শুধু সাজা যথেষ্ট আছে ]উৎস সব অপ্রতিম মেলে শেষে অক্ষর [s, এবং যথেষ্ট [শুরুতে সব অপ্রতিম মেলে ]। এর শব্দার্থবিদ্যা [এবং ]সহজেই এই সমতূল্য করতে পরিবর্তন করা যাবে। (উদাহরণস্বরূপ যদি কোনও মিল না থাকে ]তবে [ডেটা পয়েন্টারে বাইট শূন্য হলে কেবল কার্যকরকরণ বন্ধ করে দেয় ]। একই পরিস্থিতিতে প্রোগ্রামের শুরুতে ঝাঁপিয়ে পড়ে)) ফলাফলটি ভাষা টিউরিং সম্পূর্ণ হবে এবং কোনও স্ট্রিং গ্রহণ করবে।
নাথানিয়েল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.