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

বিষয়বস্তু বিয়োগ হয়েছে বিষয়বস্তু যোগ হয়েছে
Sammay Sarkar (আলোচনা | অবদান)
Sammay Sarkar (আলোচনা | অবদান)
→‎ইতিহাস: সংশোধন
৬০ নং লাইন:
 
== ইতিহাস ==
প্রোগ্রামিং ইতিহাসের শুরু থেকেই প্রোগ্রামিংয়ের বিভিন্ন প্রক্রিয়াধারা উদ্ভাবিত হয়েছে, যা সমসাময়িককালে কিংবা পরবর্তীকালে অনন্যভাবে চিহ্নিত করা হয়েছে। একটি অন্যতম প্রাম্ভিক ধারা হচ্ছে গঠনগত প্রোগ্রামিং বা [[স্ট্রাকচার্ড প্রোগ্রামিং]], যা ১৯৬০ দশকের এর মধ্যবর্তী সময় থেকে প্রচলিত হয়। "প্রোগ্রামিং প্যারাডাইম" ধারণাটির জন্ম অন্তত ১৯৭৮ সালের দিকে, রবার্ট ডব্লিউ ফ্লয়েডফ্লয়েডের ''দ্যা প্যারাডাইমস অফ প্রোগ্রামিং'' শিরোনামের বক্তৃতা হতে। ফ্লয়েড [[টুরিং পুরষ্কার]] অনুষ্ঠানে বক্তৃতাটি পাঠ করেন, এবং প্যারাডাইম ধারণাটি নিয়ে বিশদ আলোচনা করেন, যা তিনি আবিষ্কার করেছিলেন থমাস কুহ্‌নের লিখিত ''[[দ্যা স্ট্রাকচার অফ সায়েন্টিফিক রেভলুশনস]]'' (১৯৬২) গ্রন্থে।<ref>{{Cite journal |last1= Floyd |first1= R. W. |title= The paradigms of programming |url= http://dl.acm.org/ft_gateway.cfm?id=359140&ftid=289772&dwn=1&CFID=285645736&CFTOKEN=55009136| doi= 10.1145/359138.359140 |journal= Communications of the ACM |volume= 22 |issue= 8 |pages= 455–460 |year= 1979 |pmid= |pmc= }}</ref>
 
=== যান্ত্রিক কোড ===
৭৫ নং লাইন:
* [[পিএল/আই]]{{snd}} বাণিজ্যিক ও বৈজ্ঞানিক উদ্দেশ্যে লিখিত ভাষা, এতে [[পয়েন্টার]] কৌশলের সমর্থন আছে।
* [[বেসিক (প্রোগ্রামিং ভাষা)|বেসিক]]{{snd}} ভাষাটি লিখিত হয়েছিল সাধারণ মানুষকে প্রোগ্রামিংয়ে আগ্রহী করা উদ্দেশ্য নিয়ে।
* [[সি (প্রোগ্রামিং ভাষা)|সি]]{{snd}} হল সার্বজনীন কাজের উদ্দেশ্যে লিখিত একটি প্রোগ্রামিং ভাষা, যা [[ডেনিডেনিস রিচি]] ১৯৬৯ থেকে ১৯৭৩ এর ভিতর রচনা করেন।
 
এ ভাষাগুলোর প্রত্যেকেই পদ্ধতিগত ধারার অনুসারী। অর্থাৎ, সমস্যা সমাধানের জন্য কী কী পদ্ধতি ব্যবহার করতে হবে তাদের ক্রম এবং পদ্ধতিগুলোর আভ্যন্তরীণ ধাপগুলোর প্রতিটির ক্রম এবং কাজ প্রোগ্রামারকে বর্ণনা করতে হয়। এ ধারায় লিখিত প্রোগ্রামের ক্ষমতা এবং এলগরিদমীয় কার্যকারিতা সম্পূর্ণভাবে প্রোগ্রামারের অভিজ্ঞতা এবং নৈপুণ্যের ওপর নির্ভর করে।
৮২ নং লাইন:
{{Main|অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং}}
 
পদ্ধতিগত ভাষাসমূহের প্রচলনের পরে অবজেক্ট-ওরিয়েন্টেড (বা ''ওওপি'') প্রোগ্রামিং ভাষার উৎপত্তি হয়। এদের মধ্যে রয়েছে [[সিমুলা (প্রোগ্রামিং ভাষা)|সিমুলা]], [[স্মলটক]], [[সি++]], [[সি শার্প]], [[আইফেল (প্রোগ্রামিং ভাষা)|আইফেল]], [[পিএইচপি]], [[জাভা (প্রোগ্রামিং ভাষা)|জাভা]], ইত্যাদি। এ ধরণের ভাষায় প্রোগ্রামের তথ্য এবং সেই তথ্যের সংশ্লিষ্ট কোড একত্রিত হয়ে [[অবজেক্ট]] নামের গঠন তৈরি করে থাকে। এর থেকে ওওপি ভাষার আর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য [[এনক্যাপসুলেশন]] উদ্ভুত হয়। এনক্যাপসুলেশনের মূল কথা হচ্ছে, কোন অবজেক্টের অন্তর্গত তথ্য বাইরে থেকে (অন্য অবজেক্ট বা ব্যবহারকারী দ্বারা) সরাসরি পাঠ বা পরিবর্তন করা যাবে না, কেবলমাত্র ওই তথ্যের সংশ্লিষ্ট অবজেক্টটির ''[[মেথড (প্রোগ্রামিং)|মেথড]]'' এর মাধ্যমে করা যাবে। এভাবে নির্দিষ্ট তথ্যের ওপর নির্দিষ্ট অবজপক্টের সম্পূর্ণ এবং একক নিয়ন্ত্রণ প্রতিষ্ঠিত হয়। এর ফলে কোডের অন্যান্য অংশের পরিবর্তন না করেই কোন অবজেক্টের অন্তর্গত কোডে ব্যাপক পরিবর্তন করা সম্ভব হয় (যদি তার মেথডসমূহ অপরিবর্তিত থাকে)। তথাপি, [[রিচার্ড স্টলম্যান]], [[আলেক্সান্দার স্তেপানভ]] এবং আরও অনেকে ওওপি প্রোগ্রামিংয়ের বিপক্ষে মত প্রকাশ করেছেন।<ref>{{cite web|url=http://groups.google.com/group/comp.emacs.xemacs/browse_thread/thread/d0af257a2837640c/37f251537fafbb03?lnk=st&q=%22Richard+Stallman%22+oop&rnum=5&hl=en#37f251537fafbb03|title=Mode inheritance, cloning, hooks & OOP (Google Groups Discussion)}}</ref> এঁরা প্রসিডিউরাল প্রোগ্রামিংয়ের চেয়ে অবজেক্ট-ওরিয়েন্টেড প্যারাডাইমের কার্যকারিতা উন্নত কীনা, তা নিয়েব্যাপারে সন্দিহান। এছাড়া প্রতিটি অবজেক্টের জন্য নিজস্ব মেথডের উপস্থিতির শর্ত অনেকের কাছে [[কোডের বাহুল্য]] বলে প্রতীয়মান হয়। এই বাহুল্য দূরীকরণের একটি উপায় হিসেবে উদ্ভাবিত হয়েছে বহুরূপিতা বা [[পলিমরফিজম (কম্পিউটার বিজ্ঞান)|পলিমরফিজম]]।
 
অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং যেহেতু একটি প্যারাডাইম, কোন প্রোগ্রামিং ভাষা নয়, তাই এই প্যারাডাইম অনুসরণকারী এসেম্বই ভাষা গঠন করাও অসম্ভব নয়। [[উচ্চস্ত্রের এসেম্বলি ভাষা]] (এইচএলএ) এই ধারণাটিরই বাস্তবায়ন করেছে। এটি একটি এসেম্বলি ভাষা হলেও আধুনিক [[টাইপ ব্যবস্থা|ডেটা টাইপ]] এবং প্রোগ্রামঅবজেক্ট ভিত্তিক প্রোগ্রামিং কৌশল{{snd}} ব্যবহারে সক্ষম।
 
<!--Thus, differing programming paradigms can be seen rather like ''motivational [[meme]]s'' of their advocates, rather than necessarily representing progress from one level to the next{{Citation needed|date=March 2018}}. Precise comparisons of the efficacy of competing paradigms are frequently made more difficult because of new and differing terminology applied to similar entities and processes together with numerous implementation distinctions across languages. -->