ההבדלים בין מהדרים למתורגמנים

לפני ה ג'אווה ושפות תכנות C # הופיעו, תוכנות מחשב היו בלבד מלוקט או פירשתי. שפות כמו שפת הרכבה, C, C ++, פורטרן, פסקל הוכנסו כמעט תמיד לקוד מכונה. שפות כמו Basic, VbScript ו- JavaScript התפרשו בדרך כלל.

אז מה ההבדל בין תוכנית מורכבת לתוכנית המתפרשת?

מהדר

כדי לכתוב תוכנית נוקטת בצעדים הבאים:

  1. ערוך את התוכנית
  2. ערוך את התוכנית לקבצי קוד מכונה.
  3. קשר את קבצי קוד המכונה לתוכנית הניתנת להפעלה (הידועה גם כ- exe).
  4. ניפוי באגים או הפעל את התוכנית

עם כמה שפות כמו טורבו פסקל ודלפי משולבים שלבים 2 ו -3.

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

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

instagram viewer

מפרש

השלבים להפעלת תוכנית באמצעות מתורגמן הם

  1. ערוך את התוכנית
  2. ניפוי באגים או הפעל את התוכנית

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

הזן Java ו- C #

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

ג'אווה, כאשר היא מורכבת, מייצרת קוד תצורה המתפרש בזמן ריצה על ידי Java Virtual Machine (JVM). JVMs רבים משתמשים במהדר Just-In-Time שממיר את קוד הקידוד לקוד מכונה מקורי ואז מפעיל את הקוד הזה כדי להגדיל את מהירות הפרשנות. למעשה קוד המקור של Java מורכב בתהליך דו-שלבי.

C # מורכב לשפת ביניים נפוצה (CIL, שכונה בעבר שפת ביניים של מיקרוסופט MSIL. זה מנוהל על ידי Common Language Runtime (CLR), חלק ממסגרת NET. סביבה המספקת שירותי תמיכה כמו איסוף זבל והרכבת Just-In-Time.

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

מה זה אומר עלי?

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

instagram story viewer