الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف تصمم لغة برمجة

بدأه MohamedIBrahim في 10 فبراير 2011 · 1 رد · 654 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اهلا شباب

اليوم اقدم لكم درسى الاول فى هذا المعهد والصرح الجليل

وهو عن كتابة لغات البرمجة

اعذرونى على التنسيق السئ فارجو من الادارة اعادة التنسيق فلم اعتد بعد على المحرر وكتابة الدروس

فى هذا الدرس سأبين ان شاء الله عمل لغة برمجة حقيقة كاملة

وليس مجرد script language

كلنا ومعظم المبرمجين يردون عمل لغات برمجة خاصة بهم (وانا منهم وقد عملتها الحمد لله )

لكن معظمنا يفكر فى عمل script language وانا كنت منهم فى الاول

لكن الحقيقة ان اردت عمل لغة برمجة حقيقة اعلم بالاول لن تكون بقوة السى ولا الجافا ولا غيرها

ولا احد منا يطمح بان تكون لغته هكذا فى مراحلها الاولى

كيف نصنع لغة برمجة ؟

هذا صعب ويحتاج عمل مستمر وجاد وشاق ليس لاننا مضطرين الى عملها بالc++ او على الاقل تحويلها وهذا هو اسهل الامور

لان هذه حقيقة يمكن عملها عبر معظم اللغات المعروفة فقط اللغة ستستبدل الترجمة الى الاسمبلى

او لغة الالة على حسب اللغة

على اى اساس المهم ان اللغة تترجم الى لغة الاسمبلى او الالة وهذه هى فائدتها اضافة الى تسهيل البرمجة باستخدم لغة الالة او الاسمبلى وطبعا الكل يعرف ما هى الصعوبة

وهناك احصائية تقول ان من بين كل 100 الف مبرمج يوجد 10 يحترفون الاسمبلى او لغة الالة

وذلك ببساطة لا قواعد الاسمبلى صعبة ومعقدة

مثال للغة البرمجة التى نريد انشاءها

نفترض اسمها SBL اختصار (Simple Basic Language)

وبرنامج Hello World الشهير بها هو كألاتى



SBL.Vars: Str

SBL.SetVar: Str,Hello World

SBL.Body: { SBL.OutPut(Str) }

SBL.EndProgram

SBL.Program: HelloWorld.SBL

والمقابل بال c++



#include <iostream.h>



int main()

char Str;

Str = "Hello World";

{

cout << Str;

return;

}

الجزء الصعب هنا هو ترجمة SBL الى C++

ننشا ملف باسم HelloWorld.Cpp

ونترجمه كالاتى

SBL.Program: HelloWorld.SBL

على سبيل الافتراض

وهذا السطر يخبرك باسم الملف لذ نحن لسنا فى حاجة اليه فقط نحذفه

SBL.Vars: Str

عظيم الان نستطيع عمل شيئين

عمله بالسى بلس

char Str;

او نحوله لstring

SBL.SetVar: Str,Hello World

لو استخدمت الطريقة الاولى افعلها مباشرة

Str = "Hello World";

ملاحظة يجب عليك معرفة السى بلس فلا تفعلها بطريقة خاطئة

الان لدينا سطرين مترجمين

char Str;

Str = "Hello World";

ok...}

SBL.Body { SBL.OutPut(Str) }

الان هذه تدل على

{

cout << Str;

Return 0;

}

وهذه الدالة ننستطيع استخدامها

تبقى لدينا سطر واحد غير مترجم

SBL.EndProgram

لا عليك فهذا يرجع القيمة الى 0

الان قد حولنا الملف

HelloWorld.SBL to HelloWorld.Cpp

لقد ترجمنا الكود بنجاح

لكننا لم نجلد ملفات الHeader

لكنك تستطيع فحص كل الدوال وتحويلها لتعرف ما هى الدوال التى تنتمى ل Header Files

الان قمنا بترجمة

segments و the header segments, وملف HelloWorld.Cpp

اولا ستقوم بترجمة segments وبعدها تقوم بحفظ النتائج الى HelloWorld.Cpp

وتقوم بتحويله الى ملف OBJET

ومن ثم تستخدم الLinker لتحويله الى ملف EXE

وتستطيع الان حذف كلا من HelloWorld.Cpp, HelloWorld.Obj

والذين تركك مع

HelloWorld.SBL and HelloWorld.EXE

الان هذا هو التوضيح الذى اريد ايصاله بخصوص

لغة البرمجة التى اطلق عليها

true programming language

والان لscripting languages..

ترى r psc, vb world, delphi world, c++ world,

هؤلاة وامثالهم من الاسهل جدا عملهم نحتاج فقط الى تصميم interpreter مرفقة مع source code لتفسر التطبيقات والبرامج

فتصميمها ليست مهمتى فى هذا الدرس ولن اوضحها لضيق الوقت وانشغالى بلغة جهاد

واتمنى من الله ان يوفقنى فى تقديم شروحات اكثر فى المستقبل وان يوفقنى فى تطوير لغة جهاد

وشكرا لمتابعتكم الدرس

تحياتى لكم

محمد ابراهيم

GoodBye

#2

ارجو الغاء موضوع من الاثنين لانى بالخطأ كررته بسبب انى كنت وقتها بسمع خطاب حسنى مبارك وتعصبت

GoodBye

مواضيع مشابهة