انا مبرمج لدي العديد من اللغات ولدي الخبره في البرمجه
لاكن كيف يمكنني تطوير اي لغه او بناء لغه جديده لكي اسهل علي وعلى فريقي العمل
وتسهل علينا المجهود وكتابه الاكواد الكبيره جدا
يبحث معظم الأشخاص الذين يرغبون في تعلم كيفية "إنشاء لغة برمجة" فعلياً عن معلومات حول كيفية إنشاء Compiler. يريدون فهم الآليات التي تسمح بتنفيذ لغة برمجة جديدة.
يعتبر المترجم جزءًا أساسيًا من اللغز ، لكن إنشاء لغة برمجة جديدة يتطلب أكثر من ذلك:
1) يجب تصميم اللغة: على منشئ اللغة اتخاذ بعض القرارات الأساسية حول النماذج التي سيتم استخدامها وبناء جملة اللغة
2) يجب إنشاء مترجم أو كما يعرف بال Compiler.
3) يجب إنشاء مكتبة أساسية تحوي العديد من ال built-in functions والتي تمكن المستخدم من استخدامها دون الحاجة لإعادة إنشائها كمتبة std في C++.
4) يجب توفير أدوات الدعم مثل ال editors ونظام لبناء الكود البرمجي بعد إنشاؤه.
1) مرحلة الصورة ال big-picture أو الصورة العامة: حيث ستسأل نفيسك عدة أسئلة هنا:
ما هو نموذج التنفيذ الذي نريد استخدامه؟ هل نريد كتابة static أم كتابة dynamic؟
ما نوع البرامج التي ستكون هذه اللغة الأفضل فيها؟ هل سيتم استخدامه للنصوص الصغيرة أو الأنظمة الكبيرة؟
ما الذي يهمنا أكثر: الأداء؟ قابلية القراءة؟
هل نريدها أن تكون مشابهة للغة البرمجة الحالية؟ هل سيكون موجهًا لمطوري C أم يسهل تعلمه لمطوري python؟
هل نريده أن يعمل على منصة محددة (JVM ، CLR)؟
ما نوع إمكانيات البرمجة التي نريد دعمها ، إن وجدت؟ macros؟ templates؟ reflection؟
2) مرحلة ال refinement أو مرحلة التنقيح. حيث ستتعرض لمشاكل اللغة، والأشياء الأصعب أو الأشياء المستحيلة في هذه اللغة وتنتهي بتحسينها وتطويرها. ربما هذه المرحلة أصعب بكثير من المرحلة الأولى، ولكنها المرحلة التي ستقوم برفع هذه اللغة وتجعلها قابلة للاستخدام.
1) عملية بناء المترجم أو ال parser
2) ترجمة ال parse tree إلى جمل بنائية مجردة.
3) حل مشكلة الرموز. ففي لغة البرمجة يمكننا أن نكتب (1 + b) فكيف يمكننا أن نكتب ذلك؟
4) تفقد الأخطاء
5) ترجمة لغة البرمجة إلى لغة الآلة
6) تقوم بعمليات الربط
وذلك لكي تقوم بالمهام الآتية:
1) للطباعة على الشاشة
2) الوصول إلى ملفات النظام
3) استخدام شبكات الاتصال
4) إنشاء واجهة المستخدم أو GUIs
في النهاية، عملية صنع لغة برمجية من الصفر هو أمر رائع لكنه صعب ويجتاج الكثير الكثير من الوقت والجهد والعمل الجماعي، لكنها ممكنة. بإمكانك إلقاء نظرة هنا على بعض الروابط التي قد تساعدك: