المتابعون للمدونة

الثلاثاء، 25 ديسمبر 2012

الكلمات المحجوزة ومترجم الكود


س: الأسماء المحجوزة في VS مثل for ,End ,String,... أهي عبارة عن كلمات تمت برمجتها مسبقاً من قبل مبرمجي إطار عمل .NET، أم أنها كائنات مثل الكائن Console (علي سبيل المثال)?

 

ج: في البداية دعنا نتعرف على هذه الحقائق:

الفريق الذي يبرمج إطار العمل، مختلف عن الفريق الذي يطور لغات البرمجة التي تستخدمه، فهناك فريق خاص مسئول عن لغة فيجوال بيزيك، وفريق آخر مسئول عن لغة سي شارب.. وهكذا..

ولكل لغة من اللغات مفسر Interpreter يتولى ترجمة كود هذه اللغة (كود فيجوال بيزيك أو سي شارب) إلى كود اللغة الوسيطة Intermediate Language (IL) ووضعها في الملف التنفيذي للبرنامج .exe.. وعند تشغيل البرنامج يتولى المترجم Compiler الخاص بإطار العمل ترجمة كود اللغة الوسيطة إلى لغة الآلة Machine Code حتى يمكن تشغيله على الجهاز الخاص بالمستخدم.. ويسمى مترجم إطار العمل باسم المترجم الفوري Just In Time (JIT).

في ضوء هذه الخلفية، يمكنك الآن فهم وظيفة مفسر الكود الخاص بفيجيوال بيزيك: فهو يحول الكود المكتوب بلغة فيجوال بيزيك إلى كود اللغة الوسيطة IL.. ولكي يفعل هذا، فهو يمر على الكود المكتوب ويميز هذه الأجزاء:

1- الأوامر التي يجب تنفيذها:

هذه الأوامر تميزها كلمات خاصة محددة، مثل Dim، If، For، Do... إلخ، وهي تظهر في الكود باللون الأزرق.. وإذا أراد المبرمج استخدام هذه الكلمات في تعريف متغيرات فعليه وضعها بين قوسين مضلعين [] لكي يخبر المفسر أنها ليست كلمات محفوظة، مثل:

Dim [As] As String = "As"

If [As] = "As" Then

   MsgBox([As])

End If

لاحظ أن المفسر لن يرتبك هنا رغم وجود الكلمة As ثلاث مرات: الأولى بين قوسين كاسم متغير، والثانية ككلمة محجوزة محفوظة توجه أمرا للمفسر، والثالثة كقيمة نصية موضوعة بين علامتي تنصيص.

2- المتغيرات التي يتم حجز مساحات لها في الذاكرة:

وترد أسماؤها في الكود بعد الكلمة Dim ويجب ألا تتخللها مسافات، وألا توجد فيها رموز معينة.. وبعد الكلمة As يوضع النوع الخاص بالمتغير.. هذا النوع إما أن يكون سجلا Structure أو فئة Class.

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

Dim Form As Form

Form = Form.ActiveForm

في الكود السابق وردت الكلمة Form أربع مرات، مرتين كاسم متغير خاص بالمبرمج، ومرتين كاسم فئة النموذج Form.. ويستطيع المفسر التفريق بينهما بوضوح من خلال منطق الكود.

3- العلامات الحسابية ومعاملات المقارنة والتساوي وغيرها:

هذه المعاملات توضح للمفسر العمليات التي يجب إجراؤها ووضع نتائجها في الذاكرة (في المتغيرات).. لهذا لا يسمح باستخدام هذه المعاملات في تعريف أسماء المتغيرات.

4- أي شيء غير ما سبق يفهمه المفسر على أنه قيمة Value:

وتكون هذه القيم عددية أو نصية أو غيرها، ويجب أن تُكتب بالشكل الصحيح الذي يناسب نوعها (مثل وضعها بين علامتي تنصيص إن كانت نصية، أو وضعها بين العلامتين ## إن كانت تاريخا أو وقتا).

 

هناك تعليقان (2):

  1. شكراً أستاذي علي هذه الإجابة الرائعة

    ردحذف
  2. يا استاذ الحين زي منت عاف اذا تبي تكتبلك جملة برمجية تحتاج في بعض الاحيان ان تستدعي ملف خارجي علشان تعمل صباعة لجملة او ادخال لكلمة مثل في الc++ الي ابي اعرفه من وين استخرج هذه الملفات الاساسية وكيف اعرف الدوال حقتها للاستخدام
    حاولت اتعلم البرمجه لكن هذي حاستني لو تشرحها لو تكرمت

    ردحذف

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.

صفحة الشاعر