سلام؛محمدمهدی هستم برنامه نویس موبایل.اما بعد...
اگر بخوام مثل خارجی ها TL;DR طور برنامه نویسی imperative و declarative رو توضیح بدم:
این دوتا paradigm یا الگوی زبان های برنامهنویسی هستند؛ در برنامه نویسی imperative یا دستوری ما در پروسه یا مراحل انجام کار و نحوۀ انجام کار میتونیم دخالت کنیم ولی در برنامه نویسی declarative یا اعلانی ما فقط میگیم چی میخوایم و با سیستم به صورت Black Box و هلو برو تو گلو رفتار میکنیم.
در واقع در برنامه نویسی اعلانی ما فقط میگیم چی میخوایم ولی در برنامه نویسی دستوری ما در چگونگی به دست اومدن نتایج هم میتونیم دخالت کنیم.
اگر بخوام یه مثال بزنم که قابل لمس تر باشه مثال ساندویچی رو میزنم.بعضی ساندویچی ها هست که یه منو داره و از منو سفارش میدیم. ما در این نوع سفارش دادن در پروسۀ آماده سازی محصول نهایی خیلی دخل و تصرف نداریم.ولی بعضی ساندویچی ها سلف سرویس هستند. میتونیم نون رو بگیریم اول بعد برش بدیم نون رو بعد داخلش گوجه بذاریم بعد خیارشور بعد کاهو بعد سوسیس یا هر چیزی بعد سس بعد دور ساندویچ کاغذ میپیچیم و بعد و بعد و بعد...
نوع اول که ما فقط درخواست میدیم و منتظر نتیجه میمونیم میشه مثل همون برنامه نویسی declarative و نوع دوم که آماده کردن ساندویچ با خودمونه میشه مثل برنامه نویسی imperative.
همونطور که بدیهیه در برنامه نویسی دستوری ما آزادی عمل بیشتری داریم. در برنامه نویسی اعلانی ممکنه حصول نتیجه از راه خیلی بهینهای انجام نشه. برای همین بهتره جاهایی که performance برامون مهمه از برنامه نویسی دستوری استفاده کنیم. هر چند ممکنه در برنامه نویسی دستوری زمان توسعه بیشتر طول بکشه به خاطر این که داریم کارایی که با یه Embedded function میشده و شاید با یه خط قابل انجام بوده رو با چندین خط انجام میدیم.
در آخر با دو مثال از زبان dart تفاوت برنامهنویسی imperative و declarative رو نشون میدم.