طراحی زبان های برنامه سازی
درس متنی
جلسه دوم
پارادایمهای برنامهنویسی: رویهای، شیءگرا، تابعی و منطقی
زمان مطالعه
20 دقیقه
جلسه ۲: پارادایمهای برنامهنویسی
(رویهای، شیءگرا، تابعی، منطقی)
۱. مقدمه
پارادایمهای برنامهنویسی شیوههای متفاوتی برای فکر کردن دربارهٔ ساخت برنامه و حل مسئله هستند. هر پارادایم مجموعهای از مفاهیم، ساختارها و الگوهای ذهنی را ارائه میدهد که برنامهنویس بر اساس آنها برنامه مینویسد. زبانها ممکن است یکپارادایمی یا چندپارادایمی باشند.
۲. پارادایم رویهای (Procedural)
مفهوم اصلی
- برنامه به صورت دنبالهای از دستورات نوشته میشود.
- مشکل به چند رویه/تابع تقسیم میشود.
- داده و عملیات جدا از هم هستند.
ویژگیها
- اجرای خطی و گامبهگام.
- استفاده از متغیرها، حلقهها، شرطها.
- تمرکز بر «چگونه انجام دادن کار».
مثال زبانها
C، Pascal، Fortran، بخش پایهٔ Python.
مزایا
- ساده و قابل فهم برای اکثر مسائل پایه.
- مناسب برای الگوریتمهای مرحلهبهمرحله.
معایب
- پیچیدگی کنترل حالت (state) زیاد میشود.
- مدیریت دادهها دشوارتر است.
۳. پارادایم شیءگرا (Object-Oriented)
مفهوم اصلی
- برنامه از اشیا تشکیل شده که داده + رفتار را همراه دارند.
- اشیا بر پایهٔ کلاسها ساخته میشوند.
اصول مهم
- Encapsulation: پنهانسازی دادهها
- Inheritance: ارثبری
- Polymorphism: چندریختی
- Abstraction: انتزاع
دیدگاه
- تمرکز بر «مدلسازی چیزهای دنیای واقعی».
مثال زبانها
Java، C++، C#, Python (پشتیبانی قوی)، Ruby.
مزایا
- ساختارمند، مناسب برای پروژههای بزرگ.
- امکان استفاده مجدد از کد.
معایب
- یادگیری اولیه سختتر.
- برخی مسائل ساختار شیءگرا نمیطلبند.
۴. پارادایم تابعی (Functional)
مفهوم اصلی
- برنامه مجموعهای از توابع خالص است.
- پرهیز از تغییر حالت و دادهٔ قابلتغییر (immutable data).
- «چه چیزی میخواهیم» مهمتر از «چگونه انجام میشود».
ویژگیها
- توابع خالص (خروجی فقط به ورودی بستگی دارد).
- عدم وجود side effect.
- پشتیبانی قوی از بازگشت (recursion).
مثال زبانها
Haskell، Lisp، Scheme، OCaml، Scala، Rust (تا حدی)، Python (تا حدی).
مزایا
- کد قابل پیشبینی و تست آسان.
- مناسب برای پردازش داده، محاسبات موازی و توزیعشده.
معایب
- سختی برای افرادی که به سبک امری عادت دارند.
- گاهی کارایی پایینتر در کارهای نزدیک به سختافزار.
۵. پارادایم منطقی (Logic Programming)
مفهوم اصلی
- برنامه مجموعهای از قوانین و حقایق منطقی است.
- کامپیوتر با استفاده از این قوانین، نتیجه را استنتاج میکند.
دیدگاه
- به جای تعیین نحوهٔ حل مسئله، چه چیزی درست است را بیان میکنیم.
- مبتنی بر منطق گزارهای و مرتبه اول.
مثال زبانها
Prolog، Datalog.
ساختار کلی
- Fact: تعریف حقیقت
- Rule: بیان رابطه
- Query: پرسش از سیستم
مزایا
- مناسب برای مسائل جستجو، اثبات، هوش مصنوعی، برنامهریزی.
- کد بسیار فشرده و بیانگر.
معایب
- برای مسائل عددی و الگوریتمهای گامبهگام ایدهآل نیست.
- یادگیری سبک تفکر منطقی زمانبر است.
۶. مقایسه کوتاه چهار پارادایم
- رویهای: تمرکز بر دستورها و مراحل
- شیءگرا: تمرکز بر اشیا و تعامل آنها
- تابعی: تمرکز بر توابع خالص و بدون حالت
- منطقی: تمرکز بر حقایق و قوانین و استنتاج