תכנות אימפרטיבי

במדעי המחשב, תכנות אימפרטיבי (פקודתי) הוא פרדיגמת תכנות השמה דגש על רצפים של פקודות (Statements) המורות למחשב לשנות את תוכן סביבת העבודה. פרדיגמה זו היא הפרדיגמה התכנותית הטבעית והנפוצה ביותר. פרדיגמה זו הפוכה מתכנות הצהרתי שבו התוכנית מתמקדת ב"מה" ולא ב"איך". לפרדיגמה של התכנות האימפרטיבי שייכות שפות תכנות פרוצדורליות ומונחות עצמים.

שפות התכנות הראשונות שהתפתחו משפת אסמבלי האימפרטיבית, באופן טבעי ירשו ממנה את התפיסה התכנותית. על השפות האימפרטיביות נמנות שפות כגון פורטרן, קובול, אלגול, PL/I, בייסיק, פסקל, C, שפת C++, JavaScript ו-לואה.

היסטוריה

עריכה

את עידן שפות התכנות האימפרטיביות פתחה שפת פורטרן שפותחה על ידי ג'ון באקוס מ-IBM ‏(19531957). שפה זו הייתה שפת התכנות הגדולה הראשונה שהצליחה להתגבר על הבעיות שנבעו מקוד מכונה. שפה זו היא שפה מהודרת שאיפשרה להגדיר משתנים בשם, ביטויים מורכבים, תת-תוכניות, ותכונות רבות אחרות שכיום נפוצות בשפות האימפרטיביות. בשנות ה-50 המאוחרות ובשנות ה-60 פותחה שפת אלגול במטרה לאפשר ביטוי קל של אלגוריתמים מתמטיים, וכללה בתוכה חידושים תכנותיים, כמו בלוקים של קוד, הגבלת תחום ההכרה של משתנים, שתי דרכים שונות להעברת פרמטרים לפרוצדורה, וקריאה רקורסיבית בשפה אימפרטיבית.

לאחריה פותחה שפת קובול (19591960) דמוית האנגלית שזכתה לפופולריות עצומה כשפה לפיתוח מערכות מידע בעולם העסקי. בשנות ה-60 פותחה בייסיק (1964) כשפת תכנות ראשונה לצורכי לימוד, וזכתה לפופולריות במחשבים האישיים שנפוצו עשרים שנה אחר כך. שפת PL/I פותחה באמצע שנות ה-60 על ידי חברת IBM. השפה ניסתה לאחד את הטוב מפורטרן, קובול ואלגול 6 ונועדה להיות שפה למטרות כלליות ולשמש ליישומים מדעיים, הנדסיים ומסחריים ואף לתכנות מערכות והופיעו בה לראשונה בשפה אימפרטיבית מספר רב של טיפוסי נתונים פרימיטיביים, תכנות מקבילי, מצביע כטיפוס נתונים, יכולת לטפל בחריגות ובניפוי שגיאות.

בשנת 1970, פותחה שפת פסקל שהושפעה בעיקר מאלגול, על ידי ניקלאוס וירת אף היא כשפת לימוד. לאחריה נוצרה שפת C שבה עיקרון היעילות הוא העיקרון המנחה, המאפשרת ניצול מרבי של יכולות המחשב בדומה לשפת סף, על ידי דניס ריצ'י בעת שעבד במעבדות בל. שפת עדה, שתמכה בתחילה באופן חלקי בתכנות מונחה עצמים פותחה בשנת 1983.

אפיוני השפה

עריכה

שפה אימפרטיבית מאופיינת במשתנים, פקודות ומבני בקרה.

דוגמה לתכנות אימפרטיבי בשפת Java:

for (int i = 0, j = 9; i < 10; i++, j -= 3) {
     if (i == 3) {
         doSomething();
     } else if (i == 2) {
         doSomethingElse();
     } else {
         doSomethingDifferent();
     }
}