מְהַדֵּר (Compiler) הוא תוכנית מחשב שמתרגמת קוד משפה אחת לאחרת. בדרך כלל הוא מקבל קוד בשפה עילית, שפה שבה מתכנתים כותבים, ומייצר קוד בשפת מכונה, שהיא השפה שהמעבד מבין. מהדרים מותאמים בדרך כלל לסוג מעבד ולגרסת שפה, ולכן תוצר ההידור לא תמיד יעבוד על מעבד אחר. הפעולה נקראת הידור.
המהדר ממיר פקודות שמוגדרות על ידי דקדוק אחד לפקודות של דקדוק אחר. ההמרה בדרך כלל אינה הפיכה: קודי מקור שונים יכולים להניב את אותו קוד מכונה.
תהליך בניית תוכנה נחלק לשני שלבים עיקריים: הידור וקישור. בשלב ההידור המהדר יוצר עבור כל קובץ קובץ מקביל בשפת מכונה, בדרך כלל קובץ OBJ. בשלב הקישור מקשרים ביחד קבצים אלו לתוכנה שניתנת להרצה במעבד ובמערכת ההפעלה.
מחשבים אינם מבינים טקסט רגיל. המעבד מקבל פקודות כמספרים בבינארי. רצף הפקודות הזה נקרא שפת מכונה. בגלל שקשה לתכנת ישירות בשפת המכונה, פותחו שפות עיליות, שפות קריאות יותר שנותנות שיכלול מופשט על החומרה. תפקיד המהדר הוא לתרגם את הדקדוק העילי לדקדוק שפת המכונה. ככל שהשפה עילית יותר מופשטת, כך המהדר צריך להיות מורכב יותר.
תהליך ההידור מחולק למספר תתי־שלבים עיקריים: ניתוח מילולי (זיהוי מילים וסימנים), ניתוח תחבירי (בדיקת מבנה הקוד), ניתוח סמנטי (בדיקת משמעות הקוד), ולבסוף יצירת קוד מכונה.
מהדרים של שפות מסוימות מייצרים קוד למעבד וירטואלי, מעבד שאינו חומרה ממשית. דוגמאות נפוצות הן Java ו־C#. היתרון הוא שניתן להריץ את אותו קובץ מהודר על מעבדים מסוגים שונים.
שגיאות זמן הידור הן השגיאות שהמהדר מזהה במהלך ההידור. שגיאות שונות מתגלות בשלבים שונים של ההידור. זיהוי שגיאה יכול לעצור את ההידור, או להופיע כאזהרה בלבד. אזהרות הן הודעות על בעיות פוטנציאליות שלא מונעות תמיד את יצירת הקוד, כמו חלקי קוד מיותרים.
מְהַדֵּר (תכנה שמתרגמת) הוא תוכנה שממירה שפה של תוכנה לשפה שהמחשב מבין. שפה עילית היא שפה שאנשים כותבים בה. שפת מכונה היא השפה שהמעבד מבין.
המהדר עובד בשלבים. קודם מזהה מילים וסימנים בקוד. אחר כך בודק אם המבנה נכון. הוא גם בודק אם הקוד הגיוני. בסוף הוא יוצר קוד שהמחשב יכול להריץ.
מחשב לא מבין מילים רגילות. הוא מבין רק פקודות מספריות. לכן יש שפות קלות לכתיבה. המהדר עוזר לתרגם אותן לשפת המכונה.
כמה מהדרים לא יוצרים קוד למעבד אמיתי. הם מייצרים קוד למעבד וירטואלי, כלומר מכונה מדומה. דוגמאות ידועות לכך הן Java ו־C#.
אם יש טעות בקוד, המהדר יזהה אותה בזמן ההידור. לפעמים ההידור נעצר. לפעמים יש אזהרות בלבד שאומרות שיש בעיות קטנות.
תגובות גולשים