מה ההבדל בין המשתנים המקומיים והעולמיים?

רוב שפות התכנות תומכות במשתנים מקומיים וגלובליים.

משתנים מקומיים

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

ערימה

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

משתנים גלובליים

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

יתרונות וחסרונות

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