מהדר
מתוך ויקיפדיה, האנציקלופדיה החופשית
מהדר (באנגלית Compiler) הוא תוכנית מחשב המתרגמת בין שפת מחשב אחת לשפת מחשב אחרת. המהדר הקלאסי מקבל כקלט תוכנית הכתובה בשפה עילית ומתרגם אותה לתוכנית בשפת מכונה. מהדר תואם בדרך כלל לסוג מעבד מסוים בלבד, ולגירסת שפה מסוימת, ותוצריו לא יהיו תואמים למעבד אחר. פעולתו של המהדר קרויה הידור (קומפילציה).
המהדר ממיר פקודות משפה המוגדרת על ידי דקדוק אחד לפקודות שמוגדרות על ידי דקדוק אחר. המרה זו בדרך כלל איננה פונקציה חד-חד ערכית, כלומר את התוצר של מהדר לרוב לא ניתן לתרגם חזרה לקוד המקור: מקודי מקור שונים אפשר להגיע לאותו תוצר סופי.
תהליך בניית תוכנת מחשב מתחלק לשני שלבים עיקריים - הידור וקישור. המהדר, כשמו כן הוא, אחראי על תהליך ההידור. בתהליך ההידור ממיר המהדר את הקוד שכתב המתכנת, לשפת מכונה, כך שעבור כל קובץ שעבר הידור נוצר קובץ מקביל בשפת מכונה. קובץ זה מסומן בדרך כלל כקובץ OBJ (או O במהדרים אחרים). בתהליך הקישור מקושרים ביחד קבצים אלה לתוצר סופי- תוכנה שניתנת לביצוע במעבד ובמערכת הפעלה מסוימת.
מהדרים של שפות תכנות מסוימות מפיקים קוד למעבד וירטואלי שאינו מיושם באופן ישיר בחומרה. דוגמה לשפות כאלה - Java, C# ו-Smalltalk. היתרון בשיטה זו הוא היכולת להריץ את אותו קובץ מהודר במעבדים מסוגים שונים.
[עריכה] רקע
כידוע, מחשבים אינם בעלי בינה ואינם מבצעים דבר פרט למספר מוגבל של פקודות חישוב אלקטרוניות. כל מחשב בנוי על שבב אלקטרוני אחד או יותר הקרוי מעבד המסוגל לקבל בצורה בינארית נתוני קלט, לבצע עליהם פעולה מסוימת ולחשב את הפלט. הכנסת הנתונים והפקודות למעבד מתבצעת בצורה של הכנסת קוד (מספר) של פקודה, יחד עם הנתונים שיעובדו. רצף הפקודות שניתן למעבד נקרא שפת מכונה. אותה שפת מכונה היא היא התוכנה המוכנסת למחשב.
בשל הקושי לתכנת את המחשב בשפת מכונה, פותחו עם השנים שפות תכנות מופשטות יותר, הנקראות בשם הקיבוצי שפות עיליות. הדקדוק המגדיר שפה עילית הוא מורכב יותר מדקדוק שפת המכונה, אך עם זאת נהיר יותר לבני אדם ומאפשר התייחסות מופשטת יותר להיבטים שונים של החומרה והתוכנה, תחזוקתיות קלה יותר, ופיתוח מהיר יותר.
תפקידו של המהדר, אם כך, הוא להמיר את הדקדוק העילי חזרה לדקדוק שפת המכונה. באופן כללי ניתן לומר שככל ששפת התכנות היא מופשטת יותר, כך על המהדר להיות מורכב יותר.
[עריכה] ראו גם
קטגוריות: קצרמר מחשבים | תוכנה | תכנות