بسم الله الرحمن الرحيم
السلام عليكم إخواني ...
الفصل الأول في هندسة المترجمات :
مقدمة
القسم الأول
إندكس :
1/ ما هو المترجم ؟
2/ ما وظيفة المترجمات ؟ وما هي لغات البرمجة ؟
3/ ما هي أنواع المترجمات ؟
4/ قواعد بناء المترجمات (هما اتنين بس)
5/ تقسيم المترجم
*-----------------------------------------------------------------------------------------*
*-----------------------------------------------------------------*
*--------------------------------------------------*
*-----------*
*----*
*
1/ ما هو المترجم ؟
المترجم أو Compiler كلمة نستخدمها كل يوم في حياتنا البرمجية , لكن القليل من يعرف معناها الصحيح ,
إن سألت مبرمج ما هو المترجم ؟ هيقول : "برنامج يحول من لغة برمجة إلى لغة الآلة" , أو ممكن :"برنامج يحول من الإنجليزي للعربي" !!!
لذا يمكن تعريف المترجم على أنه :"برنامج يأخذ كمدخل له شيفرة مصدرية , أو وصف لبرنامج تنفيذي , وينتج كمخرجات وصف برنامج تنفيذي مكافئ له , وإذا وجد أي خطأ فإنه يعطي مجموعة ملائمة من الأخطاء"
ويعود تاريخ المترجمات إلى عام 1955 م
مثل إيه المترجم ؟
Microsoft Visual Basic , Borland Delphi , Visual C++ ... الخ
لاحظ أنها مترجمات لغات برمجة , لأنه توجد أنواع أخرى سأشرحها لاحقا إن شاء الله
إن المترجم برنامج كبيييييير و معقد , يحتوي على آلاف إن لم يكن ملايين من الشيفرة وتمتلك أجزاؤه عملاً مشتركا حيث يكون لقرار ما تأثير متشعب متعلق بالأجزاء الأخرى , وبناء مترجم هو تمرين أساسي في بناء المترجمات .
طيب , هيا بنا نقسم ما سبق:
"إن المترجم برنامج كبيييييير و معقد , يحتوي على آلاف إن لم يكن ملايين من الشيفرة"
لأن المترجم يحتوي على تطبيقات لحجز السجلات , جدولة القوائم , حذف الشيفرة الميتة , البرمجة الديناميكية , الأوتومات المنتهي , المسح والتحليل , تحليل تدفق البيانات والعديد من العمليات الأخرى التي يتعامل معها المترجم .
ملحوظة مهمة : لا تأخذ التعريف السابق على محمل الإحباط ,
" وتمتلك أجزاؤه عملاً مشتركا"
المقصد العام هو الترجمة إلى لغة الآلة طبعا
" حيث يكون لقرار ما تأثير متشعب متعلق بالأجزاء الأخرى"
آآآآه , ما معني هذا , سأعطيك مثال :
نحن نعمل برنامج يتلقى مدخلات المستخدم من خلال مربع نص (Text1) مثلا , هل يمكن لأمر أن يؤثر على أمر آخر , أكيد
مثلا لو كان الكود الطبيعي لاستقبال المدخلات :
If Text1.Text = "Ala2 VB" Then Msgbox "VB Programmer" End if
عند إضافة الجملة التالية :
Private Sub TimerX_Timer() If Text1.Text = "Ala2 VB" Then Msgbox "From Arab Team" End if
بدون الكود الثاني , عند كتابة Ala2 VB في مربع النص تظهر رسالة , بعد إضافة الكود التاني تظهر رسالتين عند كتابة نفس الكلمة .
ده كان مثال بسيط , لكنه مش دقيق 100%
2/ ما وظيفة المترجمات ؟ وما هي لغات البرمجة ؟
الوظيفة الأساسية للمترجم : تحويل البرنامج الدخل , إلى خرج , وليس شرطا على لغات البرمجة
ما هي لغة البرمجة ؟
"لغة صورية , لها خصائص رياضية ومعانٍ معرفة بشكل جيد , وذلك بخلاف اللغة الطبيعية , ذات الخصائص المتغيرة والغامضة , ويتم تصميم لغات البرمجة لتحقق التعبير والإيجاز والوضوح , ولتحديد الحسابات –أي تسجيل تسلسل من الأعمال التي تحقق عملية حسابية ما أو تعطي نتيجة حسابية معينة"
ويمكن ببساطة شديييييييدة تصوير المترجم كـ :
3/ ما هي أنواع المترجمات
المترجمات تنقسم إلى عدة أقسام , بإيجاز :
مترجم : مصدر إلى ملف تنفيذي (Visual Basic)
فائدته معروفة
مترجم : مصدر إلى مصدر
يحول مثلا من كود A إلى B بعد القيام بعمليات تحسين على A ليتم تحويله إلى ملف تنفيذي لاحقا
4/ قواعد بناء المترجمات
الاولى :
"يجب أن يحافظ المترجم على معنى البرنامج الذي تتم ترجمته"
فلا يغير فيه شيء على مزاجه , وهذا من أسباب نجاحه إن شاء الله
الثانية :
"يجب أن يقو المترجم بتحسين برنامج الدخل بطريقة ذكية"
ولكن ألم نقل أننا لا يجب أن نعدل ؟
نعم , ولكن القاعدة الأولى تعني تغيير بطريقة تغير المعنى
مثلا المستخدم كتب :
Print "A" + "B" + "C"
نحولها إلى :
Print "ABC"
ولا نحولها إلى
Print "CB" + "A"
مثلا
5/ تقسيم المترجم :
ينقسم إلى :
نهاية أمامية ونهاية خلفية
النهاية الأمامية :
تركز على فهم برنامج المصدر (تحليل الشيفرة واستخراج الأخطاء ومعرفة هل الكلمات متطابقة أم لا)
النهاية الخلفية :
تركز على تحويل البرنامج إلى الهدف
من فوائد هذا الفصل بين أقسام المترجم إلى تسريع أدائه وكلما قسمت النهايات إلى أجزاء أصغر , مثلا تقسيم النهاية الأمامية إلى الأقسام التالية :
قسم للتحقق هل الكلمات المستخدمة موجودة في اللغة (مثل If , Else , Len)
قسم للتحقق هل توجد أخطاء نحوية (السلاسل النصية ليست بين علامات تنصيص , أو بارامترات الدوال ليست بين أقواس...)
قسم للتحسين وينقسم إلى :
تحسين الدوال
تحسين الأكواد
...الخ من أفكارك النيرة
يصبح المترجم بعد ذلك شبيها بالصورة التالية :
ملحوظة هامة : لا تخف ولا تهلع من المصطلحات أعلاه , سندرسها إن شاء الله تعالى لاحقا
هذا و جزاكم الله خيرا , وأي استفسار أو سؤال أنا جاهز




