מהדר

Disambig RTL.svg המונח "הידור" מפנה לכאן. לערך העוסק במושג ביהדות, ראו הידור מצווה.
תרשים המתאר פעולת מהדר בעל מספר שפות ומספר יעדים

מְהַדֵּראנגלית: Compiler) הוא תוכנית מחשב המתרגמת משפת מחשב אחת לשפת מחשב אחרת. המהדר הקלאסי מקבל כקלט תוכנית הכתובה בשפה עילית ומתרגם אותה לתוכנית בשפת מכונה. מהדר תואם בדרך כלל לסוג מעבד מסוים בלבד, ולגירסת שפה מסוימת, ותוצריו לא יהיו תואמים למעבד אחר. פעולת המהדר קרויה הידוּר.

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

תהליך בניית תוכנת מחשב מתחלק לשני שלבּים עיקריים - הידור וקישור. המהדר אחראי על תהליך ההידור. בתהליך ההידור ממיר המהדר את הקוד שכתב המתכנת, לשפת מכונה, כך שעבור כל קובץ שעבר הידור נוצר קובץ מקביל בשפת מכונה. קובץ זה מסומן בדרך כלל כקובץ OBJ (או O במהדרים אחרים). תהליך ההידור מורכב ממספר תת-שלבים עיקריים: ניתוח מילולי, ניתוח תחבירי, ניתוח סמנטי, ולבסוף שלב יצירת קוד המכונה.

בתהליך הקישור מקושרים ביחד קבצים אלה לתוצר סופי- תוכנה שניתנת לביצוע במעבד ובמערכת הפעלה מסוימת.

מהדרים של שפות תכנות מסוימות מפיקים קוד למעבד וירטואלי שאינו מיושם באופן ישיר בחומרה. דוגמה לשפות כאלה - ‏Java‏, ‎C#‎ ו-Smalltalk. היתרון בשיטה זו הוא היכולת להריץ את אותו קובץ מהודר במעבדים מסוגים שונים.

רקע

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

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

תפקידו של המהדר, אם כך, הוא להמיר את הדקדוק העילי לדקדוק שפת המכונה. באופן כללי ניתן לומר שככל ששפת התכנות מופשטת יותר, כך על המהדר להיות מורכב יותר.

Other Languages
English: Compiler
aragonés: Compilador
العربية: محول برمجي
asturianu: Compilador
azərbaycanca: Kompilyasiya
беларуская: Кампілятар
беларуская (тарашкевіца)‎: Кампілятар
български: Компилатор
bosanski: Kompajler
català: Compilador
کوردی: کۆمپایلەر
čeština: Překladač
dansk: Compiler
Deutsch: Compiler
Zazaki: Arêkerdoğ
Esperanto: Tradukilo
español: Compilador
euskara: Konpiladore
فارسی: کامپایلر
français: Compilateur
Gaeilge: Tiomsaitheoir
galego: Compilador
हिन्दी: अनुभाषक
hornjoserbsce: Kompilator
Հայերեն: Կոմպիլյատոր
interlingua: Compilator
Bahasa Indonesia: Kompilator
Ilokano: Manggupgop
italiano: Compilatore
日本語: コンパイラ
ქართული: კომპილატორი
қазақша: Компилятор
한국어: 컴파일러
Кыргызча: Компилер
Latina: Compilatrum
Lëtzebuergesch: Compiler
lietuvių: Kompiliatorius
latviešu: Kompilators
олык марий: Компиляций
മലയാളം: കംപൈലർ
Bahasa Melayu: Penyusun
Mirandés: Cumpilador
မြန်မာဘာသာ: Compiler
नेपाली: कम्पाइलर
Nederlands: Compiler
norsk: Kompilator
ਪੰਜਾਬੀ: ਕੰਪਾਇਲਰ
polski: Kompilator
پنجابی: کمپائلر
português: Compilador
română: Compilator
русский: Компилятор
Scots: Compiler
srpskohrvatski / српскохрватски: Kompajler
Simple English: Compiler
slovenščina: Prevajalnik
српски / srpski: Компилатор
svenska: Kompilator
తెలుగు: కంపైలర్
Tagalog: Compiler
Türkçe: Derleyici
українська: Компілятор
اردو: کمپائلر
Tiếng Việt: Trình biên dịch
Winaray: Kompilador
ייִדיש: קאמפיילער
中文: 編譯器
Bân-lâm-gú: Chhau-chi̍p-khì