מתכנתים ברמה נמוכה

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

עוד פרט חשוב לסיפור הוא שבשפת Object Pascal אין אופרטור נפרד לפעולת AND לוגית ("&&" בשפת C) ולפעולת AND ברמת הביטים ("&"). שתי הפעולות מתבצעות באמצעות האופרטור "AND", והמשמעות של התוצאה נגזרת מההקשר ומטיפוסי המשתנים עצמם. כמו כן, אופרטור בדיקת השוויון ("==" בשפת C) נכתב בשפת Object Pascal פשוט כ-"=".

יום אחד הציג נ' את שורת הקוד הבאה, הפעם לא כבדיחה אלא כשאלה: מה בעצם קורה פה?

if (IntA AND IntB) = 0 then ...

אם איזה ילד או מתחיל היה שואל שאלה כזו, התשובה היתה מובנת מאליה: יש כאן פעולת AND על הביטים של שני משתנים מספריים, ואם התוצאה היא אפס – כלומר, אין ביניהם שום "חפיפה" של ביטים עם ערך 1 – התנאי מתקיים. אבל כשמתכנת כמו נ' שואל כזה דבר, פתאום התשובה לא מובנת מאליה. האם ייתכן שהוא פספס משהו כל כך טריוויאלי? או שאולי אני פספסתי משהו בשאלה?

ובכן, מסתבר שהאפשרות הראשונה היא הנכונה. נ' שקוע כל כך עמוק וכל כך הרבה זמן בעולם התכנות ה"גבוה", הארגוני אפילו, שהוא פשוט שכח את העניין הזה של פעולות ביטים על משתנים מספריים. אי אפשר להאשים אותו: פעולות כאלה הן מצרך נדיר בתכנות מחשבים מודרני. אפשר למצוא אותן, אולי, ביישומים שמצריכים ביצועים מקסימליים, כגון מנועים של משחקים, או ביישומי Low-level שחייבים להיות קרובים לחומרה (כן, יש חפיפה מסוימת בין השניים). בעולמו של נ', שמאוכלס בעיקר בתוכנות רב-שכבתיות מורכבות שמנהלות נתונים עסקיים מהעולם האמתי ושדורשות תחזוקה ושדרוג לעתים קרובות, פעולות על ביטים הן רק זיכרון רחוק מימי הלימודים.

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

התירוץ לכל הפוסט הזה, ולמוסר ההשכל השחוק שכבר שמעתם ממני לא פעם, הוא חגיגות יום ההולדת ה-19 לסביבת הפיתוח Delphi לשפת Object Pascal, אתמול (ב-14 בפברואר). מכיוון שהאינטרנט של אז לא היה מה שהוא היום, שמעתי על דלפי לראשונה רק מתישהו בסביבות 1998, ושנה לאחר מכן השגתי את העותק הראשון שלי, של דלפי 5. הוא מותקן על המחשב שלי גם כעת ועובד למופת, בזריזות וקלילות שרק תוכנות משנת 1999 יכולות להשיג על מחשב מודרני 🙂

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

מזל טוב!

להרשמה
הודע לי על
3 Comments
מהכי חדשה
מהכי ישנה לפי הצבעות
Inline Feedbacks
הראה את כל התגובות

אפשר לינק לפוסט המקורי?

מזל טוב!