অভিব্যক্তি শক্তি বিশেষভাবে কী বোঝায়?


34

এক্সপ্রেসিভ পাওয়ার উইকিপিডিয়া দ্বারা সংজ্ঞায়িত:

.. সেই ভাষাগুলির প্রতিনিধিত্ব ও যোগাযোগ করা যায় এমন ধারণার প্রস্থ।

"ধারণাগুলি" কি জিনিসগুলি (ক্রিয়াকলাপ, কাঠামো, অ্যালগরিদম ইত্যাদি) বোঝায়? আমরা কী মেশিনে যোগাযোগ করতে পারি ? অথবা এটি "মানব" ধারণাগুলি বোঝায় যা অন্য মানুষের কাছে ভাষায় ধারণ ও ধারণ করতে পারে?

কীভাবে অভিব্যক্তিক শক্তি মূল্যায়ন ও পরিমাপ করা হয়?

উদাহরণস্বরূপ, আমরা যদি জাভাস্ক্রিপ্টের মতো একটি ভাষা গ্রহণ করি এবং ভেরিয়েবলের নামের উপর একটি অদ্ভুত নিষেধাজ্ঞা আরোপ করি, যেমন ভেরিয়েবলটি অবশ্যই একটি আন্ডারস্কোর, মিলের পূর্বে একটি 8-সংখ্যার সংখ্যা হওয়া উচিত/^_[0-9]{8}$/ , তাহলে আমরা কী ভাববাদী শক্তি হারাব?

অথবা এটি কেবল অযৌক্তিক এবং বিরক্তিকর হবে?


স্পষ্ট করা:

ভাষার অন্তর্নিহিত সাধারণ ধারণাগুলি দ্বারা অভিব্যক্তিক শক্তি পরিমাপ করা হয় :

  • পূর্ণসংখ্যা এবং স্ট্রিং
  • লুপ
  • কন্ডিশন

অথবা ভাষাটি প্রতিনিধিত্ব করতে পারে এমন নির্দিষ্ট , অনন্য ধারণার সংখ্যা :

  • পূর্ণসংখ্যা 1, 2 ... 2 ^ 32
  • স্ট্রিং "শিয়াল কি বলে?" এবং "ওয়া পাহা পাহে পাহ পা পো"
  • প্রত্যেকের জন্য বেঙ মধ্যে ব্যাঙ আমার সংগ্রহে
  • যদি বেঙ হয় সবুজ বা কিছু তারপর কিছু করতে

3
এটি লক্ষ করা উচিত যে কোনও প্রোগ্রামকে সর্বাধিক 100 মিলিয়ন ভেরিয়েবলগুলিতে একটি নির্দিষ্ট সুযোগে সীমাবদ্ধ করা ভাব প্রকাশের কিছুটা সীমাবদ্ধ করে। উদাহরণস্বরূপ এটি ফায়ারফক্স বাস্তবায়ন করা অসম্ভব করে তুলতে পারে। ;-)
আর ..

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

উত্তর:


39

Expressiveness উপর ল্যান্ডমার্ক কাগজ উপর প্রোগ্রামিং ভাষার ভাবপূর্ণ ক্ষমতা ম্যাথিয়াস Felleisen (1991) দ্বারা । এটিতে ভাষা প্রকাশের এক গাণিতিক কঠোর সংজ্ঞা রয়েছে।

স্বজ্ঞাতভাবে, প্রতিটি প্রোগ্রাম যে ভাষা A তে লেখা যেতে পারে কেবল সেখানকার B তেও কেবল স্থানীয় ট্রান্সফর্মেশন সহ রচনা করা যেতে পারে তবে কিছু ভাষা बीতে কিছু লেখা আছে যা তাদের A তে বিশ্বব্যাপী কাঠামো পরিবর্তন না করে ভাষা A তে লেখা যায় না (যেমন শুধু সাথে নয়) বিশুদ্ধরূপে স্থানীয় রূপান্তরের), তারপর ভাষা বি ভাষা চেয়ে বেশি ভাবপূর্ণ হয় একটি

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


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

ওপিতে আমার উদাহরণটি খারাপ। এ এবং বি উভয় ভাষা বিবেচনা করুন; তবে, ভাষার এ-এরও স্ট্রাক্ট রয়েছে। উভয় ভাষায় আমি Point2 ডি অ্যারে ব্যবহার করে একটি সিরিজের প্রতিনিধিত্ব করতে পারি । কিন্তু, একজন আমাকে লেট সুবিধা আছে একটি প্রকাশ Pointআরো একটি পাঠযোগ্য ধারণা হিসাবে। কি একটি আরো ভাবপূর্ণ?
এসভিডজেন

