דיבאג: איך מוצאים ומתקנים באגים

תכנות · לכיתות ד׳–ט׳

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

מאיפה בא השם

״באג״ באנגלית פירושו חרק. מהנדסים השתמשו במילה הזאת לתקלות במכונות עוד לפני שהיו מחשבים, כבר במאה ה־19. אבל יש סיפור מפורסם: ב־9 בספטמבר 1947, באוניברסיטת הרווארד בארצות הברית, צוות שעבד על מחשב ענק בשם מארק 2 מצא עש — פרפר לילה — תקוע באחד הממסרים של המכונה. הם הדביקו את העש ביומן העבודה וכתבו לידו, בהומור, שזה ״המקרה הראשון של באג אמיתי שנמצא״.

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

שלושה סוגי באגים

הסוג הראשון הוא שגיאת תחביר — טעות ב״דקדוק״ של שפת התכנות: מירכאה חסרה, סוגריים שלא נסגרו, נקודתיים ששכחנו. המחשב לא מצליח אפילו להבין את הקוד ומסרב להריץ אותו. למשל, print("שלום) — חסרה מירכאה בסוף. החדשות הטובות: המחשב מוצא את הבאגים האלה בעצמו ומראה איפה הם.

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

קוראים את הודעת השגיאה

מתחילים רבים נבהלים מהודעות שגיאה אדומות, אבל הן בעצם רמזים שהמחשב משאיר לבלש. הודעה טיפוסית בפייתון אומרת באיזו שורה הייתה הבעיה ומה סוג הבעיה. SyntaxError פירושו שגיאת תחביר. NameError פירושו שהשתמשנו בשם שהמחשב לא מכיר — אולי טעות כתיב, כמו Print באות גדולה במקום print. ZeroDivisionError פירושו ניסיון לחלק באפס.

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

ארגז הכלים של הבלש

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

ויש שיטה מפורסמת עם שם מצחיק: ״דיבאג ברווז גומי״. מסבירים את הקוד, שורה אחרי שורה, לברווז גומי (או לחבר, או לכלב). הרבה פעמים, באמצע ההסבר, שומעים את עצמנו אומרים משהו כמו ״ופה אני מוסיף אחד… רגע, למה אני מוסיף פה?״ — ומוצאים את הבאג. והכי חשוב: סבלנות. כל באג שמצאתם מלמד אתכם משהו, ועם הזמן תזהו באגים מהר יותר.

✅ חידון: דיבאג: איך מוצאים ומתקנים באגים

1. מה זה באג?

2. מה זה דיבאג?

3. מה נמצא ב־1947 בתוך מחשב בהרווארד?

4. איזו טעות היא שגיאת תחביר?

5. למה שגיאה לוגית ערמומית במיוחד?

6. מה כדאי לעשות קודם כשמופיעה הודעת שגיאה?

7. מה פירוש NameError בפייתון?

8. מה עושים בדיבאג ברווז גומי?

🖨️ דף עבודה להדפסה

8 שאלות, שאלות לחשיבה ודף תשובות עם הסברים.

🤖 באקדמיית ה־AI: גם בינה מלאכותית טועה ←למה בוטים טועים, ואיך בודקים את התשובות שלהם.

📘 מושגים מהשיעור

💬 שאלות לשיחה

  1. ספרו על טעות שעשיתם פעם (לא רק במחשב) ואיך מצאתם אותה. איזו ״שיטת בלש״ השתמשתם?
  2. למה לדעתכם מחשב יכול למצוא שגיאת תחביר לבד, אבל לא שגיאה לוגית?
  3. נסו להסביר לחבר איך מכינים כריך, צעד אחרי צעד. האם מצאתם ״באג״ בהוראות?

📖 קטע קריאה בנושא: 🦋 העש שנכנס להיסטוריה

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

בחיל הים נשלחה הופר לעבוד על אחד המחשבים הראשונים, מכונה ענקית בשם מארק 1 באוניברסיטת הרווארד. היא הייתה מהאנשים הראשונים בעולם שכתבו תוכניות למחשב.

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

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

הופר בחיל הים עד גיל 79 והגיעה לדרגת אדמירל. היא נהגה לומר שהמשפט המסוכן ביותר הוא ״תמיד עשינו את זה ככה״.

📖 מילון הקטע
  • סקרנית — אוהבת לשאול ולגלות דברים חדשים
  • פירקה — הפרידה לחלקים
  • תואר — שם שמקבלים בסיום לימודים באוניברסיטה
  • עש — פרפר לילה קטן
  • שיבש — הפריע וקלקל
  • חרק — בעל חיים קטן עם שש רגליים
  • ויתרה — הפסיקה לנסות
  • שירתה — עבדה בצבא או בחיל הים

שאלות

1. איזה מעשה מילדותה של הופר מראה שהייתה סקרנית?
2. מה מצא הצוות בתוך המחשב מארק 2?
3. למה כתב הצוות בהומור שזה המקרה הראשון שבו נמצא באג אמיתי?
4. מה הייתה התרומה הגדולה של הופר?
5. מה אפשר ללמוד מהמשפט שהופר נהגה לומר?
6. מה הקשר בין הילדה שפירקה שעונים לבין המבוגרת שלא ויתרה על רעיון שנחשב בלתי אפשרי?

עוד שיעורים בתכנות

לכל 16 השיעורים בתכנות ←

חוברת ומבחן לדוגמה לכיתה

שאלות נפוצות

האם מתכנתים מקצועיים כותבים באגים?

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

מי מצא את הבאג הראשון?

אין ״באג ראשון״ — המילה שימשה לתקלות במכונות עוד במאה ה־19. הסיפור המפורסם הוא העש שנמצא ב־1947 במחשב מארק 2 בהרווארד. הוא קשור לגרייס הופר, שאהבה לספר אותו, אבל לא בטוח שהיא זו שמצאה אותו.

מה עושים כשלא מוצאים את הבאג?

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

שווה להסתכל גם על תכנות לילדים, ולומדים.

האם זה עזר?
חדש בעוגה בוגה: מבקשים — ואנחנו מכינים ✨חסר לכם דף עבודה, חוברת או משחק? ספרו לנו, בחינם.
לבקשת דף ←או בוואטסאפ