اهلا شباب
اليوم اقدم لكم درسى الاول فى هذا المعهد والصرح الجليل
وهو عن كتابة لغات البرمجة
اعذرونى على التنسيق السئ فارجو من الادارة اعادة التنسيق فلم اعتد بعد على المحرر وكتابة الدروس
فى هذا الدرس سأبين ان شاء الله عمل لغة برمجة حقيقة كاملة
وليس مجرد 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 لتفسر التطبيقات والبرامج
فتصميمها ليست مهمتى فى هذا الدرس ولن اوضحها لضيق الوقت وانشغالى بلغة جهاد
واتمنى من الله ان يوفقنى فى تقديم شروحات اكثر فى المستقبل وان يوفقنى فى تطوير لغة جهاد
وشكرا لمتابعتكم الدرس
تحياتى لكم
محمد ابراهيم