@ এসভিডজেন যেহেতু সমস্ত টিউরিং-সম্পূর্ণ ভাষাগুলি গণনাগতভাবে সমতুল্য, লিখিত হতে পারে এমন সম্ভাব্য প্রোগ্রামগুলির সেটটি তাদের সকলের জন্য তাত্ত্বিকভাবে একই। উপরোক্ত সংজ্ঞা অনুসারে, ভাষা B আরও বেশি সংবেদনশীল হয় তবে A তে B এ লিখিত প্রোগ্রামগুলিকে A এ ফিট করার জন্য পুনর্গঠন করতে হবে (কেবল রেখার দ্বারা বাক্য বাক্যটি পরিবর্তন করা নয়, নতুন ক্লাস, লুপ ইত্যাদি প্রবর্তন করা উচিত) পাইথনের পুনর্লিখনের কথা ভাবুন জাভা 7 প্রোগ্রাম যা ব্যবহার lambdas, map, filter, প্রথম শ্রেণীর ধরনের / পদ্ধতি / ফাংশন, হয়তো কিছু eval, একা ক্লাসের অধীনে একটি ক্লাস জাদু বা পরিবর্তনশীল নির্মিত ধরনের ইত্যাদি দিন
marczellm

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

1
@ জার্গ আপনি কি নিজের উত্তরে একটি উদাহরণ স্থাপন করতে পারেন? এটি একটি সুন্দর সংজ্ঞা, তবে সত্যই এটি প্রশ্নের উত্তর দেওয়ার জন্য খুব বেশি কিছু করে না।
এসভিডজেন

10

এক্সপ্রেসিভ পাওয়ার উইকিপিডিয়া দ্বারা সংজ্ঞায়িত:

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

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

"ধারণাগুলি" কি জিনিসগুলি (ক্রিয়াকলাপ, কাঠামো, অ্যালগরিদম ইত্যাদি) বোঝায়? আমরা কী মেশিনে যোগাযোগ করতে পারি? অথবা এটি "মানব" ধারণাগুলি বোঝায় যেগুলি অন্য মানুষের কাছে ভাষায় ধারণ ও ধারণ করতে পারে?

এটি সেই ভাষায় যা প্রকাশ করা যেতে পারে তা বোঝায়, নিজের মধ্যে খাঁটি হিসাবে বিবেচিত।

উদাহরণস্বরূপ, (আমি আমার উদাহরণগুলিতে জাভাস্ক্রিপ্ট ব্যবহার করব, কারণ আপনার প্রশ্নটি ইঙ্গিত করে যে এটির যে কোনও একটি ভাষা আপনি জানেন) জাভাস্ক্রিপ্টের বিবৃতি বিবেচনা করুন:

var x = 3 + 4;

এটি উপস্থাপন করে যে 3 এবং 4 এর মান সমষ্টি গণনা করা হয় এবং xপ্রদত্ত নেমস্পেস স্কোপের মধ্যে একটি লেবেলের সাথে মান সম্পর্কিত ।

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

এটি পেডেন্টিক মনে হতে পারে তবে ভাষাটি এমন জিনিস যা বাস্তব কম্পিউটারগুলির বিবেচনা না করে বিমূর্তে যুক্তিযুক্ত হতে পারে। একটি বিষয়, কম্পিউটার ভাষার তাত্ত্বিক পয়েন্টগুলি সম্পর্কে যে লোকেরা তত্ক্ষণে ব্যবহারের ক্ষেত্রে ব্যবহারযোগ্য ছিল না সেগুলি হ'ল আমাদের আজ যে স্থানটিতে পৌঁছেছে সেগুলির মধ্যে একটি; কম্পিউটারগুলিতে কম্পিউটার বিজ্ঞান প্রয়োজন, তবে কম্পিউটার বিজ্ঞানের কম্পিউটারের দরকার নেই, কেবল একটি গণনার ধারণা।

অবশ্যই, আমরা প্রকৃত বিশ্বে কম্পিউটারগুলি ব্যবহার করি এবং আজকাল প্রচুর লোক তাদের ব্যবহারের ক্ষেত্রে তত্ত্বের সাথে আলোচনা করার পরিবর্তে কয়েকটি বিশেষজ্ঞের পরিবর্তে অনুশীলনে ব্যবহার করছে using আপনার লিঙ্ক করা পৃষ্ঠাটি বলে:

