القائمة الرئيسية

الصفحات

ما الفرق بين اللغات الترميزية "Markup languages" ولغات السكريبت "Scripting languages" ولغات البرمجة "Programming languages"؟

اللغات الترمزية:

هي لغة هدفها الاساسي وصف المعلومات، مثلا، هذه العبارة المكتوبة بخط عريض، اننا هنا وصفنا ان العبارة السابقة، يجب ان يتم اظهارها بخط عريض. مثال اخر، هو الرقم 5, بحد ذاته، ليس له معنى اليس كذلك، و لكن باستخدام اللغة الترميزية يمكنك وضع وصف، انها عبارة عن عدد التفاحات، او حجم الخط. ربما اشهر هذه اللغات هي XML، و فعلا، محرر الكلمات Word يستعملها داخليا لوصف لون و حجم و موضع الخط و الصور التي تنشئها هناك.

عادة، ليفهم الحاسب هذه اللغة، يقوم اولا عمل لها parsing، اي قراأة هذه الاوصاف، و يقابلها (لا يترجمها، بل يقابلها هذا هام) مباشرة بأوامر خاصة مبنية داخل التطبيق (هذه الاوامر الداخلية للمبرنامج تسمى بمجموعها App API) الذي يقوم بذلك. مثلا، داخل برنامج ورد السابق الذكر، فيه اوامر جاهزة لتكوين و اظهار النص على الشاشة بشمل معين، لذلك عندما يقرأ الوصوف، يحولها لاوامره الداخلية هذه، ليقوم بتنفيذها البنامج بحد ذاته.

لاحظ ان هذه اللغة، غير تنفيذية! اي انه ليس فيها اوامر محددة، فنحن فقط نوصف المعلومات، و لا نقول اننا حصرا نريد الحاسب ان يفعل هذا او ذاك. ففي مثال الورد السابق، برنامج الورد نفسه يقرر، هل يطبق الوصف المحدد، ام يتجاهله.

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

لغات السكريبت:

هي لغة تنفيذية، و لكنها غير مترجمة للغة الالة. لفهم ذلك من الافضل فهم كيف تعمل.

يقوم برنامج ما، ليكن ورد ايضا، اذ يمكن برمجته بالغة السكريبت VBA، حيث يقوم ورد بقرأتها، اي عمل parsing، ثم يحللها و يربطها باوامرهه الداخلية app API في عملية تسمى interpretation، لذلك، بخلاف الحالة السابقة، نحن هنا نحدد حصرا ما يجب على برنامج ورد فعله، و ليس بيده ان يقوم باي قرارات من جانبه، بل فقط ينفذ بصمط.

الفكرة هنا، ان برنامج ورد يلعب هنا دور مضيف Host، اي هو يحتوي برنامج السكريبت، و يمرر الاوامر نيابة عنه الى المعالج، اي لغات السكريبت لا تتكلم مع ال hardware بشكل مباشر.

تتسم هكذا لغات بالبطء، و المرونة، و الامان (لانها محتواة و تعمل ضمن المضيف فقط)، و اسهل في التعلم.

لغات البرمجة:

هي لغة تنفيذية، تترجم للغة الالة، و ينفذها مباشرة المعالج، من دون اي مضيف او وسيط (الاصح قول انها تنفذ عبر نظام التشغيل، و لكنني ساتجواز هذا التفصيل هنا).

هنا يتم عمل اولا parsing اي قرأة الاوامر، ثم تحليلها interpretation, ولكن لا يتم ربطها الان بأي اومر app API، لكون عدم وجود مضيف، بعدها يتم ترجمتها الى لغة الالة بعملية compilation، و التي تجعل التطبيق عمليا يخاطب المعالج مباشرة عند تنفيذ الاوامر.

طبعا هذه، اسرع اللغات تنفيذا، لتعاملها المباشر مع الهاردوير، ولكنها اقل مرونة و انتاجية (من حيث سرعة كتابة الاكواد) من لغات السكريبت.

ملاحظات:

في بعض الاحيان، يصعب تصنيف اللغة في احد الانواع السابقة، لان اللغات تتطور.

مثلا، لغة HTML، كانت في الاساس لغة وصفية، و لكن مع صدور HTML 5، اصبح فيها بعض ظواهر لغة السكريبتات.

مثال اخر، هي لغة جافا (وليس جافا سكريبت)، التي عمليا تنفذ عبر الة افتراضية virtual machine، اي يبدو و كانها في الحقيقة محتواة في هذه الالة الافتراضية، اذا فهي تشبه لغة السكريبت، و مع ذلك فهي تعتبر لغة برمجة كاملة، لان الالة الافتراضية هذه تعمل بشكل مختلف تماما عن الية عمل برنامج ورد مثلا.
هل اعجبك الموضوع :

تعليقات

التنقل السريع