17-04-2008, 19:30
|
|
|
חבר מתאריך: 10.04.08
הודעות: 87
|
|
את המהדר של שפת C# הידרו ב-C# עצמה, אבל הרי את המהדר של C# עשו ב-C# אז מאיפה הגיע המהדר הראשון של C#? לא יכול להיות שהוא הודר ב-C#! אותו כנראה כתבו ב-C++. מהדרים מודרניים של C++ הודרו ב-C++ עצמה, אבל מאיפה הגיע מהדר ה-C++ הראשון? הוא יוצר על-ידי CFRONT (לדוגמה). CFRONT היה כלי שהפך קוד C++ לקוד C, ואז קוד C הודר באמצעות מהדר C. מהדרי ה-C++ הראשונים היו רחוקים מלתמוך בשפה שאנחנו מכירים כ-C++, אבל ברגע שיש לך מהדר C++ פשוט, באמצעותו אתה יוצר אחד טוב יותר.
ובחזרה לעניין: נניח שאת מהדרי C גם הכינו ב-C, אז איך נכתב מהדר ה-C הראשון? נכתב בשפה קודמת, שהמהדר שלה בסופו של דבר נכתב בשפה קודמת, שהמהדר שלה נכתב בסופו של דבר בשפה קודמת, שאת המהדר הראשון בשרשרת מישהו טחן וכתב באסמבלי, ואת האסמבלר הראשון בשרשרת הזאת מישהו כתב ישירות באופקודים. לא נעים.
זה כל הסיפור של bootstrapping לגבי קומפיילרים.
עכשיו לגבי מערכות הפעלה: קומפיילר של C, לדוגמה, לא באמת תלוי במערכת ההפעלה. הספריה הסטנדרטית של C תלויה במערכת הפעלה (איך עושים printf? - תלוי במערכת ההפעלה), אבל השפה עצמה לא ממש תלויה במערכת ההפעלה (איך עושים a=b? בעזרת אותן פקודות מכונה על כל מערכות ההפעלה למחשב מסוים; איך קוראים לפונקציה? כנ"ל). הרבה מערכות הפעלה פשוט נכתבו ב-C, בלי ספריה סטנדרטית: כל הקלט והפלט מומש לבד. כל ניהול הזיכרון מומש לבד. threading מומש לבד. וכו'.
|