پارادایم برنامهنویسی
پارادایمهای برنامهنویسی (به انگلیسی: Programming Paradigms)، روشهای دستهبندی زبانهای برنامهنویسی براساس ویژگیهایشان است. زبانها را میتوان به چندین پارادایم دستهبندی نمود.
دغدغه اصلی برخی از پارادایمها عمدتاً مربوط به پیامدهای مدل اجرایی زبان است، همچون این که آیا اثرات جانبی مجاز باشند یا آیا دنباله ای از عملیات توسط مدل اجرایی تعریف شدهاست یا خیر. پارادایمهای دیگر عمدتاً با راههای سازماندهی کد چون دستهبندی یک کد به واحدهای مختلف و تغییرات کد بر روی هر کدام از این واحدها میپردازند. باز پارادایمهای دیگری نیز وجود دارند که عمدتاً دغدغهشان سبک، نحو و گرامر زبان هاست.
پارادایمهای برنامهنویسی رایج شامل این مواردند:
- دستوری که در آن برنامهنویس به ماشین دستور میدهد که چگونه حالت خود را تغییر دهد،
- اعلانی، که در آن برنامهنویس صرفاً خواص مربوط به نتایج مطلوبش را اعلان میکند، نه چگونگی محاسباتش را.
- تابعی، که در آن نتیجه مطلوب به صورت مقدار مربوط به بهکارگیری یک سری از توابع، اعلان میگردد.
- منطقی، که در آن نتیجه مطلوب به صورت جواب به سؤالی در مورد دستگاهی از حقایق و قواعد اعلان میگردد.
- ریاضیاتی، که در آن نتیجه مطلوب به صورت راه حلی از یک مسئله بهینهسازی اعلان میگردد.
- واکنشی، که در آن نتیجه مطلوب به صورت جریانهای دادهای و انتشار تغییرات اعلان میشود.
مرور کلی
یک زبان برنامهنویسی ممکن است یک یا چند پارادایم برنامهنویسی را پشتیبانی نماید. برای مثال، برنامههای نوشته شده با سی++ میتوانند کاملاً به صورت رویهای باشند یا کاملاً منطبق بر پارادایم برنامهنویسی شئگرا که در تضاد کامل با پارادایم رویهای بوده یا حتی حاوی عناصری از هر دو پارادایم باشند. تصمیمگیری برای چگونگی استفاده از عناصر پارادایمهای برنامهنویسی برعهده طراح برنامه یا برنامهنویس میباشد.
نمونههای مهم
- برنامهنویسی دستوری در تضاد با برنامهنویسی تابعی
- برنامهنویسی رویهای در تضاد با برنامهنویسی شئگرا
- برنامهنویسی منطقی
منابع
- ↑ Nørmark, Kurt. Overview of the four main programming paradigms. Aalborg University, 9 May 2011. Retrieved 22 September 2012.
- ↑ Frans Coenen (1999-10-11). "Characteristics of declarative programming languages". cgi.csc.liv.ac.uk. Retrieved 2014-02-20.
- ↑ Michael A. Covington (2010-08-23). "CSCI/ARTI 4540/6540: First Lecture on Symbolic Programming and LISP" (PDF). University of Georgia. Archived from the original (PDF) on 2012-03-07. Retrieved 2013-11-20.