ScholarGate
دستیار

پارادایم‌های زبان

پارادایم‌های برنامه‌نویسی، سبک‌های بنیادی هستند که نحوه بیان محاسبات را سازماندهی می‌کنند، از تغییر حالت دستوری (imperative state mutation) گرفته تا مدل‌های تابعی، منطقی و اعلانی.

یافتن موضوع با PaperMindبه‌زودیFind papers & topics
Tools & resources
دریافت اسلایدها
Learn & explore
ویدیوبه‌زودی

Definition

پارادایم برنامه‌نویسی مجموعه‌ای منسجم از مفاهیم و اصول ساختاردهی برای سازماندهی محاسبات در یک زبان است که واحدهای اساسی یک برنامه (دستورات، عبارات، اشیاء، روابط) و نحوه ترکیب آن‌ها را تعریف می‌کند.

Scope

این حوزه پارادایم‌های اصلی زبان‌های برنامه‌نویسی و مدل‌های محاسباتی زیربنایی آن‌ها را پوشش می‌دهد: برنامه‌نویسی دستوری و شی‌گرا که بر اساس حالت تغییرپذیر و ارسال پیام ساخته شده‌اند؛ برنامه‌نویسی تابعی که بر اساس ارزیابی عبارت و توابع مرتبه بالاتر ساخته شده است؛ برنامه‌نویسی منطقی و محدودیت‌گرا که بر اساس روابط و جستجو ساخته شده است؛ و فرابرنامه‌نویسی (metaprogramming) که در آن برنامه‌ها، برنامه‌های دیگر را دستکاری می‌کنند. این بخش به بررسی چگونگی شکل‌دهی پارادایم‌ها به طراحی زبان، مصالحه‌هایی که آن‌ها در بر می‌گیرند، و چگونگی ترکیب آن‌ها در زبان‌های چندپارادایمی مدرن می‌پردازد.

Sub-topics

Core questions

  • چه چیزی یک پارادایم را از دیگری متمایز می‌کند و آیا این تمایزات واضح هستند یا صرفاً تأکیدی؟
  • پارادایم‌ها چگونه بر صحت برنامه، پیمانه‌بندی و استدلال تأثیر می‌گذارند؟
  • آیا سبک‌های دستوری و اعلانی می‌توانند متحد شوند و با ترکیب آن‌ها چه چیزی به دست می‌آید یا از دست می‌رود؟
  • مدل محاسباتی زیربنایی (ماشین فون نویمان، حساب لامبدا، رزولوشن) چگونه بر یک پارادایم تأثیر می‌گذارد؟

Key theories

برنامه‌نویسی تابعی به عنوان جبر برنامه‌ها
بکوس استدلال کرد که برنامه‌نویسی تابعی و مبتنی بر ترکیب‌کننده، زبان‌ها را از تنگنای فون نویمان با ارائه جبر قوانین معادله‌ای برای استدلال و تبدیل، رها می‌کند.
الگوریتم = منطق + کنترل
جداسازی کوالسکی بین مشخصات منطقی یک مسئله و استراتژی کنترلی مورد استفاده برای حل آن، پارادایم اعلانی/منطقی را پایه‌گذاری می‌کند و آنچه را که آن را از کد رویه‌ای متمایز می‌کند، روشن می‌سازد.
چارچوب زبان هسته چندپارادایمی
ون روی و هاریدی پارادایم‌ها را به عنوان بسط‌های افزایشی یک زبان هسته کوچک ارائه می‌دهند و نشان می‌دهند که چگونه مفاهیمی مانند حالت، همزمانی و تنبلی را می‌توان اضافه یا حذف کرد تا هر پارادایم بازیابی شود.

Clinical relevance

انتخاب پارادایم پیامدهای عملی برای مهندسی نرم‌افزار دارد: سبک‌های تابعی و اعلانی به استدلال معادله‌ای، قابلیت آزمایش و موازی‌سازی کمک می‌کنند، در حالی که تجزیه شی‌گرا از پیمانه‌بندی در مقیاس بزرگ پشتیبانی می‌کند. زبان‌های مدرن به طور فزاینده‌ای پارادایم‌ها را با هم ترکیب می‌کنند، بنابراین درک مصالحه‌های آن‌ها به انتخاب زبان و طراحی اصولی کمک می‌کند.

History

برنامه‌نویسی دستوری از معماری فون نویمان با برنامه ذخیره‌شده و زبان‌های اولیه مانند فرترن و الگول نشأت می‌گیرد. لیسپ (۱۹۵۸) ایده‌های تابعی ریشه‌دار در حساب لامبدا را معرفی کرد. دهه ۱۹۷۰ شاهد برنامه‌نویسی منطقی (پرولوگ) و ظهور برنامه‌نویسی ساختاریافته و سپس شی‌گرا (سیمولا، اسمال‌تاک) بود. سخنرانی جایزه تورینگ بکوس در سال ۱۹۷۷ انتقاد تابعی از سبک دستوری را متبلور کرد و دهه‌های بعدی زبان‌های چندپارادایمی فزاینده‌ای را تولید کردند.

Debates

دستوری در مقابل اعلانی به عنوان اصل سازماندهی اولیه
بحثی طولانی‌مدت، صراحت و کنترل عملکرد کد دستوری را در برابر مزایای استدلال و ترکیب‌پذیری سبک‌های اعلانی و تابعی می‌سنجد؛ اکثر زبان‌های مدرن با پشتیبانی از هر دو، این مسئله را حل می‌کنند.

Key figures

  • John Backus
  • Robert Kowalski
  • Peter Van Roy
  • Harold Abelson
  • Gerald Jay Sussman

Related topics

Seminal works

  • backus1978
  • kowalski1979
  • vanroy2004
  • abelson1996

Frequently asked questions

آیا برنامه‌نویسی شی‌گرا یک پارادایم جداگانه از برنامه‌نویسی دستوری است؟
برنامه‌نویسی شی‌گرا معمولاً به عنوان یک رشته ساختاردهی در نظر گرفته می‌شود که بر روی پارادایم دستوری قرار گرفته است: این پارادایم حالت تغییرپذیر را در اشیاء با رفتار کپسوله‌شده سازماندهی می‌کند، اما همچنان به تغییر حالت و توالی وابسته است.
آیا پارادایم‌ها متقابلاً انحصاری هستند؟
خیر. بسیاری از زبان‌های پرکاربرد چندپارادایمی هستند و ویژگی‌های تابعی، شی‌گرا و دستوری را ترکیب می‌کنند تا برنامه‌نویسان بتوانند مناسب‌ترین سبک را برای هر کار انتخاب کنند.

Methods for this concept

Related concepts