כבר הרבה זמן שאני מוצא את עצמי עומד נבוך מול סיטואציות שבהן אני מנסה להסביר לאנשים שלא לומדים הנדסת תוכנה מה בדיוק עובר עלינו (זהירות ספוילר!- נגינת כינורות עצובה).
אז נכון, רוב מי שקורא את הבלוג שלי לומד איתי אבל לא אלו האנשים שבאמת סובלים. אני אגיד לכם מי באמת סובל- חברים ובני משפחה שלנו שצריכים לשמוע בדיחות גיקים כמו זאת לדוגמה: "מה שיחקנו בתור ילדים? META-קלאס!" מלווה לאחריה במין צליל מאכזב של "פהההה..." אסף אשתרי שכזה. האנשים שמקיפים אותנו לא מבינים בדיוק מה זה אומר לסגור שנתיים שלמות בהנדסת תוכנה/מדעי המחשב. אז למעננו, כמין סיכום ביניים, ובמיוחד למען אלו שצריכים להבין אותנו אני אנסה לתמצת הכל בכמה מושגים יסודיים. בפוסט הקודם שלי לימדתי את אלו שאין להם מושג באלכוהול איך להיות מסמר של כל שיחת בארים ממוצעת.
היום, ילדים, נלמד מאפס מושגים מעולמם של סטודנטים להנדסת תוכנה.
אז ככה-
מייל
בשבילנו האימייל הוא בעיקר אמצעי נוח ויעיל לשמירה חוזרת ונשנית של עבודות להגשה בתכנות על כל שלביהן. מסתבר שבתיבת דואר של סטודנט ממוצע להנדסת תוכנה רוב ההודעות הן הודעות שנשלחו אל עצמו. אדם שלא מכיר את ההרגל המגונה הזה בוודאי יחשוב שמה שאני אומר פה הוא די מוזר. והוא כנראה גם צודק. אז קודם כל נסכים שאין ספק שהקהילייה הפסיכיאטרית בארץ איננה ערוכה לקלוט את כמות מהנדסי התוכנה שיוצאים אל השוק בכל שנה עם בעיות פרנויה קשות. המייל הוא רק השלב האחרון לאחר שלבים אופציונליים מקדימים של גיבוי באמצעים כמו כונן נוסף או דיסק-און-קי (או כמו שמ' מעדיפה לקרוא לזה- "דיסקו קינג!"). כדי להבין את הפחד מאיבוד של מידע שהוא פשוט לא יותר מאוסף שורות קוד אני אצטרך כנראה להסביר את העניין הזה לעומק.
קוד
המילה "קוד" נשמעת לנו בגיל 15 כמו מושג אניגמטי ומרתק מעולם הסרטים. בסרטים כמו בסרטים, מומחה מחשב נכנס למערכת סודית שמזכירה את מסך הפתיחה של Red-Alert2 ומתקתק קודים בקצב שלא היה מבייש קלדנית במשרד ממשלתי. עשור שנים לאחר מכן המציאות מגדירה לנו את זה בצורה די אחרת- קוד הוא לא יותר מרצף של פקודות למחשב.
המעניין בסיפור הזה הוא שקוד זה בעצם כמו האישה של המתכנת. אתה מבלה את רוב זמנך מול הקוד, בדומה לחברה קבועה גם הקוד שלך ילך ויעשה מתוסכל ומעצבן ככל שהוא יתפח במימדיו, בדומה לחברה- כשמשהו ישתבש והתוכנה לא תעבוד, הקומפיילר (המקבילה הממוחשבת של החברה הכי כונפה שלה) יגיד לך שזה רק בגלל שאתה- המתכנת/החבר האומלל- לא הקדשת מספיק זמן כדי להתבונן בקוד שלך וללמוד אותו.
באג
אחרי שלמדנו קצת על מהו קוד נקדיש, כמו בחיים, חלק שלם ואינטגרלי לבעיות שמתלוות לקוד. לאלו שלא מבינים בדיוק על מה אני מדבר פשוט תדמיינו שהבאגים הם בעצם הדברים שיכולים רק להשתבש בשביל הקוד שלכם. דוגמה מהחיים שקרתה לי לפני כמה ימים: אתה יכול לקנות לבחורה שלך דובי נחמד, לשים אותו באריזת מתנה מתוקה ודביקה עם זרדים צבעוניים מתרוממים כאלו שבחורות מה-זה-אואבות!!!1, להקדיש זמן לכתוב פתק ולשים אותו בתוך מעטפה סגולה וקטנה שצמודה למתנה בעזרת אטב סגול מיניאטורי כל כך כל כך הומואי שג'יזס היא מילה לא מספיק טובה כדי לשקף עד כמה.. לכאורה אין פה שום בעיה וכאן בדיוק הבעיה- קוד, יפה ככל שייראה גם אם הוא עטוף בתיעוד עם מילים מפוצצות באנגלית שמילון בבילון מתפדח לתרגם, גם קוד כזה עלול להכיל באג. לצורך העניין, במכתב הקטן בתוך המעטפה הקטנה חשבתי בהתחלה שזה ממש נחמד לרשום: "שתמיד אהיה איתך גם כשאנחנו לא ביחד" (הנה באג! אתה לא אומר לבחורה שאתם לא תהיו ביחד. במקום זה אתה צריך להגיד "גם כשאנחנו רחוקים"). למזלי, ראמי, הידיד ההומו שלי היה שם בדיוק בזמן כדי לעצור אותי מלרשום את זה כמו שרציתי. במובנים מסויימים כולנו צריכים בחיינו לפחות אדם אחד או שניים בעל גישה אנאלית לפתרון בעיות. מתכנתים מכירים את זה בשם הנפוץ יותר- "דיבאגר".
לאלו מבינינו שלא מכירים את הז'רגון- בכל פעם שתעברו במסדרונות האוניברסיטה ותראו צמד סטודנטים מתוסכלים שמדברים על מושגים מוזרים כמו "נאל אקספשן" או "סגמנטיישן פולט" תרגישו חופשי פשוט לתרגם את זה אצלכם בראש לזה שהקוד שלהם במחזור. זו הגדרה מספיק קולעת לדעתי.
רקורסיה
במינוח מילוני- רקורסיה זה בעצם קריאה של פונקציה לעצמה. בעולם שממנו אני מגיע המילה "רקורסיה" נאמרת בערך באותה תכיפות שבה נאמרת המילה "מטבוחה" במנגל מרוקאי של יום העצמאות. לכל אלו שלא מבינים על מה דיברתי (וזה מצויין! זה אומר שאשכרה יש לכם חיים!!), אני אוכל להמחיש את זה באמצעות מה שהסברתי עד עכשיו. תחזרו אחורה ותסתכלו איך התחלנו- ניסיתי להסביר לכם על פרנויה של סטודנטים להנדסת תוכנה ושכל זה קורה בגלל הקוד אבל הייתי צריך להסביר קודם מה זה קוד אז פשוט הסברתי על הקוד.. אבל כדי להבין למה הקוד מתסכל כל כך צריך לדעת מה זה באג. אז הסברתי על המושג "באג" עד שהגענו לתנאי העצירה. ככה פועלת רקורסיה- קריאה חוזרת ונשנית לעצמה עד שהבעיה נפתרת. (גם אם לא הבנתם, אני עדיין מקנא בכם..).
אחרי שראינו פחות או יותר מהם יחסי הגומלין. דמיינו לעצמכם שבעבודות להגשה אנחנו נלחמים לעיתים עשרות שעות מול הקוד שלנו עד שיוצא מה שצריך לצאת.
בלא מעט מקרים הגודל של קובץ הקוד יכול להיות לא יותר מ- 4Kb מצ'וקמקים.
לצורך המחשה- הגודל הפיזי שנכנס אל תוך חווית שעות של תסכולים, בכי והאכלת סרטים עצמית על זה שאהיה מהנדס תוכנה גרוע מתגלמים כרגע על המסך שלכם כתמונה בגודל 4Kb: