প্রোগ্রামিং প্যারাডাইম: সংশোধিত সংস্করণের মধ্যে পার্থক্য

বিষয়বস্তু বিয়োগ হয়েছে বিষয়বস্তু যোগ হয়েছে
Sammay Sarkar (আলোচনা | অবদান)
→‎শীর্ষ: সংশোধন
Sammay Sarkar (আলোচনা | অবদান)
→‎সংক্ষিপ্ত বিবরণ: অনুবাদ (চলমান)
৪৪ নং লাইন:
 
কিছু কিছু প্রোগ্রামিং ভাষা নির্দিষ্ট প্যারাডাইম-নির্ভর ([[স্মলটক]] অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং সমর্থন করে, আবার [[হ্যাসকেল]] ফাংশনাল প্রোগ্রামিং-ভিত্তিক), আবার কিছু কিছু ভাষা একাধিক প্যারাডাইমের সমর্থন দেয় (যেমন [[অবজেক্ট প্যাসকেল]], [[সি++]], [[জাভা (প্রোগ্রামিং ভাষা)|জাভা]], [[সি শার্প]], [[স্কালা (প্রোগ্রামিং ভাষা)|স্কালা]], [[ভিজুয়াল বেসিক]], [[কমন লিস্প]], [[স্কিম (প্রোগ্রামিং ভাষা)|স্কিম]], [[পার্ল (প্রোগ্রামিং ভাষা)|পার্ল]], [[পিএইচপি]], [[পাইথন (প্রোগ্রামিং ভাষা)|পাইথন]], [[রুবি (প্রোগ্রামিং ভাষা)|রুবি]], [[এফ শার্প]])। সি++, অবজেক্ট প্যাকেল বা পিএইচপিতে লিখিত প্রোগ্রাম বিশুদ্ধ প্রসিডিউরাল, অথবা বিশুদ্ধ অবজেক্ট ওরিয়েন্টেড হতে পারে, আবার অন্যান্য প্যারাডাইমের বৈশিষ্ট্যও অন্তর্ভুক্ত করতে পারে। সফটওয়্যার নকশাকর্তা এবং প্রোগ্রামার প্রয়োজনের ভিত্তিতে নির্ধারণ করেন কোথায় এবং কীভাবে কোন প্যারাডাইম প্রয়োগ করা হবে।
 
<!-- Just as [[software engineering]] (as a process) is defined by differing ''methodologies'', so the [[programming language]]s (as models of computation) are defined by differing ''paradigms''. -->
ঠিক যেভাবে [[সফটওয়্যার ইঞ্জিনিয়ারিং]] প্রক্রিয়াগতভাবে বিভিন্ন ''[[প্রণালীবিজ্ঞান]]'' দ্বারা সংজ্ঞায়িত হয়, তেমনি প্রোগ্রামিং ভাষাসমূহও কম্পিউটেশনের মডেল হিসেবে বিভিন্ন প্যারাডাইম দ্বারা বর্ণিত হয়।
 
অবজেক্ট ওরিয়েন্টেড প্রথায় প্রোগ্রামকে আন্তসম্পর্কিত কিছু অবজেক্টের সংকলন হিসাবে দেখা হয়। ফাংশনাল ধারায় লিখিত কোন প্রোগ্রাম স্টেটবিহীন কিছু ফাংশনের পর্যায়ক্রমিক এক্সিকিউশন হিসেবে পরিচালিত হয়। একাধিক [[প্রসেসর|প্রসেসরধারী]] সিস্টেমে [[প্রসেস ওরিয়েন্টেড প্রোগ্রামিং]] ধারা ব্যবহার করা যায়, যেখানে প্রোগ্রামসমূহকে দেখা হয় যুক্তিগতভাবে শেয়ারকৃত তথ্যের ওপর কর্মরত এক গুচ্ছ সহঘটিত প্রসেস হিসাবে।
 
বিভিন্ন প্যারাডাইমসমূহে সুপরিচিত কিছু প্রোগ্রামিং কৌশলকে উৎসাহিত করে, এবং কিছু কৌশল ব্যবহার বারণ করে। উদাহরণ হিসেবে বলা যায়, বিশুদ্ধ ফাংশনাল প্রোগ্রামিংয়ে সাইড-ইফেক্ট বর্জনীয়, অন্যদিকে [[স্ট্রাকচার্ড প্রোগ্রামিং|স্ট্রাকচার্‌ড প্রোগ্রামিংয়ে]] '''goto''' নির্দেশ ব্যবহার করা অনুচিত। একারণে পুরাতন প্রোগ্রামিংরীতির সাথে পরিচিত অনেক প্রোগ্রামাররা আধুনিক প্যারাডইমসমূহকে অতিরিক্ত কঠোর বলে বিবেচনা করেন।<ref name="rubin87goto">{{cite journal|author=Frank Rubin |date=March 1987 |url=http://www.ecn.purdue.edu/ParaMount/papers/rubin87goto.pdf |title='GOTO Considered Harmful' Considered Harmful |journal=Communications of the ACM |volume=30 |issue=3 |pages=195–196 |doi=10.1145/214748.315722 |deadurl=yes |archiveurl=https://web.archive.org/web/20090320002214/http://www.ecn.purdue.edu/ParaMount/papers/rubin87goto.pdf |archivedate=March 20, 2009}}</ref> কিন্তু এই তথাকথিত "কঠোরতা" সুবিধাজনকও বটে, কারণ কোন প্যারাডাইমের প্রাসঙ্গিক কৌশল ব্যবহার করলে প্রোগ্রামের গঠন এবং আচরণ অনুধাবন করা সহজ হয়, এবং প্রামাণিক উপপাদ্য ও এলগরিদমের সাহায্যে স্বয়ংক্রিয়ভাবে প্রোগ্রাম কোডের সঠিকতা নির্ণয় করাও সরলতর হয়।
 
প্রোগ্রামিং প্যারাডাইমকে ''[[প্রোগ্রামিং মডেল]]'' এর সমতুল্য করেও দেখা যায়, কারণ প্রোগ্রামিং মডেলসমূহ একটি [[এপিআই]] দ্বারা প্রয়োজনমাফিক এক্সিকিউশন মডেল নির্বাচন করে। এমকনি এক্সিকিউশন মডেলের বৈশিষ্ট্যের ভিত্তিতে প্রোগ্রামিং মডেলগুলোকেও একেকটি প্যারাডাইম হিসাবে চিহ্নিত করা সম্ভব।
Programming paradigms can also be compared with ''[[programming model]]s'' which allow invoking an [[execution model]] by using only an API. Programming models can also be classified into paradigms, based on features of the execution model.
 
[[সমান্তরাল কম্পিউটিং|সমান্তরাল কম্পিউটিংয়ে]] প্রোগ্রামিং ভাষার পরিবর্তে প্রোগ্রামিং মডেলের ব্যবহার প্রচলিত। <!--The reason is that details of the parallel hardware leak into the abstractions used to program the hardware. This causes the programmer to have to map patterns in the algorithm onto patterns in the execution model (which have been inserted due to leakage of hardware into the abstraction). As a consequence, no one parallel programming language maps well to all computation problems. It is thus more convenient to use a base sequential language and insert API calls to parallel execution models, via a programming model. Such parallel programming models can be classified according to abstractions that reflect the hardware, such as shared memory, distributed memory with message passing, notions of ''place'' visible in the code, and so forth. These can be considered flavors of programming paradigm that apply to only parallel languages and programming models.-->