تفاوت بین برنامه‌نویسی اعلانی و دستوری

ترجمه و تالیف : فاطمه شیرزادفر
تاریخ انتشار : 19 فروردین 99
خواندن در 2 دقیقه
دسته بندی ها : برنامه نویسی

برنامه‌نویسی به ما این امکان را می‌دهد، که یک مشکل خاص را به روش‌های مختلف حل کنیم. ما آزادیم که از روش‌های موجود استفاده کنیم،‌ یا حتی از روش خاص خودمان استفاده کنیم!

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

برنامه‌نویسی دستوری (Imperative programming)

برنامه‌نویسی شی‌گرا (object-oriented)

برنامه‌نویسی رویه‌ای (procedural)

برنامه‌نویسی اعلانی (Declarative programming)

برنامه‌نویسی تابعی (functional)

برنامه‌نویسی منطقی (logic)

برنامه‌نویسی سمبلیک (Symbolic programming)

برنامه‌نویسی موازی(Parallel programming)

امروز در مورد برنامه‌نویسی اعلانی و دستوری و تفاوت بین آن‌ها صحبت خواهم کرد.

برنامه‌نویسی اعلانی چیست؟

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

const sum = a => b => a + b; 

console.log (sum (5) (3)); // 8

برنامه‌نویسی دستوری چیست؟

برنامه‌نویسی دستوری یک پارادایم دیگر از برنامه‌نویسی است،‌که برنامه‌نویس،‌ قدم به قدم، به چگونگی دستیابی به یک نتیجه خاص، توجه می‌کند.

در این روش هم، برنامه نویس به دنبال خروجی است،‌اما برای کامپایلر مشخص می‌کند که کارها را، با روش مشخصی انجام دهد، تا نتیجه‌ی مورد انتظار را بدست آورد.

class Number {
constructor (number = 0) {
this.number = number;
}
add (x) {
this.number = this.number + x;
}
}
const myNumber = new Number (5);
myNumber.add (3);
console.log (myNumber.number); // 8

حال،‌اگر هنوز هم در رابطه با این دو پارادایم سردرگم هستید،‌ اجازه دهید برای شما یک مثال ساده بزنم تا درک بهتری از آن پیدا کنید. خب فرض کنید می‌خواهید کاری را برون سپاری کنید(outsource – بجای تولید یا انجام کار درون سازمان،‌ آن را به منابع خارج از شرکت بسپارید)، همچنین می‌دانید که به این مهارت،‌به مدت طولانی نیاز دارید و بین برون‌سپاری کار، یا یادگرفتن آن مهارت سردرگم هستید.

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

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

کدام یک را باید در پروژه‌های خود دنبال کنید؟

هر دو روش مزایا و معایبی دارد. اما این کاملاً به شما بستگی دارد که می‌خواهید کدام را انتخاب کنید و از آن استفاده کنید. در ادامه نکاتی را برای شما می‌گویم،‌که به شما در گرفتن تصمیمی درست کمک می‌کند.

قابلیت استفاده مجدد (Reusability)

برنامه‌نویسی اعلانی به شما امکان نوشتن general function ها را می‌دهد،‌که می‌توانید برای موارد مختلفی که در نظر دارید از آن استفاده کنید. این قابلیت باعث پیشرفت سریع‌تر برنامه شما می‌شود،‌ و همچنین می‌تواند در دسترس دیگران هم قرار گیرد،‌ اما در برنامه‌نویسی دستوری کد شما فقط برای آن پروژه یا برنامه خاص قابل اجرا است.

احتمال خطا

برنامه‌نویسی اعلانی، شما را ملزم به نوشتن توابع می‌کند تا وضعیت آن‌ها را همانند برنامه‌نویسی تابعی (functional programming) تغییر ندهید. این کار احتمال خطاها را کاهش می‌دهد و باعث می‌شود برنامه شما پایدارتر شود. حذف عوامل جانبی از فانکشن‌های شما،‌ کمک می‌کند تا بدانید دقیقاً چه چیزی وارد می‌شود،‌و خروجی آن چیست. بنابراین برنامه را قابل پیش‌بینی‌تر می‌کند.

کنترل

به منظور دستیابی به نتایج مطلوب،‌ استفاده از توابع آماده در برنامه‌نویسی اعلانی،‌ معمول است. با وجود این،‌ ممکن است نیاز به تغییرات خاصی در فانکشن برای بدست آوردن نتیجه‌ی مطلوب ،‌ داشته باشید. اما معمولاً آنطور که در برنامه‌نویسی دستوری به همه چیز کنترل دارید ،‌در برنامه‌نویسی اعلانی ندارید.

سخن پایانی

امیدوارم این مقاله،‌به شما در درک تفاوت این دو پارادیم کمک کرده باشد. در هر صورت این به شما و نیاز شما بستگی دارد که کدام یک را انتخاب کنید. حتی می‌توانید این دو را ترکیب کنید. به هرحال خودتان مسئول هستید!

منبع

گردآوری و تالیف فاطمه شیرزادفر
آفلاین
user-avatar

تجربه کلمه‌ای هست که همه برای توصیف اشتباهاتشون ازش استفاده میکنن، و من همیشه دنبال اشتباهات جدیدم! برنامه‌نویس هستم و لینوکس‌ دوست

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید