חסרונות ויתרונות של מהדרים

...

מתכנתים משתמשים במהדרים כדי להפוך קוד מקור לקוד מכונה.

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

יתרון: עצמאי ויעיל

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

סרטון היום

חסרון: חומרה ספציפית

מכיוון שקומפיילר מתרגם קוד מקור לשפת מכונה מסוימת, תוכניות חייבות להיות הידור במיוחד עבור OS X, Windows או Linux, כמו גם במיוחד עבור 32 סיביות או 64 סיביות ארכיטקטורות. עבור מתכנת או חברת תוכנה שמנסה להוציא מוצר לקהל הרחב ביותר האפשרי, זה אומר לשמור על מספר גרסאות של קוד המקור עבור אותה אפליקציה. זה גורם ליותר זמן לבזבז על תחזוקת קוד המקור ובעיות נוספות בעת שחרור עדכונים.

יתרון: אופטימיזציה של חומרה

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

חסרון: הידור זמנים

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