ট্যুরিং সম্পূর্ণতা ব্যতীত পাওয়ারের পরিমাপ


18

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

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

উত্তর:


24

আপনি যে ধারণাটির জন্য সন্ধান করছেন তাকে অভিব্যক্তি বলা হয় এবং ম্যাথিয়াস ফেলেলিসেনের গাণিতিকভাবে কঠোর সংজ্ঞা রয়েছে:

" প্রোগ্রামিং ল্যাঙ্গুয়েজের এক্সপ্রেসিভ পাওয়ারে "

www.ccs.neu.edu/scheme/pubs/scp91-felleisen.ps.gz (পোস্ট স্ক্রিপ্ট সংস্করণ)

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

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

আমার আলোচনাটি কিছু বিশদ সরল করেছে এবং পুরো অ্যাকাউন্টের জন্য আপনাকে কাগজটি নিজেই পড়া উচিত।

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


আপনাকে অনেক ধন্যবাদ! আমি ঠিক এটিই খুঁজছিলাম!
কেসব্যাশ

6

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

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


আমি বলব যে সময় নেওয়া সময় পরিমাপ করা পাশাপাশি বিষয়গতও হয়। কোন প্রোগ্রামার সময় নিয়েছিল? যদি আপনি একই প্রোগ্রামার দিয়ে উভয় ভাষার সময় পরীক্ষা করেন তবে তিনি কোন ভাষাটি আরও ভাল জানতেন? এটি মোকাবেলার জন্য পরিসংখ্যানগত উপায় রয়েছে তবে কোনও ব্যক্তি এটি একা করতে পারেন না।
জন ফিশার

1
@ জন: কেবলমাত্র কিছুকে পরিসংখ্যানগতভাবে বিশ্লেষণ করা যেতে পারে তার অর্থ এটি সাবজেক্টিভ নয়।
ডেভিড থর্নলি

@ ডেভিড: এটি আসলে আমার বক্তব্য ছিল না। মুল বক্তব্যটি ছিল যে পূর্বনির্ধারিত অধ্যয়ন ব্যতীত প্রশ্নকর্তা যে ভাষাগুলির যত্ন নিয়েছিলেন তার "শক্তি" তুলনা করতে অক্ষম হবে - বৃহত্তর গোষ্ঠীর উপর পরিসংখ্যানগতভাবে বিশ্লেষণ না করলে এটিকে বিষয়ভিত্তিক রেখে যায়।
জন ফিশার

1

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


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

1

আপনার পরিভাষা আরও ভাল সংজ্ঞা দেওয়া দরকার to

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

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

সম্পাদনা

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

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


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

@ ক্যাসাব্যাশ - আপনি এখনও "শক্তি" কি তা বলেননি।
স্টিফেন সি

2
কারণ আমি জানি না এবং এটিই এই প্রশ্নের পুরো বিষয়টি!
কেসব্যাশ

তাহলে আপনার উত্তর দেওয়ার কী লাভ? এটি একটি মন্তব্য করা উচিত ছিল।
পুনরায় পোস্টার

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