المترجم والمفسّر (Compiler vs Interpreter): الفرق ودور Bytecode والآلة الافتراضية
Compiler vs Interpreter
الجواب المختصر
المترجم (Compiler) يحوّل البرنامج كاملًا مرة واحدة إلى ملف تنفيذي، فيكون التشغيل سريعًا وتظهر الأخطاء غالبًا عند البناء، كما في C/C++. والمفسّر (Interpreter) يشغّل الكود خطوة بخطوة أثناء التنفيذ، فيناسب التجارب والتطوير السريع لكنه أبطأ نسبيًا، كما في Python غالبًا. وبعض اللغات مثل Java تجمع الطريقتين: تحوّل الكود إلى Bytecode يعمل على آلة افتراضية.
شرح مفصّل
تتحول الشيفرة التي نكتبها إلى شيء يفهمه الحاسوب بإحدى طريقتين. المترجم (Compiler) يحوّل البرنامج كاملًا مرة واحدة إلى ملف تنفيذي أو كود آلة، فيكون التشغيل سريعًا لأن التحويل حصل مسبقًا، وتظهر الأخطاء غالبًا في مرحلة البناء، كما في C/C++ (تكتب الكود ← Compile ← ملف exe ← تشغّله). المفسّر (Interpreter) يشغّل الكود خطوة بخطوة أثناء التنفيذ، وهو مناسب للتجارب السريعة والتطوير السريع لكنه أبطأ نسبيًا، كما في Python غالبًا. وبعض اللغات (مثل Java) تحوّل الكود إلى Bytecode يعمل على آلة افتراضية (JVM) فتكون محمولة بين الأنظمة.
| المترجم | المفسّر | Bytecode + آلة افتراضية | |
|---|---|---|---|
| كيف يعمل؟ | يحوّل البرنامج كاملًا مرة واحدة إلى ملف تنفيذي | يشغّل الكود خطوة بخطوة أثناء التنفيذ | يحوّل الكود إلى Bytecode ثم يُشغَّل على آلة افتراضية |
| السرعة | التشغيل سريع (التحويل تم مسبقًا) | أبطأ نسبيًا | تستفيد من تحسينات أثناء التشغيل |
| الأخطاء | تظهر غالبًا أثناء البناء | تظهر أثناء التنفيذ | — |
| مثال | C/C++ | Python غالبًا | Java مع JVM |
| ميزة | ملف جاهز للتشغيل | مناسب للتجارب والتطوير السريع | محمولة بين الأنظمة |
وهذا يوضح لماذا يُنظر إلى أنواع اللغات بحسب طريقة تنفيذها، ولماذا تختلف معايير المقارنة (الأداء وقابلية النقل) بين لغة وأخرى. ولأصل الفكرة انظر النظام الثنائي.
مثال لتذكّر الفرق
المترجم كمن يترجم كتابًا كاملًا ثم يسلّمه جاهزًا للقراءة؛ والمفسّر كمترجم فوري يترجم جملة بجملة أثناء الحديث. الأول أسرع عند القراءة، والثاني أنسب للمحادثة السريعة والتجارب.
- لغة تُترجم قبل التشغيل ← أخطاء البناء تظهر مبكرًا.
- لغة تُفسَّر ← تجرّب وتصحّح بسرعة لكن بتشغيل أبطأ غالبًا.
المصطلحات: عربي ↔ English
- مترجم
- Compiler
- مفسّر
- Interpreter
- كود وسيط
- Bytecode
- آلة افتراضية
- Virtual Machine
لماذا يهمّ هذا في BTEC؟
يظهر الفرق في ثلاثة أسئلة: متى تظهر الأخطاء؟ وكم سرعة التشغيل؟ وما الأنسب للتجارب؟ والجدول يجيب عنها.
أسئلة تجيب عنها هذه الصفحة
- ما الفرق بين المترجم والمفسر؟
- ما هو Bytecode؟
مفاهيم مرتبطة
- أنواع لغات البرمجة: الآلة والتجميع وعالية المستوى ووصف المحتوى والنصيةلغات المستوى المنخفض (الآلة والتجميع) قريبة من المعالج وتعطي تحكمًا دقيقًا لكنها صعبة، ولغات المستوى العالي (C++ وPython وJava) أقرب للبشر وتُترجم بمترجم أو مفسر. وهناك لغات وصف المحتوى (HTML وXML) واللغات النصية (PHP وPython وRuby).
- كيف نقارن لغات البرمجة؟ سهولة الكتابة والوضوح والبيانات والنقل والأداء والصيانةتُقارَن لغات البرمجة بمعايير: سهولة كتابة البرنامج، ووضوح الكود، والتعامل مع البيانات، والتخزين والحفظ، وقابلية النقل بين الأنظمة، والأداء، وسهولة الصيانة. وكل لغة أقوى في معايير وأضعف في غيرها بحسب تصميمها وبيئتها.
- النظام الثنائي (Binary): البت والبايت وكيف يخزن الحاسوب كل شيء بـ 0 و1الحاسوب يعتمد داخليًا على حالتين كهربائيتين تُمثَّلان بـ 0 و1، لذلك يستخدم النظام الثنائي (أساس 2). كل خانة ثنائية تسمى بت، وكل 8 بتات بايت، وبالبايتات تُمثَّل الأعداد والنصوص والصور والأصوات.
عن كاتب الصفحة

مدرّس BTEC IT · الأردن
- نوع المحتوى
- شرح مبني على مادة أحمد دومي — وليس نصًّا رسميًّا من Pearson
- آخر مراجعة
- ملاحظة على المصدر
- تعتمد هذه الصفحة على ملاحظات قصيرة لأحمد دومي عن الموضوع، وأُضيف إليها شرح توضيحي عام ليكتمل الجواب.
- المصدر
- ملاحظات الأدوات البرمجية (أحمد دومي) — المترجم والمفسّر