ঘোষণামূলক এবং পদ্ধতিগত প্রোগ্রামিং প্যারাডিজমের মধ্যে পার্থক্য কী?


97

ঘোষণামূলক এবং পদ্ধতিগত প্রোগ্রামিং প্যারাডিমগুলির মধ্যে পার্থক্য কী ? আপনি কিছু উদাহরণ প্রদান করতে পারেন?

অন্য কোন প্রোগ্রামিং প্যারাডিজম বিদ্যমান?


4
একই প্রশ্ন: stackoverflow.com/questions/1784664/...
daCoda

উত্তর:


108

অনুজ্ঞাসূচক

অপরিহার্য প্রোগ্রামিং প্যারাডিজমের বেশ কয়েকটি উপ-দৃষ্টান্ত রয়েছে যেমন প্রক্রিয়াগত বা বস্তু-ভিত্তিক প্রোগ্রামিং প্যারাডিজম।

অত্যাবশ্যক প্রোগ্রামিং দৃষ্টান্তে, আপনি বিমূর্ততার বিভিন্ন ডিগ্রিতে ধাপে ধাপে অ্যালগরিদম বর্ণনা করেন।

কার্যনির্বাহী দৃষ্টান্তকে সমর্থন করে এমন প্রোগ্রামিং ভাষার উদাহরণ:

  • সি (এবং বেশিরভাগ অন্যান্য উত্তরাধিকারের ভাষা)
  • পিএইচপি, বেশিরভাগই
  • কিছু অর্থে, সমস্ত বড় ভাষা

অবজেক্ট ওরিয়েন্টেড

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

ওও দৃষ্টান্তকে সমর্থন করে এমন প্রোগ্রামিং ভাষার উদাহরণ:

  • জাভা

ঘোষিত

ঘোষণামূলক প্রোগ্রামিং প্যারাডিজমের কয়েকটি উপ-প্যারাডিম রয়েছে, যেমন কার্যকরী বা লজিক প্রোগ্রামিং প্যারাডিজম।

ঘোষিত প্রোগ্রামিং দৃষ্টান্তে, আপনি কোনও ফলাফল বা লক্ষ্য বর্ণনা করেন এবং আপনি এটি একটি " ব্ল্যাক বক্স " এর মাধ্যমে পেয়ে থাকেন । অপরিহার্য বিপরীত

প্রোগ্রামিং ল্যাঙ্গুয়েজের উদাহরণ যা ঘোষিত প্রোগ্রামিং দৃষ্টান্ত সমর্থন করে:

  • ইয়্যাক
  • ট্রিটপ
  • এসকিউএল
  • নিয়মিত অভিব্যক্তি
  • লেক্স
  • এক্সএসএলটি
  • মার্কআপ, ট্রফ, সিএসএস, ভিএইচডিএল

কার্যকরী

কার্যকরী প্রোগ্রামিং পার্শ্ব প্রতিক্রিয়া ছাড়াই এবং পরিবর্তনীয় স্থিতি ছাড়াই ফাংশনগুলির প্রয়োগের উপর জোর দেয়। উপরোক্ত ঘোষিত সিস্টেমগুলি কার্যকরী প্রোগ্রামিংয়ের কয়েকটি দিক প্রদর্শন করে।

প্রোগ্রামিং ল্যাঙ্গুয়েজের উদাহরণ যা ঘোষণামূলক কার্যকরী দৃষ্টান্ত সমর্থন করে:

  • হাস্কেল
  • ওসিএএমএল
  • পরিকল্পনা
  • এরলং
  • F #
  • স্কলা

61

ডিক্লারেটিভ প্রোগ্রামিং হ'ল যেখানে আপনি এটি কীভাবে করবেন তা না বলে আপনি যা চান তা বলে। পদ্ধতিগত প্রোগ্রামিং সহ, আপনাকে ফলাফল পেতে সঠিক পদক্ষেপগুলি নির্দিষ্ট করতে হবে।

উদাহরণস্বরূপ, এসকিউএল প্রক্রিয়াগত তুলনায় আরও ঘোষিত, কারণ প্রশ্নগুলি ফলাফল উত্পাদন করার পদক্ষেপগুলি নির্দিষ্ট করে না।


4
এসকিউএল-তে ভাল উদাহরণের জন্য +1। আমাদের আরও উদাহরণ থাকতে পারে দয়া করে?
মরিস

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

এমএক্সএমএল (ফ্লেক্স ফ্রেমওয়ার্কের অংশ) ঘোষিত: আপনি আপনার বস্তু / পাত্রে কী অর্ডার প্রদর্শন করতে চান তা আপনি এটি বলুন এবং আপনি এটি আনুভূমিকভাবে বা উল্লম্বভাবে নিজেকে বাইরে রাখার কথা বলেছেন কিনা তার উপর নির্ভর করে এটি বিন্যাস পরিচালনা করে। অ্যাকশনস্ক্রিপ্ট 3 হ'ল ওওপি প্যারাডাইমগুলির সহায়তার জন্য পদ্ধতিগত।
হুরয় আই এম 25:09

মেকফিলস হ'ল আরেকটি বিখ্যাত ঘোষিত ভাষা
স্টেফানো বোরিনি

25

আমি আপনাকে একটি আসল-বিশ্বের উদাহরণ দেই: আমার এক কাপ চা দরকার।

কার্যপ্রণালী:

  1. রান্নাঘরে যান
  2. চিনি, দুধ এবং চা পান,
  3. এগুলি মিশিয়ে নিন এবং আগুনের উপরে উত্তপ্ত হওয়া পর্যন্ত উত্তাপ করুন
  4. এটি একটি কাপে রাখুন এবং আমার কাছে আনুন

ঘোষিত:

  1. আমাকে এক কাপ চা দাও।

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

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


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

4
আমি ভাবছি, "১. চা, আর্ল গ্রে, হট" এর থেকে আরও ভাল উদাহরণ হতে পারে। এটি ঘোষণা করছে যে কী বিতরণ করা দরকার, কী পদক্ষেপ নেওয়া দরকার ('আমাকে পান ...')
জেফুক

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

5

পদ্ধতিগত প্রোগ্রামিং:

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

ঘোষিত প্রোগ্রামিং:

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


0

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


0

জবাবদিহি করার জন্য মন্তব্যটি সম্বোধন করতে এবং সম্ভবত দুজনের পার্থক্যের মধ্যে একটি উদাহরণ সরবরাহ করুন। জবাবদিহি পদ্ধতিগত যেখানে পুতুল বা টেরাফর্মের মতো কিছু ঘোষণামূলক। উদাহরণস্বরূপ, আপনি এর মতো 10 টি ই সি 2 উদাহরণ স্থাপন করার জন্য একটি উত্তরদায়ক ইয়ামল ফাইল তৈরি করেন:
-ec2: গণনা: 10 চিত্র: ami-058c6e5b73b074cd2 দৃষ্টান্ত_ টাইপ: t2.micro

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


-1

তাই ওয়াইএএমএল কি ঘোষিত প্রোগ্রামিংয়ের ভাষা? কারণ আমরা প্রকৃত যুক্তি লেখার পরিবর্তে আমরা যা চাই তা সংজ্ঞায়িত করি।

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



এটি আরও জোর দেওয়া মন্তব্যের মতো, উত্তর নয়
জারদিলিয়র

-2

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

যেমন আপনি উদাহরণে দেখতে পাবেন, ঘোষণামূলক পদ্ধতির ক্ষেত্রে, সমস্যাটি সমাধান করার জন্য আপনাকে HOW নির্দেশ দেওয়ার দরকার নেই।


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