קמפול והרצה

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



קמפול והרצה קימפול והרצה

 
מאת: ארז קלר



את השלב הראשון סיימנו, כתבנו את התוכנית.
כל מה שנותר הוא ולהריץ אותה.
את התוכנית שכתבנו בשפת #C לא ניתן להריץ כמו שהיא, המחשב לא יודע #C,
האמת היא שגם אתם עדיין לא יודעים #C, אבל ההבדל הגדול ביניכם לבין המחשב שאתם אוטוטו תדעו, המחשב לעולם לא.
המחשב מצפה לקבל את הקוד בשפת מכונה.
אנחנו הקלדנו בתוכנית:
Console.WriteLine("Hello World");

והרגשנו מאוד נוח, כי זה ברור ומאוד קרוב לשפה האנושית,
אבל בשביל המחשב זה גרוע מסינית, המחשב ירגיש הרבה יותר בנוח עם זה:
01000111010101011111000010101011111110101010101010101011101010101010
10101111101010101010101010100000001111010101000111101010101000111010
10101010101000101010100101010101010010111010100101000001010101010101
01000111010101011111000010101011111110101010101010101011101010101010
10101111101010101010101010100000001111010101000111101010101000111010
10101010101000101010100101010101010010111010100101000001010101010101
010101010101001010101010

אז מה עושים? איך מגשרים על הפער? איך נוכל לכתוב תוכניות מחשב בשפת תכנות אנושית ונוחה ולגרום למחשב להבין ולבצע אותה?
התהליך מאוד דומה לתהליך של כתיבת ספר ותרגומו לשפה זרה לצורך מכירתו.
הסופר כותב את הספר בשפת האם שלו, נניח שבעברית, בשביל שקורא צרפתי יוכל לקרוא אותו נעזרים בשירותיו הטוב של המתורגמן שמבין עברית ומכיר גת השפה הצרפתית,
המתורגמן מתרגם מעברית לצרפתית שורה אחר שורה, פסקה אחר פסקה פרק אחר פרק.
את התוצר ניתן למכור בחנות ספרים בשאנז אליזה.
בעולם התכנות המתורגמן שלנו זו תוכנית חשובה שנקראת מהדר (Compiler).
המהדר יודע לתרגם את הקוד שכתבנו בשפת #C לקוד בשפה שהמחשב מבין, דהיינו בשפת מכונה.
העבודה שהמהדר מבצע עבורנו הוא תהליך קלאסי עיבוד מידע:
יש קלט: תוכנית בשפת #C.
יש תהליך עיבוד: המרת הפקודות משפת #C לשפת מכונה.
יש פלט: תוכנית מוכנה להרצה בשפת #C בעלת הסיומת exe, במקרה שלנו HelloWorld.exe.
תהליך קומפילציה

התהליך נקרא בעברית הידור, אבל אנחנו, המתכנתים, מעדיפים את להשתמש במושג קומפילציה.
הערה ראשונה - התהליך שתואר מתאים לשפות תכנות קלאסיות כמו C, C++, Cobol אבל הוא לא מדויק ב-100% כשמדובר על C#.
המהדר של C# אינו מתרגם את הקוד לשפת מכונה, אלא לשפה מיוחדת שנקראת MSIL.
מבחינתו, בשלב זה, מספיק להכיר את התהליך כפי שהוא תואר, במאמרים אחרים נבין יותר לעומק את הרעיון שעומד מאחורי קובץ MSIL.
הערה שניה – בתהליך ההידור שלב נוסף שנקרא קישור (Linking) שמתבצע על ידי תוכנית שנקראת מקשר (Linker).
גם ממנה בחרתי להתעלם כרגע, נחזור אליה בהמשך.
אחרי כל המלל הזה, איך מהדרים (או מקמפלים בלעז) ואיך מריצים?
כמה אפשרויות:
  1. האפשרות הראשונה היא לקמפל באמצעות לחיצה על המקש F7 במקלדת או בחירה בתפריט Build→Build Solution באמצעות העכבר.
  2. אפשרות שניה היא פשוט להריץ, במקרה זה Visual Studio יריץ את המהדר ואם תהליך ההידור יהיה תקין הוא גם יריץ את התוכנית.
    הרצה מתבצעת באמצעות שילוב המקשים CTRL→F5 או באמצעות העכבר בתפריט Debug→Start Without Debugging.
בשני המקרים Visual Studio ישמור את הקבצים לפני הפעולה, אבל בכל מקרה תמיד טוב ללחוץ CTRL→S מדי כתיבת כמה שורות קוד על מנת לשמור.
פלט:
פלט תוכנית הדוגמה Hello World

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


 

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