مترجمات اللغات وبيئات التطوير المتكاملة (IDEs)
| English | العربية |
|---|---|
| compiler/kəmˈpaɪlə/ | مُترجم |
| source code/sɔːs kəʊd/ | الكود المصدري |
| translator/trænˈsleɪtə/ | مُترجم |
| machine code/məˈʃiːn kəʊd/ | كود الآلة |
| assembler/əˈsemblə/ | مبرمج |
| assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ | لغة التجميع |
| object code/ˈɒbdʒekt kəʊd/ | الكود الهدف |
| executable/ɪɡˈzekjʊtəbl/ | قابل للتنفيذ |
| interpreter/ɪnˈtɜːprɪtə/ | مُفسِّر |
| bytecode/ˈbaɪtkəʊd/ | bytecode |
| portable/ˈpɔːtəbl/ | قابل للنقل |
| virtual machine/ˈvɜːtʃuːəl məˈʃiːn/ | آلة افتراضية |
| just-in-time compilation/dʒʌst ɪn taɪm ˌkɒmpɪˈleɪʃn/ | تجميع في وقت التشغيل |
| integrated development environment/ˈɪntɪɡreɪtɪd dɪˈveləpmənt enˈvaɪrənmənt/ | بيئة التطوير المدمجة |
| context-sensitive prompts/ˈkɒntekst ˈsensɪtɪv prɒmpts/ | رسائل توجيه حساسة للسياق |
| auto-complete/ˈɔːtəʊ kəmˈpliːt/ | الاقتراح التلقائي |
| dynamic syntax checks/daɪˈnæmɪk ˈsɪntæks tʃeks/ | فحوصات نحوية ديناميكية |
| prettyprint/ˈpretɪprɪnt/ | تنسيق الجمالية للنص |
| breakpoints/ˈbreɪkpɔɪnts/ | علامات توقف |
| single stepping/ˈsɪŋɡl ˈstepɪŋ/ | التنفيذ خطوة بخطوة |
| report window/rɪˈpɔːt ˈwɪndəʊ/ | نافذة التقارير |
لم يصدق أحد أن الحاسوب يمكنه كتابة برنامجه الخاص
- في عام 1952، بنت غريس هوبير أول مُجمِّع، وهو برنامج يحول رموز المبرمج إلى تعليمات آلية. قالت لاحقًا: "لم يصدق أحد ذلك. كان لدي مُجمِّع يعمل ولم يمسك به أحد. قالوا لي إن الحواسيب يمكنها فقط إجراء العمليات الحسابية."
- كل لغة استخدمتها منذ ذلك الحين ترتكز على هذه الفكرة: أنت تكتب الكود المصدري للبشر، ويقوم المترجم بإنتاج الكود الآلي الذي يشغله المعالج.
- هناك ثلاثة أنواع من المترجمات ونوع هجين مشهور، والمطلوب في الامتحان هو تحديد متى ولماذا يجب استخدام كل نوع.
- هذه الدرس是关于 المترجمات، والت权衡 بين التجميع والتفسير، مزيج جافا لكلاهما، والأدوات التي توفرها بيئة التطوير المتكاملة (IDE) حولها.
الكود المصدري، الكود الآلي والمُجمِّع الفرعي (Assembler)
- المعالج ينفذ فقط الكود الآلي. يقوم المترجم بتحويل برنامج كُتب للبشر إلى هذا الكود.
- يُترجم المُجمِّع الفرعي لغة التجميع إلى الكود الآلي: كل تعليمة حروفية،
LDD،ADD،JMP، تصبح بالضبط تعليمة واحدة في الكود الآلي، ويتم استبدال العلامات والعناوين الرمزية بعناوين حقيقية. - تُستخدم لغة التجميع عندما يحتاج المبرمج إلى تحكم مباشر في الأجهزة: تعريفات الأجهزة، الأنظمة المدمجة، الحلقات الداخلية لألعاب الفيديو.
طابق كل مترجم مع وظيفته.
الراكم: لغة التجميع→كود الآلة؛ المترجم: الكل دفعة واحدة إلى ملف تنفيذي؛ المفسّر: سطرًا بسطر وقت التشغيل.
المترجم
- المترجم يُترجم البرنامج الكامل عالي المستوى إلى كود الآلة، أو الكود الهدف، قبل تشغيله. ينتج ملفاً قائماً بالتنفيذ ويُبلِّغ عن جميع أخطاء الصياغة معاً، في قائمة، في نهاية عملية الترجمة.
- لا يقوم بتشغيل البرنامج. بمجرد أن يصبح الكود خالياً من الأخطاء، يعمل الملف القائم بالتنفيذ دون الحاجة لتثبيت المترجم، لعدد غير محدود من المرات.
- سريع عند التشغيل، لأن لا شيء يتم ترجمته أثناء التشغيل؛ لكن كود الآلة مرتبط بمعالج واحد ونظام تشغيل واحد.
مسار المترجم: من المصدر إلى البرنامج runnable
مرر خطوة بخطوة كيف يعمل المترجم — بترجمة البرنامج بالكامل مرة واحدة قبل تشغيله. وقارنه بالمفسّر الذي يترجم ويشغل سطرًا تلو الآخر.
يختلف المترجم عن المفسّر لأنه:
يقوم المترجم بترجمة الكل دفعة واحدة إلى ملف تنفيذي يعمل بدون المترجم. بينما المفسّر يعمل سطرًا بسطر.
رتّب مسار المترجم بالترتيب، من كتابة الكود إلى تشغيله.
يقوم المترجم بترجمة البرنامج بالكامل مرة واحدة إلى ملف تنفيذي؛ ثم يعمل هذا الملف بدون المترجم.
المُفسِّر
- المُفسِّر يُترجم عبارة واحدة من البرنامج عالي المستوى في كل مرة وينفذها فوراً قبل الانتقال إلى العبارة التالية.
- لا يتم إنتاج ملف قائم بالتنفيذ. يتوقف عند أول خطأ يلقاه ويُبلِّغ عنه، مع رقم السطر، حتى تقوم بإصلاحه وتشغيل البرنامج مجدداً.
- يجب وجود كود المصدر والمُفسِّر معاً في كل مرة يتم فيها تشغيل البرنامج، ويتم إعادة الترجمة في كل مرة تشغيل، لذا فإن التنفيذ أبطأ؛ لكن نفس كود المصدر يعمل على أي جهاز يوجد به مُفسِّر.

