به گزارش «خبرنامه دانشجویان ایران»، از زمان انتشار اولین زبان برنامه نویسی سطح بالا، یعنی زبان Plankalkül و سپس انتشار زبانهایی مانند: FORTRAN و Common Lisp، این نیاز ایجاد شد که بدانیم زبانهای برنامهنویسی چه هستند و انواع کدها برای برنامهنویسان چه معنایی دارند. این نیاز با تعریف پارادایم برنامه نویسی برطرف شد. در این نوشته که به کمک سایت همیار آی تی برای شما تهیه شده، ابتدا با مفهوم پارادایم در زمینههای مختلف و سپس با انواع پارادایمهای برنامهنویسی آشنا میشویم.
تعریف پارادایم
قبل از هر چیز بد نیست بدانیم پارادایم چیست ؟ مفهوم پارادایم ابتدا در دنیای فلسفه متولد شد و سپس در علوم اجتماعی و علوم کاربردی موضوعیت پیدا کرد. پارادایم روشی برای درک ایدهها، مفاهیم و اندیشهها است. در زمینه علوم، یک پارادایم علمی، چارچوبی است که همه دیدگاههای رایج در مورد یک موضوع دربرمیگیرد و تعیین میکند که تحقیقات باید در چه مسیری باشند و چگونه انجام شوند.
یکی از متفکران بزرگ فلسفه علم با نام توماس کوهن در این باره گفته است: یک پارادایم شامل "شیوههایی است که یک رشته علمی را در یک مقطع زمانی مشخص تعریف میکند." بنابراین میتوان گفت: پارادایمها شامل همه الگوها، نظریهها، روشها و استانداردهایی هستند که به ما امکان میدهند یک نتیجه تجربی را به یک حوزه خاص اختصاص بدهیم یا ندهیم. بنابراین پارادایم راهی برای دستهبندی پیشنهاد میکند.
پارادایم برنامه نویسی چیست؟
هر زبان برنامهنویسی برای اجرا از مجموعهای از روشها استفاده میکند که به آن روششناسی زبان برنامهنویسی میگوییم. پارادایم برنامهنویسی پایبند به این روششناسی است. پارادایمهای برنامهنویسی از این نظر اهمیت دارند که زبان برنامهنویسی و نحوه عملکرد آن را تعریف میکنند.
پارادایمهای برنامهنویسی هرکدام دارای مزایا و معایبی هستند که باعث انتخاب آنها در موارد مختلف میشود. قاعده اساسی در بررسی پارادایمها این است که بفهمیم هرکدام برای انجام چه کاری مناسب هستند. این عقیده وجود دارد که اکثر زبانهای برنامهنویسی مدرن، همهمنظوره هستند و تقریبا میتوانند هرکاری را انجام دهند، اما برای مثال، توسعه یک بازی، در یک زبان برنامهنویسی کاربردی، دشوارتر از یک زبان شیگرا است.
شیوه دستهبندی پارادایم برنامه نویسی
در یک تعریف دیگر میتوانیم بگوییم: پارادایم برنامهنویسی یک رویکرد خاص برای حل مشکل با استفاده از برخی از زبانهای برنامه نویسی است. همچنین میتوان گفت پارادایم برنامهنویسی روشی برای حل یک مشکل با استفاده از ابزارها و تکنیکهایی است که در دسترس ما قرار دارند. زبانهای برنامهنویسی از پارادایمهای مختلفی استفاده میکنند که متخصصان آنها را به دو گروه پارادایمی برنامهنویسی دستوری و برنامهنویسی اعلانی تقسیم کردهاند.
پارادایمهای برنامهنویسی دستوری
پارادایم برنامهنویسی دستوری (Imperative programming paradigm) یکی از قدیمی ترین الگوهای برنامه نویسی است که خود به 3 پارادایم دیگر تقسیم میشود. این پارادایم ارتباط نزدیکی با معماری ماشین (machine architecture) دارد و بر اساس معماری فون نویمان (Von Neumann) طراحی شده است.
این پارادایم با تغییر حالت برنامه بهصورت گام به گام و از طریق دستورها کار میکند. تمرکز اصلی پارادایم برنامهنویسی دستوری بر شیوه دستیابی به هدف است. این پارادایم شامل چندین عبارت است و پس از اجرا و دستیابی به همه نتایج، ذخیره میشود. پارادایم برنامهنویسی دستوری به سه پارادایم دیگر تقسیم میشود که با آنها آشنا میشویم.
پارادایم برنامه نویسی رویهای
پارادایم برنامه نویسی رویهای (Procedural programming paradigm) از نظر روششناسی بر اساس مفهوم فراخوانی روندها کار میکند. تفاوت چندانی بین پارادایم رویهای و دستوری وجود ندارد؛ این پارادایم از قابلیت استفاده مجدد از کد برخوردار است.
پاردایم برنامه نویسی شیگرا
پارادایم برنامه نویسی شیگرا (Object oriented programming) مجموعه ای از کلاسها یا بلوکها و موضوعات است که برای ارتباط در نظر گرفته شدهاند. هریک از اجزای این ساختار را شیء مینامند. در این پارادایم، دادهها و توابعی که بر روی آنها عمل میکنند، در قالبی به نام شیء در کنار هم قرار میگیرند. تاکید در این پارادایم بیشتر بر روی دادهها است و نه رویه. امنیت دادهها، ویژگی ارثبری، قابلیت استفاده مجدد از کد و ویژگیهای انعطافپذیری و انتزاع از مزایای این پارادایم است.
پارادایم پردازش موازی
پارادایم پردازش موازی (Parallel processing approach) بهمعنای پردازش دستورالعملهای برنامه با تقسیم آنها بین چندین پردازنده است. یک سیستم پردازش موازی دارای تعداد زیادی پردازنده با هدف اجرای برنامه در زمان کمتر با روش تقسیم کار است. زبانهای برنامهنویسی NESL، C و C++ را میتوان از برخی لحاظ به این پارادایم نسبت داد.
پارادایمهای برنامهنویسی اعلانی
پارادایم برنامه نویسی اعلانی (Declarative programming paradigm) سبکی از برنامهنویسی است که منطق محاسبه را بدون صحبت در مورد جریان کنترل آن بیان میکند. در علوم رایانه مبتنیبر برنامهنویسی اعلانی، اغلب برنامهها همچون نظریههای منطقی توصیف میشوند. نوشتن برنامههای موازی با این پارادایم آسانتر از روشهای دیگر است. در این پارادایم، تمرکز بر آنچه باید انجام شود است تا بر نحوه انجام آن. این پارادایم نیز به 3 پارادایم گوناگون تقسیمبندی میشود که آنها را با هم بررسی میکنیم.
پارادایم برنامه نویسی منطقی
پارادایم برنامه نویسی منطقی (Logic programming paradigm) را میتوان را مدل انتزاعی محاسبه نامید. این مدل میتواند مسالههای منطقی مانند پازل و مجموعهها را حل کند. در برنامهنویسی منطقی ما یک پایگاه دانش داریم که آن را از قبل میشناسیم و به همراه آن، پرسش و پایگاه دانش که به ماشین داده می شود، نتیجه را ایجاد میکند. در زبانهای برنامهنویسی معمولی، چنین مفهومی از پایگاه دانش وجود ندارد. مفاهیم هوش مصنوعی و یادگیری ماشین به الگوی این پارادایم شباهتهایی دارند. در برنامهنویسی منطقی تاکید اصلی بر پایه دانش و مساله یا مشکل است. اجرای برنامه در این الگو بسیار شبیه به اثبات یک گزاره ریاضی است.
پارادایم برنامه نویسی تابعی
پارادایم برنامه نویسی تابعی (Functional programming paradigm) الگوهای برنامهنویسی تابعی ریشه در ریاضیات دارد و مستقل از زبان است. اصل اساسی این پارادایم، اجرای مجموعهای از توابع ریاضی است. مدل مرکزی برای انتزاع، تابع است که برای محاسباتی ویژه در نظر گرفته شده است و نه برای ساختار داده. دادهها بهراحتی با توابع مرتبط میشوند. تابع را میتوان با مقادیر آنها بدون تغییر معنای برنامه، جایگزین کرد. برخی از زبانها مانند پرل (Perl) و جاوا اسکریپت (javascript) بیشتر از این پارادایم استفاده میکنند.
پارادایم برنامه نویسی پایگاه داده
پارادایم برنامه نویسی پایگاه داده یا داده محور (Database/Data driven programming approach) روشی مبتنیبر دادهها و حرکات آنها است. دستورات برنامه به جای کدگذاری مراحل، با دادهها تعریف میشوند. یک برنامه پایگاه داده، قلب یک سیستم اطلاعات تجاری است و عملکردهای ایجاد پرونده، ورود داده، بهروزرسانی، جستجو و گزارش را ممکن میسازد. چندین زبان برنامهنویسی وجود دارد که بیشتر با استفاده از این پارادایم توسعه یافتهاند که از جمله آنها میتوان به SQL اشاره کرد.
زبانهای برنامهنویسی و پارادایمهایی که پشتیبانی میکنند
یک زبان برنامهنویسی ممکن است از یک یا چند پارادایم برنامه نویسی پشتیبانی کند. برای مثال، برنامههای نوشته شده با زبان سی++ میتوانند کاملا به صورت رویهای باشند یا کاملا منطبق بر پارادایم برنامهنویسی شیءگرا؛ درحالیکه این دو پارادایم بهطور کامل در تضاد با یکدیگر هستند؛ حتی ممکن است چنین برنامههایی حاوی عناصری از هر دو پارادایم باشند. تصمیمگیری برای چگونگی استفاده از عناصر پارادایمهای برنامهنویسی برعهده طراح برنامه یا برنامهنویس است، اگر دوست دارید بیشتر با دنیای فناوری و کامپیوترها آشنا شوید، همین حالا به سایت همیار آی تی سر بزنید و آموزشهای رایگان آن را بخوانید!