অভিব্যক্তিপূর্ণ শব্দটি বিভিন্ন অর্থ সহ ব্যবহৃত হতে পারে। এর অর্থ সেই ভাষায় প্রকাশযোগ্য ধারণাগুলির একটি পরিমাপ হতে পারে:

  • নির্বিশেষে স্বাচ্ছন্দ্য (তাত্ত্বিক প্রকাশ)

  • সংক্ষিপ্তভাবে এবং সহজেই (বাস্তব প্রকাশ)

প্রথম জ্ঞানটি গণিত এবং যুক্তির ক্ষেত্রগুলিতে প্রাধান্য পায় যা ভাষার আনুষ্ঠানিক বিবরণ এবং তাদের অর্থ যেমন আনুষ্ঠানিক ভাষা তত্ত্ব, গাণিতিক যুক্তি এবং প্রক্রিয়া বীজগণিত নিয়ে কাজ করে।

অনানুষ্ঠানিক আলোচনায় শব্দটি প্রায়শই দ্বিতীয় অর্থ বা উভয়কে বোঝায়। প্রোগ্রামিং ভাষা নিয়ে আলোচনা করার ক্ষেত্রে এটি প্রায়শই ঘটে। এই শব্দটির অনানুষ্ঠানিক ব্যবহারকে আনুষ্ঠানিক করার চেষ্টা করা হয়েছে

এই শব্দটির দুটি ব্যবহারের মধ্যে প্রথমটির ব্যবহারিক প্রভাবটি কেবল কম্পিউটারে কী জানানো যেতে পারে তার সাথে সম্পর্কিত।

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

উদাহরণস্বরূপ, আমরা যদি জাভাস্ক্রিপ্টের মতো একটি ভাষা গ্রহণ করি এবং ভেরিয়েবলের নামের উপর একটি অদ্ভুত নিষেধাজ্ঞা আরোপ করি, যেমন ভেরিয়েবলটি অবশ্যই একটি আন্ডারস্কোর, মিলের পূর্বে একটি 8-সংখ্যার সংখ্যা হওয়া উচিত /^_[0-9]{8}$/, তাহলে আমরা কী ভাববাদী শক্তি হারাব?

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

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

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

সর্বাধিক আনুষ্ঠানিক সংজ্ঞা অনুসারে, প্রকাশের ক্ষেত্রে বেশ অপরিবর্তিত রয়েছে; সর্বোপরি এটি শুরু করার জন্য টুরিং সম্পূর্ণ ছিল।

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

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

আমার মতে, শেষ ব্যবহারটি এতটা অনানুষ্ঠানিক যে সত্যটি সঠিক হবে না, তবে এটি অনানুষ্ঠানিক সংজ্ঞা সহকারে সমস্যা।

আনুষ্ঠানিক নিশ্চিতকরণের দ্বারা, এটি সত্যিই মোটেই বেশি ভাবপ্রবণ হয়ে উঠেনি।


2
"কম্পিউটারগুলিতে কম্পিউটার বিজ্ঞানের প্রয়োজন, তবে কম্পিউটার বিজ্ঞানের কম্পিউটারের প্রয়োজন নেই" আমি এটি পছন্দ করি
chbaker0

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

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

4

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

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


0

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

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

সাধারণ টেবিল এক্সপ্রেশন সহ এসকিউএল এর একটি সংস্করণ একটি সংস্করণ ছাড়াই বেশি অভিব্যক্তিপূর্ণ কারণ সিটিই আপনাকে পুনরাবৃত্ত অনুসন্ধানগুলি উপস্থাপন করতে দেয় যা অন্যথায় এসকিউএল প্রকাশ করা অসম্ভব।


0

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

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

যদিও "শব্দ" ব্যবহার করে বিভ্রান্ত করবেন না। জাভা প্রোগ্রাম জাভা ভাষার একটি শব্দ (যদিও এটি স্পেস দ্বারা পৃথক পৃথক অক্ষরের একাধিক স্ট্রিং সহ একাধিক ফাইল বিস্তৃত হতে পারে)।

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

  • আসুন ভাষা A কে সংখ্যার সংজ্ঞা যুক্ত সমস্ত সূত্র হিসাবে সংজ্ঞায়িত করি।

  • আসুন, ভাষা B কে সংখ্যার গুণনের সাথে যুক্ত সমস্ত সূত্রের ভাষা হিসাবে সংজ্ঞায়িত করি।

