השלב האחרון ביצירת תוכנית הוא תרגום אלגוריתם שנכתב באחת משפות התכנות (C/C++, Pascal וכו') לשפת מכונה ברמה נמוכה. זאת בשל העובדה שכדי לבצע כל משימה, מחשבים צריכים לקבל פקודות בשפה שהם מבינים, קרובה לבינארי ופועלת עם מבני נתונים פרימיטיביים (ביט, בייט או מילה). תהליך תרגום הצהרות ספציפיות לתחום של שפות ברמה גבוהה לקוד בינארי נקרא תרגום. ישנן שתי שיטות תרגום - קומפילציה ופרשנות.
מהדר - מה זה?
ניתוח של פרשנויות רבות למונחים "מהדר" ו"קומפילציה" מאפשר לנו להדגיש את ההגדרה הבאה. מהדר הוא תוכנה שנועדה לתרגם את הטקסט של אלגוריתם מקור משפה ברמה גבוהה למערכת שווה של הוראות בשפה מוכוונת מכונה. זהו מה שנקרא קוד האובייקט, להרכבה הבאה של קוד האובייקט שנוצר למודול תוכנית מוכן לשימוש.
מהדר ומתורגמן - דמיון והבדלים
מתורגמן הוא כלי עזר שכמו גם מהדר, שנועד לתרגם קוד מקור לקוד מכונה. עם זאת, בניגוד למהדר, המתורגמן רץ בכל פעם עם התוכנית ומבצע את התרגום שורה אחר שורה.
ניתן לומר שהמהדר והמתורגמן הם מעבדי שפה המאפשרים למחשב לזהות ולבצע פקודות שניתנו על ידי המתכנת.
סיווג מהדר
מהדרים מסווגים בעיקר לפי תכונות הקשורות לתחומי היישום המעשיים שלהם.
Vectorizing compiler הוא כלי עזר שמתרגם קוד מקור לקוד אובייקט ומותאם למחשבים המצוידים במעבדי וקטור.
מהדר גמיש מתוכנת בשפה ברמה גבוהה בצורה מודולרית. ניהולו מתבצע באמצעות טבלאות. אפשר גם להפעיל אותו באמצעות המהדר של המהדרים.
מהדר אינקרמנטלי הוא מעבד שפה שמתרגם מחדש קטעים נפרדים של קוד מקור ותוספות לו. עם זאת, זה נמנע מהידור מחדש של האפליקציה כולה.
מהדר פרשני (צעד) הוא כלי עזר שמבצע קומפילציה עצמאית ברצף של כל הצהרה או פקודה של קוד מקור ברמה גבוהה.
מהדר של מהדרים הוא מתרגם המסוגל לקבל תיאור פורמלי לשפת תכנות וליצור באופן עצמאי מהדר לכל שפה.
מהדר באגים מאפשר לך למצוא ולתקן כמה סוגים של שגיאות תחביר שנעשו בעת כתיבת קוד מקור
מהדר תופס מקום קבוע ב-RAM ולכן ניתן לשימוש חוזר במגוון רחב של משימות.
המהדר בהרכבה עצמית כתוב באותה שפה כמו התרגום.
המהדר האוניברסלי מבוסס על תיאור פורמלי של הפרמטרים הסמנטיים והתחביריים של שפת הקלט. המרכיבים העיקריים של כלי עזר כזה הם המטענים הליבה, תחביריים וסמנטיים.
מכשיר מהדר
מהדר ומקשר הם הלב של כל מהדר. לעתים קרובות, בעת הידור, נעשה שימוש במקשר חיצוני, והמהדר עצמו מבצע רק את פונקציית התרגום. קורה גם שהקומפיילר מיושם כמעין תוכנית מנהל המשויכת למתרגם (או למתרגמים, אם נעשה שימוש בשפות תכנות שונות בעת כתיבת קוד המקור) ולמקשר ומתחיל את ביצועם בעת הצורך.
שפות תכנות ושיטות תרגום
למרות העובדה שתוכנית הכתובה בכל שפת תכנות ניתנת גם להידור וגם לפרש, לשפות רבות ברמה גבוהה יש נטייה לשיטת תרגום כזו או אחרת. אז, שפת C תוכננה במקור להידור, ו-Java - לפירוש התוכנית הכתובה. נמצאים בפיתוחמהדרים של C הם די קלים, הודות לרמתם הנמוכה יחסית ומספר קטן של אלמנטים מבניים.
יתרונות וחסרונות של מהדרים ומתורגמנים. יישומים
שימו לב שיישומים מהודרים מהירים יותר מאלו שפורשו, אך יחד עם זאת, קוד המכונה המתקבל כתוצאה מהקומפילציה תלוי בפלטפורמת החומרה. אז, תוכנית שנכתבה והורכבה עבור Windows לא תעבוד, למשל, בלינוקס. לכן, במקרה של יישומי אינטרנט, כשאי אפשר לומר מראש באיזו סביבה הם יעבדו, הם משתמשים בפרשנות או ב-bytecode (במקרה זה, תוכנית המקור מומרת לצורת ביניים שניתן להפעיל על חומרות שונות פלטפורמות).