תוֹכֶן
איך עובדת תוכנית מחשב היא תעלומה למשתמש הטיפוסי שסומך על עבודת המתכנתים. על המתכנת להבין כיצד המחשב מצפה לקבל פקודות בשני שלבי הביצוע (זמן הידור וזמן ביצוע), בנוסף למושגים אחרים.
זמן בנייה
השלב הראשון של ביצוע התוכנית, זמן האוסף, כולל תרגום של השפה המובנת לבני אדם, או "קוד מקור", לשפה שהמחשב מבין, או "קוד מכונה". קוד המקור מכיל מילים שאתה מזהה, מספרים בפורמט עשרוני ומבנים מסודרים שמקלים על הבנת זרימת ההוראות. שלב זמן האוסף הושלם כאשר התוכנית החדשה היא קובץ הפעלה.
זמן ריצה
המחשב משתמש בהוראות שהופקו בזמן הקומפילציה להפעלת התוכנית. בזמן ריצה, המחשב קורא את תרגום קוד המקור לביצוע המשימות ששולב על ידי המתכנת. בכל פעם שמישהו מריץ את התוכנית, הוא עושה זאת בזמן הריצה.
הֶבדֵל
זמן האוסף נחצה רק פעם אחת כדי לתרגם את קוד המקור לקובץ הפעלה, שניתן לקרוא אליו כמה שיותר צורך בלי להרכיב שוב, אלא אם כן התוכנית זקוקה לשינויים. רוב המשתמשים משתמשים רק בזמן הריצה.
שגיאות זמן קומפילציה
שגיאות יכולות להתרחש בשני שלבי ביצוע התוכנית. שגיאות זמן קומפילציה, או שגיאות תחביר, קיימות בקוד המקור. דוגמאות לכך הן פקודות שגויות, בעיות בסדר הפעולות, שילובים לא תואמים של סוגי משתנים והשמטת אלמנטים נחוצים. מתכנת יכול לזהות שגיאות זמן קומפילציה בקלות, מכיוון שהן תחביריות ולא הגיוניות. המהדר בדרך כלל מוצא שגיאת זמן הידור ומסביר או נותן טיפים לפתרון. אם המהדר מייצר קובץ הפעלה מקוד, אין לתוכניות שגיאות זמן הידור.
שגיאות קטסטרופליות בזמן ריצה
שגיאות זמן ריצה עלולות לגרום לתוכנית לקרוס ולהסתיים מוקדם. דוגמאות לשגיאות כאלה הן גישה לזיכרון מוגבל וחלוקה באפס. הצהרת "x / y" נכונה תחבירית, אך אם "y" מכיל ערך 0 בזמן הריצה, התוכנית תיכשל. מתכנת עלול להתקשות למצוא שגיאות זמן ריצה בשל העובדה שהן בדרך כלל מתרחשות בתנאים מסוימים.
שגיאות לוגיות בזמן ריצה
שגיאה לוגית אינה גורמת לכישלון התוכנית, אך היא גורמת לה לעבוד באופן שהמתכנת אינו רוצה. שקול תוכנית עם תפריט אפשרויות המצפה מהמשתמש להזין את מספר האופציה הרצוי. אם המשתמש מקליד אות, התוכנית, בהמתנה למספר, יכולה להפוך אותה לערך מספרי ולשלוח את המשתמש לאחת מהאפשרויות, ונראה כאילו שום דבר לא בסדר במקום להודיע למשתמש שהוא הקליד אפשרות לא חוקית.