يمكن لوحدة المعالجة المركزية تشغيل كود الآلة فقط. يجب تحويل برنامج عالي المستوى أولاً إلى كود آلة. البرمجيات التي تقوم بذلك هي المُترجم. توجد ثلاثة أنواع: المُترجم الكامل والمُفسِّر (للأكواد عالية المستوى)، والمُجمِّع (للأكواد منخفضة المستوى).
المترجم (Compiler)
المُترجم الكامل يُترجم الكامل البرنامج إلى كود آلة قبل تشغيله. بعد الترجمة، يمكن تشغيل كود الآلة مرات عديدة دون الحاجة لإعادة الترجمة.
- تحدث الترجمة مرة واحدة وبشكل كامل;
- يُبلغ عن جميع الأخطاء معًا، في نهاية عملية الترجمة;
- البرنامج النهائي يعمل بسرعة ولا يحتاج إلى وجود المُترجم الكامل أثناء التشغيل.
المُفسِّر (Interpreter)
المُفسِّر يُترجم ويشغل البرنامج سطراً تلو الآخر.
- يتوقف عند أول خطأ يجده، وهو ما يساعد في مرحلة الاختبار;
- يعمل البرنامج بشكل أبطأ، لأنه يتم ترجمته كل مرة يتم فيها تشغيله;
- يجب أن يكون المُفسِّر موجودًا في كل مرة يتم فيها تشغيل البرنامج.
|
المترجم |
المفسر |
| الترجمة |
البرنامج بأكمله دفعة واحدة |
سطرًا تلو الآخر |
| الأخطاء |
تُبلغ جميعها في النهاية |
يتوقف عند أول خطأ |
| سرعة البرنامج النهائي |
أسرع |
أبطأ |
| هل هو مطلوب للتشغيل لاحقاً؟ |
لا |
نعم |
استخدم المُترجم الكامل عندما ترغب في مشاركة برنامج نهائي سريع. استخدم المُفسِّر عندما تكون في مرحلة كتابة واختبار برنامج وتريد اكتشاف الأخطاء بسهولة.
المترجم
المُجمِّع يُترجم برنامج لغة تجميع منخفضة المستوى (مكتوب برموز مجزية مثل LDA، ADD) إلى كود آلة. كل رمز مجزي يصبح تعليمية واحدة من تعليمات الآلة — ترجمة مباشرة من واحد لواحد، على عكس المُترجم الكامل أو المُفسِّر الذي يعمل على الأكواد عالية المستوى.
*المُترجم الكامل يترجم البرنامج كاملاً مرة واحدة إلى كود آلة؛ بينما المُفسِّر يترجم ويشغل سطراً تلو الآخر
مثال محلول. فريق يكتب برنامجًا. أثناء تطويره، يرغبون في العثور على الأخطاء وإصلاحها بسرعة؛ وعند إطلاقه للعملاء، يرغبون في أن يعمل Program بسرعة دون رؤية الكود المصدر. أي مُترجم يناسب كل مرحلة؟ أثناء التطوير، استخدم المُفسِّر: فهو يترجم ويشغل سطراً تلو الآخر ويتوقف عند أول خطأ، مما يجعل定位 الخطأ سهلاً. للإطلاق، استخدم المُترجم الكامل: فهو يترجم البرنامج كاملاً مرة واحدة إلى كود آلة، والذي بدوره يعمل بسرعة بدون وجود المُترجم، ويستلم العميل الملف التنفيذي بدلاً من الكود المصدر. الاثنان ليسا منافسين - حدد المرحلة وقدم السبب، لأن عبارة "المُترجم الكامل أسرع" وحدها لا تمنح نقاطاً.