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

**تعریف**

برنامه‌نویسی دستوری (به انگلیسی: Imperative Programming) یکی از پارادایم‌های اصلی برنامه‌نویسی در علوم رایانه است که در آن برنامه‌نویس به‌صورت قدم‌به‌قدم دستورات مورد نیاز برای انجام یک عملیات را مشخص می‌کند. این نوع برنامه‌نویسی بر پایه مدل ماشین فون نیومن طراحی شده و نقش مهمی در توسعه زبان‌های برنامه‌نویسی مدرن دارد.
----**ویژگی‌ها**
* استفاده از دستورات متوالی برای کنترل جریان برنامه.
* مدیریت مستقیم حافظه و تغییر حالت‌ها از طریق متغیرها.
* پشتیبانی از ساختارهای کنترلی مانند حلقه‌ها (Loops) و شرط‌ها (Conditions).
* تأکید بر "چگونگی انجام" عملیات به جای "چیستی" نتیجه.

----**تفاوت با زبان‌های اعلانی**

در برنامه‌نویسی دستوری، چگونگی انجام عملیات به‌صورت دقیق مشخص می‌شود، اما در زبان‌های اعلانی (Declarative Programming) تنها نتیجه مطلوب بیان می‌شود و چگونگی دستیابی به آن به عهده کامپایلر یا مفسر است.
----**مثال‌ها**

* اگر بخواهیم باز کردن یک در را با زبان اعلانی بیان کنیم، می‌گوییم: "در را باز کن." اما در زبان دستوری باید مراحل زیر را مشخص کنیم:
*# بلند شو.
*# به طرف در نزدیک شو.
*# دستگیره را بگیر.
*# در را به طرف بیرون هل بده.

----**نمونه کد در زبان دستوری**

مثالی ساده از زبان Python:
```python
x = 0
for i in range(10):
    x += i
print(x)
```
در این مثال، از حلقه و متغیر برای انجام عملیات جمع استفاده شده است که ماهیت برنامه‌نویسی دستوری را نشان می‌دهد.

مثالی از زبان C:
```c
#include <stdio.h>
int main() {
    int x = 0;
    for (int i = 0; i < 10; i++) {
        x += i;
    }
    printf("%d\n", x);
    return 0;
}
```
این کد نیز عملیات مشابهی را انجام می‌دهد اما با استفاده از زبان C.

مثالی از زبان جاوا:
```java
public class Main {
    public static void main(String[] args) {
        int x = 0;
        for (int i = 0; i < 10; i++) {
            x += i;
        }
        System.out.println(x);
    }
}
```

----**تاریخچه**

ریشه برنامه‌نویسی دستوری به زبان ماشین و اسمبلی بازمی‌گردد. با ظهور زبان‌هایی مانند Fortran، C و Pascal، این پارادایم به شکل مدرن‌تری توسعه یافت و همچنان در زبان‌هایی مانند Python، Java و C++ استفاده می‌شود. زبان Fortran به‌عنوان یکی از نخستین زبان‌های برنامه‌نویسی سطح بالا در دهه 1950 معرفی شد و پایه‌گذار بسیاری از مفاهیم برنامه‌نویسی دستوری بود.
----**مزایا و معایب**
مزایا:

* سادگی در فهم و پیاده‌سازی برای مسائلی که نیاز به کنترل دقیق دارند.
* قابلیت بهینه‌سازی بالا برای سخت‌افزار.
* سازگاری گسترده با اکثر سیستم‌عامل‌ها و معماری‌های رایانه.

معایب:

* پیچیدگی در برنامه‌های بزرگ به دلیل نیاز به مدیریت مستقیم حالت‌ها.
* احتمال بالاتر خطا به دلیل دسترسی مستقیم به حافظه.
* کاهش خوانایی کد در پروژه‌های بزرگ.

----**کاربردهای برنامه‌نویسی دستوری**
* توسعه سیستم‌عامل‌ها و نرم‌افزارهای سطح پایین (مانند کرنل‌ها و درایورها).
* توسعه بازی‌های رایانه‌ای با نیاز به کنترل دقیق منابع سخت‌افزاری.
* استفاده در برنامه‌هایی که نیاز به بهینه‌سازی بالا دارند، مانند محاسبات علمی و عددی.

----**زبان‌های برنامه‌نویسی دستوری معروف**
* C: یکی از قدرتمندترین زبان‌ها برای توسعه نرم‌افزارهای سیستمی.
* Java: زبان همه‌منظوره با پشتیبانی از ویژگی‌های شی‌گرایی و دستوری.
* Python: زبان ساده و قابل فهم که ترکیبی از ویژگی‌های دستوری و سایر پارادایم‌ها را ارائه می‌دهد.
* Pascal: زبانی آموزشی که در توسعه مفاهیم برنامه‌نویسی نقش زیادی داشت.

## جستارهای وابسته
:* زبان‌های اعلانی
:* زبان‌های برنامه‌نویسی شی‌گرا
:* زبان‌های تابعی
:* تاریخچه برنامه‌نویسی
:* الگوریتم و ساختار داده
: ----**منابع**
:# Aho, A. V., Lam, M. S., Sethi, R., & Ullman, J. D. (2006). *Compilers: Principles, Techniques, and Tools*.
:# Kernighan, B. W., & Ritchie, D. M. (1988). *The C Programming Language*.
:# Documentation of Python.
:# IEEE papers on imperative programming.
:# Fortran documentation and history.

رده:پارادایم‌های برنامه‌نویسی
رده:زبان‌های برنامه‌نویسی