ترجمة مرة واحدة وإرسالها، أو ترجمة أثناء العمل
متى يبلغ المفسّر عن الخطأ؟
المفسّر يعمل سطرًا بسطر، لذا يبلغ عن الخطأ في اللحظة التي يصل فيها إلى ذلك السطر — مفيد أثناء التطوير.
لا ينتج المفسّر ملفًا تنفيذيًا مستقلاً، لذا يجب تثبيت المفسّر نفسه لتشغيل البرنامج.
يقوم المفسّر بالترجمة والتشغيل سطرًا بسطر في كل مرة — لا يوجد ملف تنفيذي منفصل للتوزيع، على عكس المترجم.
الفوائد والعيوب، كما وردت في نموذج الإجابة
| المترجم | المُفسِّر | |
|---|---|---|
| سرعة التنفيذ | سريعة، الكود جاهز مسبقاً | أبطأ، يتم الترجمة في كل مرة تشغيل |
| ما يحتاجه المستخدم | الملف القائم بالتنفيذ فقط؛ يبقى كود المصدر سرياً | كود المصدر والمُفسِّر |
| اكتشاف الأخطاء | تُدرَج جميعها دفعة واحدة بعد الترجمة | يُبلَّغ عنها عند كل سطر أثناء التطوير |
| تغيير الكود | إعادة بناء (ترجمة) البرنامج كاملاً | تعديل وتشغيل فوري مجدد |
| قابلية النقل | منصة واحدة؛ إعادة البناء لكل منصة | يعمل حيثما وُجد مُفسِّر |
يجب عليك اختيار المترجم عندما:
الملفات التنفيذية المجمّعة سريعة ومستقلة. المفسّرات مناسبة للتطوير السريع والسكريبات المحمولة.
أي النقاط تدعم استخدام المفسّر أثناء التطوير لبرنامج؟ حدد كل الخيارات الصحيحة.
دورات التعديل-التشغيل السريعة والأخطاء عند أسطرها هي نقاط قوة المفسّر. أما سرعة وقت التشغيل فهي نقطة قوة المترجم.
مثال محلل: مُفسِّر أثناء الكتابة، ومترجم عند الانتهاء
- يستخدم مطوِّر المُفسِّر أثناء كتابة برنامج والمترجم عند انتهائه. اشرح كيفية استخدام كل منهما. [4]
- أثناء مرحلة التطوير، يُشغّل المُفسِّر البرنامج غير المكتمل فوراً، دون انتظار إتمام الترجمة. وعند encountering خطأ، يُبلِّغ برقم السطر، مما يسمح للمطوِّر بإصلاحه وتشغيل البرنامج مجدداً فوراً: دورة تعديل-تشغيل سريعة تسهل تصحيح الأخطاء.
- عندما يكون البرنامج مكتملاً، يترجم المترجم البرنامج كاملاً إلى ملف قائم بالتنفيذ يعمل بسرعة أكبر، ولا يتطلب وجود مترجم على حاسوب المستخدم، ويحافظ على سرية كود المصدر.
- درجتان لكل أداة: ما تفعله ولماذا يناسب تلك المرحلة.
جافا:编译 جزئي وتفسير جزئي
- يتم.compile كود جافا إلى بايت كود، وهو شكل وسطي محمول ومضغوط ليس كود آلة لأي معالج حقيقي.
- ثم يقوم الحاسوب الافتراضي JVM بتفسير البايت كود على أي جهاز يعمل عليه، أو يستخدم ** compilation وقت التشغيل** لتحويل الأجزاء الأكثر كثافة إلى كود أصلي أثناء تشغيل البرنامج.
- تلتقط مرحلة الـ compile أخطاء الصياغة مبكراً؛ وتسمح مرحلة التفسير بملف بايت كود واحد يعمل أينما وُجد JVM. جافا في وضع الكونسول، وهو برنامج نصي يُشغّل من سطر الأوامر، هو المثال في المنهج الدراسي.

