من الواضح أن إدراك البشر وجهاز إلكتروني مثل الكمبيوتر يختلف. يمكن للإنسان أن يفهم أي شيء من خلال اللغات الطبيعية ، لكن الكمبيوتر لا يفعل ذلك. يحتاج الكمبيوتر إلى مترجم لتحويل اللغات المكتوبة في النموذج البشري القابل للقراءة إلى نموذج قابل للقراءة للكمبيوتر.
المترجم والمترجم هي أنواع مترجم اللغة. ما هو مترجم اللغة؟ قد ينشأ هذا السؤال في ذهنك.
مترجم اللغة هو برنامج يقوم بترجمة البرامج من لغة مصدر موجودة في شكل مقروء بشري إلى برنامج مكافئ في لغة كائن. لغة المصدر عمومًا لغة برمجة عالية المستوى ، وعادةً ما تكون لغة الكائن هي لغة الآلة للكمبيوتر الفعلي.
رسم بياني للمقارنة
أساس للمقارنة | مترجم | مترجم |
---|---|---|
إدخال | يستغرق برنامج كامل في كل مرة. | يستغرق سطر واحد من التعليمات البرمجية أو التعليمات في كل مرة. |
انتاج | | يولد رمز الكائن وسيطة. | لا ينتج أي رمز كائن وسيطة. |
آلية العمل | يتم التجميع قبل التنفيذ. | يحدث التجميع والتنفيذ في وقت واحد. |
سرعة | أسرع نسبيا | أبطأ |
ذاكرة | متطلبات الذاكرة هي أكثر بسبب إنشاء كود الكائن. | يتطلب ذاكرة أقل لأنه لا يقوم بإنشاء رمز كائن وسيطة. |
أخطاء | عرض كل الأخطاء بعد التجميع ، كل ذلك في نفس الوقت. | يعرض خطأ من كل سطر واحدًا تلو الآخر. |
اكتشاف الخطأ | صعبة | أسهل نسبيا |
لغات البرمجة | يستخدم C ، C ++ ، C # ، Scala ، typescript برنامج التحويل البرمجي. | يستخدم Java و PHP و Perl و Python و Ruby مترجمًا. |
تعريف المترجم
برنامج التحويل البرمجي هو برنامج يقرأ برنامجًا مكتوبًا بلغة عالية المستوى ويحوله إلى جهاز أو لغة منخفضة المستوى ويبلغ عن الأخطاء الموجودة في البرنامج. يقوم بتحويل كامل شفرة المصدر دفعة واحدة أو قد يستغرق عدة تمريرات للقيام بذلك ، ولكن في النهاية ، يحصل المستخدم على الكود المترجم الجاهز للتنفيذ.
مترجم يعمل على مراحل. يمكن تجميع المراحل المختلفة في جزأين هما:
- ويشار أيضا إلى مرحلة تحليل المحول البرمجي باسم الواجهة الأمامية التي ينقسم فيها البرنامج إلى أجزاء تأسيسية أساسية ويدقق في القواعد النحوية والدلالية والنحو في الشفرة التي يتم بعدها توليد الشفرة الوسيطة. مرحلة التحليل تتضمن محلل معجمي ، محلل دلالي ومحلل لغوي.
- تعرف أيضًا المرحلة التجميعية لل مترجم بالنهاية الخلفية التي يتم فيها تحسين الشفرة المتوسطة ، ويتم إنشاء الشفرة الهدف. تتضمن مرحلة التجميع مُحسِّن الشفرة ومولد الشفرة.
مراحل المترجم
الآن دعونا نفهم عمل كل مرحلة بالتفصيل.
- محلل Lexical : يقوم بمسح الكود كدفق من الأحرف ، ويقوم بتجميع تسلسل الأحرف في lexemes وإخراج سلسلة من الرموز المميزة مع الإشارة إلى لغة البرمجة.
- محلل بناء الجملة : في هذه المرحلة ، يتم التحقق من الرموز المميزة التي تم إنشاؤها في المرحلة السابقة مقابل قواعد لغة البرمجة ، سواء كانت التعبيرات صحيحة من الناحية التركيبية أم لا. يجعل أشجار المحلل للقيام بذلك.
- محلل الدلالي : يتحقق من ما إذا كانت التعبيرات والعبارات التي تم إنشاؤها في المرحلة السابقة تتبع قاعدة لغة البرمجة أم لا وتقوم بإنشاء أشجار تحليل مشروحة.
- مولد الشفرة المتوسطة : يقوم بإنشاء شفرة متوسطة مكافئة لرمز المصدر. هناك العديد من تمثيلات الشفرة الوسيطة ، ولكن TAC (ثلاثة Address Code) هي الأكثر استخدامًا.
- مُحسِّن الشفرات : يُحسِّن متطلبات البرنامج من حيث الوقت والمكان. للقيام بذلك ، فإنه يلغي التعليمة البرمجية المتكررة في البرنامج.
- مولد الكود : هذه هي المرحلة النهائية من المحول البرمجي حيث يتم إنشاء رمز الهدف لجهاز معين. ينفذ عمليات مثل إدارة الذاكرة ، وتعيين التسجيل ، والتحسينات المحددة للآلة.
جدول الرموز عبارة عن هيكل بيانات إلى حد ما يدير المعرفات إلى جانب نوع البيانات ذي الصلة الذي يتم تخزينه. خطأ معالج كشف ، تقرير ، وتصحيح الأخطاء التي تصادف في ما بين مراحل مختلفة من المترجم.
تعريف المترجم
المترجم هو بديل لتطبيق لغة برمجة ويقوم بنفس العمل كمترجم. ينفذ المترجم lexing ، والتحليل ونوع التحقق مماثلة لمترجم. لكن يقوم مترجم بمعالجة بناء الجملة بشكل مباشر للوصول إلى التعبيرات وتنفيذ العبارة بدلاً من توليد كود من شجرة التركيب.
قد يتطلب المترجم معالجة شجرة تركيبية واحدة أكثر من مرة وهذا هو السبب في أن التفسير هو أبطأ نسبيا من تنفيذ البرنامج المترجم.
من المحتمل أن يتم الجمع بين التفسير والتفسير لتنفيذ لغة برمجة. حيث يقوم المترجم بإنشاء تعليمة برمجية متوسطة المستوى ، يتم تفسير الشفرة بدلاً من تحويلها إلى شفرة الآلة.
إن استخدام مترجم فوري مفيد أثناء تطوير البرنامج ، حيث يكون الجزء الأكثر أهمية هو القدرة على اختبار تعديل البرنامج بسرعة بدلاً من تشغيل البرنامج بكفاءة.
الاختلافات الرئيسية بين مترجم ومترجم
دعونا ننظر إلى الاختلافات الرئيسية بين المترجم والمترجم.
- يأخذ المجمع برنامجًا بأكمله ويترجمه ، ولكن يترجم المترجم بيانًا بالكلمة.
- يتم إنشاء الشفرة المتوسطة أو رمز الهدف في حالة وجود مترجم. كما ضد المترجم لا يخلق رمزًا وسيطًا.
- المترجم هو أسرع نسبيا من Interpreter حيث يأخذ المجمع كل البرنامج دفعة واحدة بينما المترجمين الفوريين يجمعون كل سطر من الكود بعد الآخر.
- يتطلب المحول البرمجي ذاكرة أكثر من المترجم بسبب توليد كود الكائن.
- يعرض برنامج التحويل البرمجي جميع الأخطاء بشكل متزامن ، ويصعب اكتشاف الأخطاء في أخطاء عرض المترجم التباين لكل عبارة واحدة تلو الأخرى ، ومن الأسهل اكتشاف الأخطاء.
- في برنامج التحويل البرمجي عند حدوث خطأ في البرنامج ، فإنه يتوقف عن ترجمته وبعد إزالة الخطأ يتم ترجمة البرنامج بأكمله مرة أخرى. على العكس ، عندما يحدث خطأ في المترجم ، فإنه يمنع ترجمته وبعد إزالة الخطأ ، تستأنف الترجمة.
- في عملية التحويل البرمجي ، تتطلب العملية خطوتين يتم فيها ترجمة شفرة المصدر أولاً إلى البرنامج المستهدف ثم يتم تنفيذها. بينما في Interpreter هي عملية خطوة واحدة يتم فيها تجميع التعليمات البرمجية المصدر وتنفيذها في نفس الوقت.
- يتم استخدام المحول البرمجي في لغات البرمجة مثل C ، C ++ ، C # ، Scala ، إلخ. على مترجم آخر يستخدم في لغات مثل Java ، و PHP ، و Ruby ، و Python ، إلخ.
استنتاج
الغرض من المترجم والمترجم هو القيام بنفس العمل ولكنهما يختلفان في إجراء التشغيل ، حيث يأخذ المترجم شفرة المصدر بطريقة مجمعة بينما يأخذ المترجم أجزاءً مكونةً من الكود المصدري ، أي بيانًا ببيان.
على الرغم من أن المترجم والمترجم على حد سواء لهما مزايا وعيوب معينة مثل اللغات المفسرة تعتبر عبر منصة ، أي رمز محمولة. كما أنه لا يحتاج إلى تجميع التعليمات في السابق على عكس المترجم الذي هو توفير الوقت. تكون اللغات المجمعة أسرع فيما يتعلق بعملية التجميع.