উভয় ক্ষেত্রেই আমরা পরিচয় উপাদানটির ব্যবহার নিষিদ্ধ করি। সুতরাং ভাষা A তে "1 + 1", "1 + 2", "1 + 3", "2 + 3" ইত্যাদি রয়েছে। বি ভাষায় "2 * 2", "2 * 3", "2 * 4", "3 * 4" ইত্যাদি রয়েছে। আমরা স্বতন্ত্র চিহ্নগুলিতে "*" এবং "+" (পূর্ণ সংযোজন এবং পূর্ণসংখ্যার গুণ) এর সাধারণ ব্যাখ্যাও অর্পণ করি। সুতরাং, "1 + 1" এর ব্যাখ্যা 2 এবং "2 * 2" এর ব্যাখ্যা 4 হয়।

এখন দেখুন যে A এর ভাষা B ভাষার চেয়ে কঠোরতর ভাববাদী, কারণ পূর্ণসংখ্যায় এটি সত্য যে গুণকে বারবার সংযোজন হিসাবে ডাকা যেতে পারে তবে সাধারণভাবে গুণন হিসাবে সংযোজনকে উপস্থাপন করার উপায় নেই।


সংক্ষেপে এইভাবে বলা যায়: ভাষা A ভাষা B এর চেয়ে বেশি অভিব্যক্তিক হিসাবে বলা যেতে পারে যখন তাদের ব্যাখ্যামূলক ফাংশন সহ-ডোমেন ভাগ করে, তবে বি এর ব্যাখ্যামূলক ফাংশনের চিত্রটি A এর ব্যাখ্যা ফাংশনের চিত্রটির যথাযথ উপসেট হয় is


-1

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

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

ভাবের শক্তির অভাবের একটি সহজ উদাহরণ হ'ল: আপনাকে do_homeworkএবং করতে হবে bring_down_trash। এটি সহজে কোডে লেখা হয়:

do_homework();
bring_down_trash();

এই সমাধানটি বেশ সোজা দেখায় তবে বাস্তবে do_homeworkএবং bring_down_trashঅর্ডারমুক্ত হয় না, কেউ লিখতেও পারে:

bring_down_trash();
do_homework();

যা সমানভাবে অপ্রচলিত কারণ এটি প্রকাশ করে না যে আমরা কোনও আদেশ কার্যকর করার ইচ্ছা করি নি। আমরা থ্রেডও ব্যবহার করতে চাই না। আমরা এরকম কিছু বলতে চাই:

compiler_or_interpreter_pick_one(
    {
        do_homework();
        bring_down_trash();
    },
    {
        bring_down_trash();
        do_homework();
    }
);

আমি যতদূর জানি এটি কোনও প্রোগ্রামিং ভাষায় প্রকাশ করা অসম্ভব জটিল।

উদাহরণস্বরূপ যে আমাকে শেষ পর্যন্ত ছাড়িয়ে যায় তা হ'ল জাভাতে অবজেক্টের অ্যারে থাকা অসম্ভব। আপনি অবজেক্টগুলিতে পয়েন্টারগুলির একটি অ্যারে তৈরি করতে পারেন তবে এতে একই মেমরি লেআউট নেই (কথা বলার দক্ষতা)।

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

struct Extensible{
    std::vector<std::function<void(Extensible *)>> instanceExtensions;
    static std::vector<std::function<void(Extensible *)>> classExtensions;
};

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

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


2
আমি মোটামুটি নিশ্চিত যে এটি সঠিক নয় - কমপক্ষে এটি আমি যা বুঝতে পেরেছি তা তা নয়। ডিস্কে কাঁচা বাইনারি লিখতে এই সংজ্ঞাটি দ্বারা অভিব্যক্তি প্রকাশ করা হয় যা অযৌক্তিক।
তেলস্তিন

1
@ টেলাস্টিন এটি বেআইনী হবে কেন? অবশ্যই কেবল ডিস্কে কাঁচা বাইনারি লিখতে ভাব প্রকাশ করা হয় না, তবে এমন একটি ভাষা যা এটি করতে পারে তার চেয়ে বেশি প্রকাশ করা যায় না, অন্য সমস্তটি সমান।
nwp

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

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

1
"সাধারণত এগুলি অসীম লুপগুলি লেখা অসম্ভব করে দেয় This এটি থামার সমস্যাটি সমাধানযোগ্য করে তুলতে পারে" - সংজ্ঞা অনুসারে যদি আপনার অসীম লুপ না থাকে তবে আপনার প্রোগ্রামটি অবশ্যই থামবে।
প্যাট্রিক কলিন্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.