اكتب مرة واحدة، شغّل في أي مكان: ملف بايت كود واحد، وحاسوب افتراضي واحد لكل منصة
ترجم Java إلى بايت كود يعمل على JVM. الفائدة الرئيسية هي:
البايت كود مستقل عن المنصة؛ يمكن لأي JVM تشغيله (مع توفير JIT سرعة تقارب الأصلية للكود الساخن).
ينتج مترجم Java ____ مستقل عن المنصة، تقوم آلة افتراضية لاحقًا بترجمته.
البايت كود هو شكل وسيط: يُجمّع مرة واحدة، ثم يشغله JVM على أي منصة. وهذا ما يجعل Java مجمّعة جزئيًا ومفسرة جزئيًا.
مثال محلل: لماذا compile إلى بايت كود ثم تفسير؟
- اشرح سبب.compile جافا إلى بايت كود بدلاً من كود آلة مباشرة.
- ينتج المترجم كود آلة لـ معالج واحد ونظام تشغيل واحد، لذا لن يعمل برنامج تم compileه على جهاز آخر.
- يستهدف مترجم جافا حاسوباً افتراضياً بدلاً من ذلك، لذا يكون البايت كود متطابقاً في كل مكان. توفر كل منصة JVM الخاص بها لتفسيره.
- التكلفة هي السرعة: تفسير البايت كود أبطأ من تشغيل الكود الأصلي، ولهذا السبب يضيف JVM compilation وقت التشغيل للأجزاء الساخنة.
بيئة التطوير المتكاملة ومجموعاتها الأربعة من الميزات
- بيئة التطوير المتكاملة (IDE) هي تطبيق واحد للكتابة، والترجمة، والتشغيل، وتصحيح أخطاء البرنامج. يقسم المنهج الدراسي م其特征ات إلى أربع مجموعات.
- للبرمجة: تظهر الاستدعاءات الحساسة للسياق المعرفات أو الكلمات المفتاحية أو المعاملات المناسبة في تلك النقطة؛ الاكتمال التلقائي يكمل الاسم.
- لاكتشاف الأخطاء الأولية: فحص الصياغة الديناميكي يضع خطاً تحت الخطأ أثناء الكتابة، قبل الترجمة. للعرض: يعرض prettyprint الكلمات المفتاحية والمعرفات والنصوص والتعليقات بألوان مختلفة مع مسافات متناسقة؛ التوسيع والطوي يخفي جسم الكتلة لرؤية الهيكل العام.
- للتصحيح: نقاط التوقف توقف البرنامج عند سطر مُشار إليه؛ التنفيذ خطوة بخطوة يشغل سطراً واحداً في كل مرة؛ تعرض نافذة قيم المتغيرات والتعبيرات؛ نافذة التقارير تُدرج الأخطاء والتحذيرات والمخرجات.

