מפרש (תוכנה)
מתוך ויקיפדיה, האנציקלופדיה החופשית
מפרש (Interpreter) הוא תוכנה הקוראת תוכנית מחשב הכתובה בשפת תכנות ומבצעת אותה מיד.
תוכן עניינים |
[עריכה] מפרש לעומת מהדר
כל מחשב הוא מכונה, המסוגלת להריץ תכניות הכתובות בשפה הייחודית לה. לכן, על מנת להריץ תוכנית מסוימת, הכתובה בשפה שאינה שפת המכונה של המחשב המריץ, ראשית יש לתרגמה לשפה זו. תרגום זה יכול להתבצע פעם אחת (ואז בסיום התרגום נוצר קובץ הכתוב בשפת מכונה, הניתן להרצה בכל עת) כפי שנעשה על ידי מהדר, או לפני כל פעם בה מריצים את התוכנית, כפי שנעשה על ידי מפרש. ההבדל בין השניים, איפוא, הוא מתי מבוצע התרגום. מהבדל זה נגזרים המאפיינים של כל אחד מהם.
[עריכה] יתרונות וחסרונות
תהליך ההידור הוא תהליך מורכב מאד, הספציפי למכונה מסוימת. כלומר במידה והידרנו תוכנית מסוימת באמצעות מהדר המותאם למכונה מסוימת, התוכנית תרוץ על מכונה זו בלבד. מפרש, לעומת זאת, יאפשר הרצה של התוכנית כמעט בכל מכונה משום שהתוכנית תתורגם על כל מכונה מחדש.
מאידך, ברור כי שימוש במפרש עלול לצרוך משאבים רבים בשל העובדה כי התוכנית מתורגמת כל פעם מחדש. בנוסף, דרישות מסוימות של התוכנית (כמו הקצאת זיכרון) עלולים לקחת יותר זמן בעת שימוש במפרש לאור העובדה שהתוכנית לא עובדת ישירות מול מערכת ההפעלה, אלא מול המפרש.
לאור הבעייתיות שהוצגה, שימוש טהור במפרש נדיר, ונעשה בעיקר ברשת האינטרנט, שם יש צורך בגמישות רבה. אחד היתרונות של שימוש בקוד בלתי מהודר הוא העובדה, שניתן להחליף את המפרש עצמו מבלי להדר מחדש את קובצי התוכנית. כך אין צורך להפיץ מחדש את התוכנית עם כל שדרוג של השפה בה כתוב קוד המקור. לתוכנית המיועדת להרצה באמצעות מפרש קוראים תסריט (סקריפט).
[עריכה] שפות חצי מהודרות
השאיפה כיום היא לבנות מתרגם, הנהנה מהיתרונות של מפרש ומהדר גם יחד.
הפתרון שנמצא הוא הפרדת תהליך התרגום לשני שלבים: בשלב הראשון, שלב ההידור, מבוצע תרגום של תוכנית הכתובה בשפה עילית לשפת ביניים. זהו תהליך מורכב הדורש זמן רב יחסית. בשלב השני, שלב ההרצה, מתורגמת שפת הביניים לשפת מכונה (המכונה הספציפית עליה רצה התוכנית). זה תהליך פשוט יותר ומהיר באופן יחסי.
כיום מובילות את התחום שתי סביבות פיתוח: JAVA ו-NET.. בסביבת JAVA, לאחר הידור התוכנית, נוצר קובץ המכיל הוראות בשפת Bytecode, ולפני הרצת התוכנית כל הקובץ מתורגם לשפת מכונה. בסביבת NET., לאחר הידור התוכנית, נוצר קובץ המכיל הוראות בשפת CIL, וכל פונקציה בתוכנית מתורגמת לשפת מכונה לפני הרצתה.
על אף ההבדלים ביניהן, העקרון העומד מאחורי שתי הסביבות הוא זהה, והוא התבססותן של שתי השפות על שימוש במכונה וירטואלית.
[עריכה] סוגי מפרשים
מפרשים נפוצים הם: JavaScript, Python, Prolog, TCL ,bash ובעבר גם שפת APL וכן שפת LOGO לילדים.
בניגוד למה שמקובל לחשוב, השאלה האם השפה עוברת הידור או פירוש איננה קשורה בהכרח לדרישה של נוכחות סביבת הפיתוח. תוכנית Perl עוברת הידור בכל פעם שהיא מורצת ולכן יש דרישה לסביבת הפיתוח. לעומת זאת הגרסאות הראשונות של Visual Basic היו מפורשות למרות שלא הייתה סביבת הפיתוח (היה נעשה הידור חלקי לתוכנה ובזמן ההרצה היא הייתה מפורשת).