Assembler vs Interpreter
באופן כללי, מהדר היא תוכנת מחשב שקוראת תוכנית הכתובה בשפה אחת, הנקראת שפת המקור, ומתרגמת אותה לשפה אחרת, הנקראת שפת היעד. באופן מסורתי, שפת המקור היא שפה ברמה גבוהה כמו C++ ושפת היעד היא שפה ברמה נמוכה כמו שפת Assembly. עם זאת, ישנם מהדרים שיכולים להמיר תוכנית מקור הכתובה בשפת Assembly ולהמיר אותה לקוד מכונה או לקוד אובייקט. מרכיבים הם כלים כאלה. מצד שני, מתורגמנים הם כלים שמבצעים הוראות שנכתבו בשפת תכנות כלשהי.המתורגמן יכול להפעיל ישירות קוד מקור ברמה גבוהה או לתרגם אותם לקוד ביניים ולאחר מכן לפרש אותו או לבצע קוד הידור מראש.
מהו אסמבלר?
Assembler היא תוכנה או כלי שמתרגם את שפת ה-Assembly לקוד מכונה. אז, אסמבלר הוא סוג של מהדר וקוד המקור כתוב בשפת Assembly. Assembly היא שפה קריאה אנושית אך בדרך כלל יש לה קשר אחד לאחד עם קוד המכונה המתאים. לכן אומרים על אסמבלר לבצע תרגום איזומורפי (מיפוי אחד לאחד). מרכיבים מתקדמים מספקים תכונות נוספות התומכות בפיתוח תוכניות ובתהליכי איתור באגים. לדוגמה, סוג ההרכבים הנקרא מאקרו assemblers מספק מתקן מאקרו.
מהו מתורגמן?
מתורגמן היא תוכנת מחשב או כלי שמבצע הוראות תכנות. מתורגמן יכול להפעיל את קוד המקור ישירות או להמיר את המקור לקוד ביניים ולהפעיל אותו ישירות או לבצע קוד הידור מראש שהופק על ידי מהדר (חלק ממערכות המתורגמנים כוללות מהדר למשימה זו).שפות כמו Perl, Python, MATLAB ו-Ruby הן דוגמאות לשפות תכנות המשתמשות בקוד ביניים. UCSD Pascal מפרש קוד הידור מראש. שפות כמו Java, BASIC ו-Samlltalk מרכיבות תחילה את המקור לקוד ביניים שנקרא bytecode ואז מפרשנות אותו.
מה ההבדל בין אסמבלר למתורגמן?
אסמבלר יכול להיחשב כסוג מיוחד של מהדר, שמתרגם רק שפת Assembly לקוד מכונה. מתורגמנים הם כלים המבצעים הוראה הכתובה בשפה כלשהי. מערכות מתורגמנים עשויות לכלול מהדר להידור מראש של קוד לפני הפרשנות, אך לא ניתן לכנות מתורגמן סוג מיוחד של מהדר. מרכיבים מייצרים קוד אובייקט, שאולי צריך לקשר אותו באמצעות תוכניות מקשר כדי לרוץ על מכונה, אך רוב המתורגמנים יכולים להשלים את הביצוע של תוכנית בעצמם. אסמבלר יבצע בדרך כלל תרגום אחד לאחד, אבל זה לא נכון עבור רוב המתורגמנים.מכיוון שלשפת Assembly יש מיפוי אחד לאחד עם קוד מכונה, אסמבלר עשוי לשמש לייצור קוד שפועל ביעילות רבה למקרים שבהם הביצועים חשובים מאוד (לדוגמה למנועי גרפיקה, מערכות משובצות עם משאבי חומרה מוגבלים בהשוואה למחשב אישי כמו מיקרוגלים, מכונות כביסה וכו'). מצד שני, מתורגמנים משמשים כאשר אתה צריך ניידות גבוהה. לדוגמה, ניתן להפעיל את אותו Java bytecode בפלטפורמות שונות באמצעות המתורגמן המתאים (JVM).