المترجمات

من ويكي الهندسة المعلوماتية
اذهب إلى: تصفح، ابحث

أهمية المادة

مهمة جداً لأنها تحوي مفاهيم ضرورية تهمنا كهندسة معلوماتية.

لمحة عن المادة

فهم الآلية التي يعمل بها المترجم (Compiler) ومحاولة لعمل مترجم مصغر للغة ما في قسمها العملي.

في اختصاص الذكاء الصنعي تكون المادة مثل باقي المواد لها قسم نظري ولها قسم عملي وتعطى في الفصل الأول من السنة الرابعة.

في اختصاص هندسة البرمجيات ونظم المعلومات فإن المادة تقسم إلى قسمين، القسم الأول نظري وعملي في الفصل الأول من السنة الرابعة، والقسم الثاني هو مشروع فقط في الفصل الثاني من السنة الرابعة وهو تتمة للقسم العملي الخاص بالفصل الأول.

متطلبات المادة

معرفة جيدة بمادة الأتومات التي سوف تتكرر معلوماتها في السلايدات.

مشروع المادة

كما ذكرنا فالمادة لها مشروع في قسم هندسة البرمجيات ونظم المعلومات وهذا المشروع يمتد على فصلي السنة الرابعة، ويشكل في الفصل الأول العملي من المادة وفي الفصل الثاني يعتبر مشروعاً مستقلاً، ومن هنا تظهر أهمية هذا المشروع، فهو ضخم ومعقد ومهم جداً ويشارك بـ 130 علامة من معدل السنة الرابعة.

المشروع عبارة عن تصميم وتحقيق مترجم بشكل كامل للغة معينة يتم تحديدها في كل عام من قبل مهندسي العملي، بحيث عند نهاية السنة الرابعة يجب على هذا المترجم أن يستطيع أن يحاكي مترجماً حقيقياً لهذه اللغة، قادراً على فهم البرامج المكتوبة بهذه اللغة إضافةً إلى اكتشاف الأخطاء في البرامج وتحسين أداء البرامج وبالتأكيد تنفيذ هذه البرامج.

يتم عادةً اعتماد لغة C++ كلغة أساسية لتحقيق هذا المترجم، كما يتم الاعتماد على الأدوات GNU Flex و GNU Bison، حيث تساهم الأولى في تحقيق المحلل المفرداتي للغة، وتساهم الأخرى في تحقيق المحلل المفاهيمي للغة.

عادةً ما يكون المطلوب من الطلاب في الفصل الأول أن يكون المترجم قادراً على فهم البرامج المكتوبة وتصحيح الأخطاء ضمنها إضافةً إلى بناء ما يعرف بجدول الرموز (Symbol Table) والذي يكون مرجعاً ضمن تحقيق المشروع للمتحولات والصفوف والطرائق المعرفة ضمن البرنامج المكتوب.

وفي نهاية الفصل الثاني يجب أن يكون المشروع قادراً على تنفيذ البرامج وتحليلها وتحسين أدائها واكتشاف أخطائها.

قد يصل حجم المشروع إلى ما يتجاوز العشرين ألف سطر برمجي بكل سهولة، وبما أنه مشروع على سنة كاملة وبهذا الحجم فيجب منذ البدء به أن يتم التنسيق والترتيب والاعتناء به بشكل كبير بين أفراد الفريق.

يتكون الفريق من ثلاثة إلى أربعة طلاب عادةً ويتم مقابلتهم بشكل أسبوعي تقريباً لمعرفة آخر تطورات المشروع.

الكادر التدريسي (نظري وعملي)

د . صلاح الدوهجي (قسم هنسة البرمجيات) د. باسل الخطيب (قسم الذكاء الصنعي), وفي العملي يتغير المهندس من سنة لأخرى ومن فئة لأخرى.

المحتوى العلمي

  1. مقدمة : نتعرف في هذا البحث على الفرق بين المترجمات والمفسرات وتاريخها
  2. يتحدث عن المحلل المفرداتي Lexical Analysis وماهي أصغر وحدة يتم التعامل معها (وهي الـ Token), وأفضل طريقة لأ خذ هذا الـ Token هو ال Regular Expressions التعابير المنتظمة.
  3. وهو مقدمة عن الـ Parsing وهو المرحلة الثانية من مادة الأتومات أي القواعد خارج السياق وهو تذكرة بالقواعد خارج السياق وعن الاشتقاق والغموض في مادة الأتومات ,والـ Parser يفدينا في اختبار كون السلسلة تحقق القواعد أم لا.
  4. طرق بناء شجرة الـ Parse Tree وهناك نوعين من البناء Top-Down & Bottom-Up ومميزات ومحاسن كل منهما بالاضافة لـ LL1 والـ Left Factor والـ First والـ Follow,
  5. التحقق من الاخطاء بحيث يعتبر هذا البحث بداية بسيطة لعملية الفهم الدلالي في المترجم .
  6. توليد اللغة الوسيطية IL والتي هي اللغة الخرج من المترجم بحيث يتم ترجمة هذه الاخيرة لتصبح لغة آلة .

عملي المادة

العلامة من 30,تعطى عن طريق بناء المراحل الأولى من الـ Compiler للغة ما,وكل مرحلة يجري تقييم وفي نهاية الفصل, يجري تقييم لهذه المراحل الأولى كاملة (باقي المراحل تكمل في الفصل الثاني) بالاضافة الى مقابلة وتقرير عن العمل المنجز (يفضل وجود تقرير ومشروع قديم لأخذ الأفكار والمساعدة في بعض الأحيان).


اسم كتاب المادة

Compiler Design Compilers Principles, Techniques And Tools - Aho, Sethi, Ullman (Addison Wesley(


الدراسة الأساسية

السلايدات كافية، والمراجع للتوسع.

أسئلة الفحص

المادة مؤتمتة في قسم الذكء الصنعي، وكتابية في قسم هنسة البرمجيات.

نصائح حول الفحص أو المادة بشكل عام

من الممكن دراسة المادة قبل الفحص ولكن من ملفات الدكتور , لكن الدراسة من المرجع تحتاج إلى متابعة ضمن السنة .


تطلعات مستقبلية

المادة تعطينا فكرة عن عمل المترجم في قسمها العملي أما النظري فيكون معرفة طريقة العمل بشكل مجرد وممكن في يوم من الأيام أن تضطر لعمل مترجم للغة خاص بك.

محاضرات 2013-2014

المحاضرة الأولى

المحاضرة الثانية

المحاضرة الثالثة

المحاضرة الرابعة

المحاضرة الخامسة