הבדל מפתח – תכנות הצהרתי מול ציווי
תכנות הצהרתי ותכנות ציווי הן שתי פרדיגמות תכנות נפוצות. ההבדל העיקרי בין תכנות הצהרתי לתכנות ציווי הוא שתכנות הצהרתי מתמקד במה שהתוכנית צריכה להשיג בעוד שתכנות אימפרטיבי מתמקד באופן שבו התוכנית צריכה להשיג את התוצאה.
פרדיגמת תכנות משמשת לסיווג שפת תכנות בהתאם לתכונה. זה גם מאפשר לעקוב אחר דפוס או סגנון מסוים כדי לפתור בעיה מסוימת.
מהו תכנות הצהרתי?
ניתן להסביר תכנות הצהרתי באמצעות תרחיש אמיתי. נניח שהמשתמש צריך לחפש אימיילים חדשים. שיטה אחת היא על ידי הפעלת הודעות תיבת הדואר הנכנס. המשתמש צריך להפעיל את ההתראות פעם אחת בלבד ובכל פעם שמגיע מייל חדש הוא מקבל התראה אוטומטית. תכנות הצהרתי דומה לזה. זה מספק פשטות. תכנות הצהרתי מבטא מהי התוצאה הנדרשת. זה מסביר את ההיגיון של חישוב מבלי לתאר את זרימת הבקרה.
איור 01: פרדיגמות תכנות
דוגמה לתכנות הצהרתי היא כדלקמן. זה להכפיל מספרים של מערך בקבוע ולאחסן אותם במערך חדש.
var numbers=[1, 2, 3];
var newnumbers=numbers.map(function(number){
מספרי החזרה5;
});
Console.log(newnumbers);
בדוגמה שלמעלה, 'מפה' נותן הוראות לחזור על כל פריט במערך ולהפעיל את פונקציית ההתקשרות חזרה עבור כל פריט ולאחסן את ערך ההחזרה במערך החדש. זה ייתן את הפלט 5, 10, 15. בתוכנית זו, המטרה העיקרית של הכפלת המספרים ב-5 מושגת באמצעות פונקציית המפה. הוא יעבור על כל אלמנט וישתמש בפונקציית ה-call back כדי לחשב ולאחסן את הערכים במערך החדש. אין צורך לספק את כל השלבים. הפוקוס העיקרי ניתן למה שצריך להשיג.
מהו תכנות חובה?
ניתן להסביר תכנות חיווי באמצעות תרחיש אמיתי כמו קודם. כדי לבדוק את המיילים החדשים, המשתמש יכול להיכנס ל-gmail ולהמשיך לרענן את העמוד כדי לבדוק אם הוא קיבל מיילים חדשים או לא.זה דומה לתכנות חובה. הוא מסביר כל שלב ושלב הכרוך בהשגת התוצאה. הוא משתמש בהצהרות כדי לבטא את השינויים במצב התוכנית.
הכפלת רכיבי המערכים עם קבוע ואחסון הערכים למערך חדש בתכנות ציווי הוא כדלקמן.
var numbers=[1, 2, 3];
var newnumbers=;
for(int i=0; i< numbers.length; i++) {
newnumbers.push(numbers5);
}
Console.log(newnumbers);
בדוגמה שלמעלה, מספרים הם מערך. כאשר עוברים דרך הלולאה, כל מספר מוכפל ב-5 ומתווסף למערך המספרים החדש. לאחר סיום הלולאה, יודפס תוכן המספרים החדשים שהם 5, 10, 15.
ניתן לראות שסגנון הציווי מספק את כל השלבים להשגת המשימה. זה מבטא כיצד לבצע איטרציה דרך המערך באמצעות משתנה המונה 'i', כמה פעמים לבצע איטרציה לפני יציאה מהלולאה וכיצד להכניס את הערכים המחושבים למערכים החדשים וכו'.
אותה בעיה נפתרה באמצעות תכנות הצהרתי והכרחי.
מה ההבדל בין תכנות הצהרתי לתכנות ציווי?
תכנות הצהרתי מול ציווי |
|
תכנות הצהרתי היא פרדיגמת תכנות המבטאת את ההיגיון של חישוב מבלי לתאר את זרימת הבקרה שלו. | תכנות חיווי היא פרדיגמת תכנות שמשתמשת בהצהרות שמשנות את מצב התוכנית. |
מיקוד עיקרי | |
תכנות הצהרתי מתמקד במה שהתוכנית צריכה להשיג. | תכנות חיווי מתמקד באופן שבו התוכנית צריכה להשיג את התוצאה. |
גמישות | |
תכנות הצהרתי מספק פחות גמישות. | תכנות חיווי מספק יותר גמישות. |
מורכבות | |
תכנות הצהרתי מפשט את התוכנית. | תכנות חיווי יכול להגביר את מורכבות התוכנית. |
Categorization | |
תכנות פונקציונלי, לוגי, שאילתות נופל לתכנות הצהרתי. | תכנות פרוצדורלי ומונחה עצמים נופל לתכנות חובה. |
סיכום – תכנות הצהרתי מול ציווי
מאמר זה דן בהבדל בין שתי פרדיגמות תכנות עיקריות, שהן תכנות הצהרתי ותכנות ציווי.ההבדל בין תכנות הצהרתי לתכנות ציווי הוא שתכנות הצהרתי מתמקד במה שהתוכנית צריכה להשיג בעוד שתכנות ציווי מתמקד באופן שבו התוכנית צריכה להשיג את התוצאה.