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

বিষয়বস্তু বিয়োগ হয়েছে বিষয়বস্তু যোগ হয়েছে
Sammay Sarkar (আলোচনা | অবদান)
→‎শীর্ষ: সংশোধন
Sammay Sarkar (আলোচনা | অবদান)
→‎সংক্ষিপ্ত বিবরণ: অনুবাদ (চলমান)
৩৫ নং লাইন:
 
== সংক্ষিপ্ত বিবরণ ==
 
[[Image:Programming paradigms.svg|thumb|250px|left|পিটার ভ্যান রয়-এর মতে প্রোগ্রামিং প্যারাডাইমসমূহের বিন্যাস<ref>{{Cite web
|url= http://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf
৪২ ⟶ ৪৩ নং লাইন:
}}</ref>{{rp|5}}<ref name="Van-RoyHaridi2004">{{cite book|author1=Peter Van-Roy|author2=Seif Haridi|title=Concepts, Techniques, and Models of Computer Programming|url=https://books.google.com/books?id=_bmyEnUnfTsC|year=2004|publisher=MIT Press|isbn=978-0-262-22069-9}}</ref>]]
 
কিছু কিছু প্রোগ্রামিং ভাষা নির্দিষ্ট প্যারাডাইম-নির্ভর ([[স্মলটক]] অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং সমর্থন করে, আবার [[হ্যাসকেল]] ফাংশনাল প্রোগ্রামিং-ভিত্তিক), আবার কিছু কিছু ভাষা একাধিক প্যারাডাইমের সমর্থন দেয় (যেমন [[অবজেক্ট প্যাসকেল]], [[সি++]], [[জাভা (প্রোগ্রামিং ভাষা)|জাভা]], [[সি শার্প]], [[স্কালা (প্রোগ্রামিং ভাষা)|স্কালা]], [[ভিজুয়াল বেসিক]], [[কমন লিস্প]], [[স্কিম (প্রোগ্রামিং ভাষা)|স্কিম]], [[পার্ল (প্রোগ্রামিং ভাষা)|পার্ল]], [[পিএইচপি]], [[পাইথন (প্রোগ্রামিং ভাষা)|পাইথন]], [[রুবি (প্রোগ্রামিং ভাষা)|রুবি]], [[এফ শার্প]])। সি++, অবজেক্ট প্যাকেল বা পিএইচপিতে লিখিত প্রোগ্রাম বিশুদ্ধ প্রসিডিউরাল, অথবা বিশুদ্ধ অবজেক্ট ওরিয়েন্টেড হতে পারে, আবার অন্যান্য প্যারাডাইমের বৈশিষ্ট্যও অন্তর্ভুক্ত করতে পারে। সফটওয়্যার নকশাকর্তা এবং প্রোগ্রামার প্রয়োজনের ভিত্তিতে নির্ধারণ করেন কোথায় এবং কীভাবে কোন প্যারাডাইম প্রয়োগ করা হবে।
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''. Some languages are designed to support one paradigm ([[Smalltalk]] supports object-oriented programming, [[Haskell (programming language)|Haskell]] supports functional programming), while other programming languages support multiple paradigms (such as [[Object Pascal]], [[C++]], [[Java (programming language)|Java]], [[C Sharp (programming language)|C#]], [[Scala (programming language)|Scala]], [[Visual Basic]], [[Common Lisp]], [[Scheme (programming language)|Scheme]], [[Perl]], [[PHP]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], [[Wolfram Language]], [[Oz (programming language)|Oz]], and [[F Sharp (programming language)|F#]]). For example, programs written in C++, Object Pascal or PHP can be purely [[procedural programming|procedural]], purely [[object-oriented programming|object-oriented]], or can contain elements of both or other paradigms. Software designers and programmers decide how to use those paradigm elements.
<!-- 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''. -->
 
অবজেক্ট ওরিয়েন্টেড প্রথায় প্রোগ্রামকে আন্তসম্পর্কিত কিছু অবজেক্টের সংকলন হিসাবে দেখা হয়। ফাংশনাল ধারায় লিখিত কোন প্রোগ্রাম স্টেটবিহীন কিছু ফাংশনের পর্যায়ক্রমিক এক্সিকিউশন হিসেবে পরিচালিত হয়। একাধিক [[প্রসেসর|প্রসেসরধারী]] সিস্টেমে [[প্রসেস ওরিয়েন্টেড প্রোগ্রামিং]] ধারা ব্যবহার করা যায়, যেখানে প্রোগ্রামসমূহকে দেখা হয় যুক্তিগতভাবে শেয়ারকৃত তথ্যের ওপর কর্মরত এক গুচ্ছ সহঘটিত প্রসেস হিসাবে।
In object-oriented programming, programs are treated as a set of interacting objects. In [[functional programming]], programs are treated as a sequence of stateless function evaluations. When programming computers or systems with many processors, in [[process-oriented programming]], programs are treated as sets of concurrent processes acting on logically shared [[data structure]]s.
 
Manyবিভিন্ন programmingপ্যারাডাইমসমূহে paradigmsসুপরিচিত areকিছু asপ্রোগ্রামিং wellকৌশলকে knownউৎসাহিত forকরে, theএবং techniquesকিছু theyকৌশল ''forbid''ব্যবহার asবারণ forকরে। thoseউদাহরণ theyহিসেবে ''enable''. Forবলা instanceযায়, pureবিশুদ্ধ functionalফাংশনাল programmingপ্রোগ্রামিংয়ে disallowsসাইড-ইফেক্ট useবর্জনীয়, ofঅন্যদিকে [[side-effectস্ট্রাকচার্ড (computer science)প্রোগ্রামিং|side-effects]], while [[structuredস্ট্রাকচার্‌ড programmingপ্রোগ্রামিংয়ে]] disallows use of the [['''goto]]''' statement.নির্দেশ Partlyব্যবহার forকরা thisঅনুচিত। reason,একারণে newপুরাতন paradigmsপ্রোগ্রামিংরীতির areসাথে oftenপরিচিত regardedঅনেক asপ্রোগ্রামাররা doctrinaireআধুনিক orপ্যারাডইমসমূহকে overlyঅতিরিক্ত rigidকঠোর byবলে thoseবিবেচনা accustomed to earlier styles.করেন।<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> Yetকিন্তু এই তথাকথিত "কঠোরতা" সুবিধাজনকও বটে, avoidingকারণ certainকোন techniquesপ্যারাডাইমের canপ্রাসঙ্গিক makeকৌশল itব্যবহার easierকরলে toপ্রোগ্রামের understandগঠন programএবং behaviorআচরণ অনুধাবন করা সহজ হয়, andএবং toপ্রামাণিক [[Automatedউপপাদ্য theorem proving|proveএলগরিদমের theorems]]সাহায্যে aboutস্বয়ংক্রিয়ভাবে programপ্রোগ্রাম correctness.কোডের সঠিকতা নির্ণয় করাও সরলতর হয়।
 
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.
 
For [[parallelসমান্তরাল computingকম্পিউটিং|সমান্তরাল কম্পিউটিংয়ে]], usingপ্রোগ্রামিং aভাষার programmingপরিবর্তে modelপ্রোগ্রামিং insteadমডেলের of a language is common.ব্যবহার প্রচলিত। <!--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. -->
 
== বিরোধিতা ==