שיעור 0: למה בכלל שפה שמתקמפלת?
כמעט כל שפה פופולרית היום (Python, JavaScript, Java) מנהלת בשבילך את הזיכרון אוטומטית ומריצה את הקוד דרך שכבת ביניים. זה נוח — עד שמגיעים שני מקרים שבהם הנוחות הזו פשוט לא זמינה: תוכנית שצריכה לרוץ על שבב משובץ עם כ-2 קילובייט RAM בלבד (חיישן, שעון חכם, בקר מנוע), או קוד שבו מילישנייה של עצירה בלתי
רוב השפות נותנות לך מכונית אוטומטית שנוסעת ומטפלת בעצמה בכל מה שקורה מתחת למכסה המנוע. C נותנת לך הגה, דוושות ותצוגת מנוע חיה — יותר עבודה, אבל את/ה רואה בדיוק מה קורה, ויכול/ה לנהוג גם איפה שאוטומט פשוט לא נכנס.
- שפה מקומפלת
- שפה שקוד המקור שלה מתורגם מראש (קומפילציה) לשפת מכונה, בלי שכבת ביניים שרצה יחד עם התוכנית ובודקת כל פעולה.
- שפה ברמה נמוכה
- שפה קרובה למבנה האמיתי של הזיכרון והמעבד, ולכן חושפת למתכנת/ת פרטים שברמה גבוהה מוסתרים אוטומטית.
- ניהול זיכרון ידני
- מודל שבו המתכנת/ת מבקש/ת ומשחרר/ת זיכרון בעצמו/ה, בלי תהליך רקע (garbage collector) שעושה זאת אוטומטית.
- מערכת משובצת
- מחשב זעיר בתוך מכשיר (חיישן, שעון חכם, בקר מנוע) עם זיכרון מוגבל לקילובייטים בודדים בלבד.