*البرمجة، اكتشاف الأخطاء، العرض، التصحيح
أي ميزة جزء من مصحح أخطاء IDE؟
يسمح لك المصحح بوضع نقاط توقف، والمرور بالكود سطرًا بسطر، وفحص قيم المتغيرات.
طابق كل ميزة في IDE مع مجموعة منهاجها.
البرمجة، الكشف الأولي للأخطاء، العرض التقديمي، تصحيح الأخطاء: المجموعات الأربع التي يذكرها المنهج، ميزة واحدة هنا لكل منها.
مثال محلل: العثور على الخطأ في Calculate()
- دالة
Calculate()تُرجع قيمة غير متوقعة. صف كيف تساعد ميزات التصحيح في IDE على إيجاد السبب. [4] - ضع نقطة توقف على السطر الأول من
Calculate()، بحيث يتوقف البرنامج هناك بدلاً من الاستمرار في التشغيل. - تنفيذ خطوة بخطوة عبر الدالة سطراً بسطر. بعد كل خطوة، اقرأ قيم المتغيرات وأي تعبير طلبت من IDE مراقبته، وقارنها بما تتوقعه.
- السطر الأول الذي تكون بعده القيمة خاطئة هو موقع الخطأ المنطقي. تُظهر نافذة التقارير أي رسائل أخطاء وقت التشغيل والمخرجات على طول الطريق.

توقف، تخطٍ، فحص
رتّب خطوات اكتشاف خطأ منطقي باستخدام مصحح أخطاء.
الإيقاف، المرور، الفحص، المقارنة، تحديد الموقع. كل منها یکی من ميزات تصحيح الأخطاء المذكورة في المنهج.
علامات ضائعة
- المترجم لا يشغّل البرنامج. بل يترجمه كاملاً وينتج ملفاً قابلاً للتنفيذ.
- المفسر يتوقف عند أول خطأ؛ بينما يسرد المترجم كلها. لا تعكس هذه النقاط.
- "أسرع" تحتاج إلى "وقت التشغيل"، و"قابل للنقل" يحتاج إلى "نفس المصدر يعمل أينما يوجد مفسر".
- صنف ميزات بيئة التطوير المتكاملة (IDE) في أربع مجموعات: نقطة التوقف هي للتصحيح، والتنسيق الجميل هو للعرض، والاستدعاء السياقي هو للبرمجة. البيت كود ليس لغة الآلة.
لقد فهمت الأمر
- المُجمِّع: تعليمة تجميع واحدة مقابل تعليمة لغة آلة واحدة · المُترجِم: البرنامج كاملاً، قبل تشغيله، ملف قابل للتنفيذ، جميع الأخطاء مسندَدة · المُفسِّر: تعليمة واحدة في كل مرة، تُنفذ فوراً، يتوقف عند أول خطأ، لا ينتج ملفاً قابلاً للتنفيذ
- المترجم للسرعة، والتوزيع، وسرية المصدر؛ والمفسر لدورة تعديل وتشغيل سريعة، والقابلية للنقل، وللمبتدئين.
- Java يُترجم إلى بيت كود قابل للنقل يقوم JVM بمفسره أو بجمعه ديناميكياً: جزء مُجمع وجزء مفسَّر.
- ميزات IDE في أربع مجموعات: البرمجة (الاستدعاءات السياقية)، والكشف الأولي عن الأخطاء (فحص القواعد الديناميكي)، والعرض (التنسيق الجميل، التوسيع والطوي)، والتصحيح (نقاط التوقف، التخطي الفردي، المتغيرات، نافذة التقارير).