21
Aug

SBR Polyglot Platform (multi programming languages) by Albara Ramli [AR Sub – مترجم]


اليوم سأقوم باستعراض بيئة SBR متعددة اللغات وهي نظام للبرمجة بلغات متعددة نبذة مختصرة لا يوجد لغة برمجة تستطيع القيام بكل شيء على أكمل وجه كل لغة برمجة لها نقاط قوة ونقاط ضعف هذا يوجهنا إلى سؤال مهم جدا وهو: ما هي أفضل لغة برمجة؟ ولكي نتمكن من الإجابة على هذا السؤال يجب أن نسأل أنفسنا أولا هل توجد لغة تعد فعلا أقوى لغة للبرمجة؟ هل توجد طريقة محددة تمكننا من الاستفادة من نقاط القوة لجميع اللغات في نفس الوقت؟ العديد من الناس حول العالم يستخدمون لغة برمجة واحدة بينما يفضل الآخرون استخدام أكثر من لغة برمجة أولائك الناس الذين يميلون إلى استخدام أكثر من لغة برمجة يواجهون صعوبة في تحديد أي لغة برمجة تستطيع تحقيق أهدافهم لذلك فإن المبرمجون يميلون إلى استخدام عدة لغات برمجة بشكل متجانس في نفس المشروع أحد أكبر التحديات التي تواجههم هي تضيعم لوقت كثير في كتابة شيفرات التجانس في العديد من الملفات مقدمة, ومن ثم الدافع لهذا المشروع لحل هذه المشكلة, قمت بتطوير بيئة SBR للبرمجة متعددة اللغات حتى أجعل من البرمجة المتعددة أمرا ممتعا جدا ومهمة سهلة للغاية هذه البيئة تهدف إلى السماح للمستخدمين بكتابة شيفرات برمجية هجينة من عدة لغات برمجة وبالعدد الذي يريدونه المستخدم بإمكانه كتابة سطور برمجية بلغة C وأخرى بلغة Python في نفس الوقت وبنفس الملف مع تجانس تام بينهما النهج المتبع المبرمجين بإمكانهم الدخول والعمل على هذا النظام عن طريق أي جهاز ومن دون الحاجة إلى تنصيب Compilers أو أي برامج آخرى على أجهزتهم النظام سيستقبل شيفراتهم البرمجية عن طريقة المحرر النصي ماعليهم سوى أن يكتبوا الشيفرة البرمجية الهجينة SBR وهي عبارة عن خليط متجانس من لغتي C و Python النظام قابل للتطوير ومهيأ لإضافة لغات برمجية أخرى هذا هو المستخدم بإمكانه استخدام أي جهاز كالجوال والكمبيوتر المحمول والكمبيوتر الشخصي الشيء الوحيد الذي يحتاجونه هو المتصفح بإمكانهم استخدام النظام عن طريق شبكة الانترنت أو عن طريق الشبكة المحلية هذا هو الـ Server النظام موجود داخل الـ Server وهو مكتوب بلغة PHP ولكي أتمكن من تشغيل لغة PHP فأنا أستخدم Apache server النظام يستقبل الشيفرة الهجينة من المستخدم عبر شبكة الانترنت لذا فإن المستخدم يستخدم محرر النصوص لكتابة الشيفرة البرمجية ومن ثم ترسل هذه الشيفرة إلى النظام ومن ثم يقوم النظام بتحليل الشيفرة البرمجية إلى قطع صغيرة من Python وأجزاء صغيرة أخرى من C فلنفترض أن القطعة الأولى هي C وبما أن القطع تعتمد على بعضها البعض, فإنه يجب علينا تنفيذ كل القطع مرحليا سنبدأ بلغة C ونبعث القطعة البرمجية إلى GCC Compiler ومن ثم سيولد Compiler: GCC مخرجات وهي عبارة عن متغييرات ونصوص المتغييرات التي سينتجها الـ Compiler سترجع مرة أخرى إلى النظام المخرجات ستظهر على الشاشة بمجرد حصولنا على المخرجات من قطعة الـ C سنقوم بإرسالهم إلى النظام ومن ثم بإمكان النظام إرسال القيمة الناتجة إلى قطعة أخرى تعتمد على هذه المخرجات فلنفترض أن القطعة الثانية هي Python لذا نقوم بإرسال قطعة الـ Python إلى الـ Compiler وبدوره سينتج مخرجات وهي متغييرات ونصوص المتغييرات سترجع مرة أخرى إلى النظام محملة بالقيمة الجديدة فلنبدأ الآن بالشيفرة البرمجية عندنا هنا شيفرة C وبداخل شيفرة C يوجد Tag به Python وكما ترى هنا هذا Tag البداية وهذا Tag النهاية وهنا لدينا المتغييرات المشتركة وقد ابتكرت هذه الصيغة ليكون x متغيرا مشتركا بين C و Python يتوجب عليك هنا وضع نوع المتغير ثم اسم المتغير في هذه الحالة لدينا x=1 وفي Python نقوم بإضافة العدد 1 للمتغير x أول شيء يقوم به النظام هو تقسيم الشيفرة الهجينة إلى أجزاء أصغر لدينا الجزء الأول هنا وهو C لدينا الجزء الثاني هنا وهو Python لدينا الجزء الثالث هنا وهو أيضا C كما ترى هنا لدينا الجزء الثاني يعتمد على الجزء الأول الجزء الثالث يعتمد على الجزء الثاني حيث لدينا x هنا ولدينا x هنا تشير إلى هذه ولدينا x هنا تشير إلى هذه وبذلك فأول شيء يقوم به النظام هو معالجة هذا الجزء إرساله إلى الـ Compiler ومن ثم الحصول على النتيجة والنتيجة في هذه الحالة هي x=1 أعني بالنتيجة: التأثير الذي حصل للمتغير وبذلك فإن قيمة المتغير x ستكون العدد 1 ثم نبدأ في الجزء الثاني وهو Python النظام سيشير إلى قيمة x الموجودة في C النظام يعلم بأنه يجب مشاركة المتغير x بسبب وجود شيفرة المشاركة @ ويعلم أيضا نوع المتغير x النظام سيغذي هذا الجزء بقيمة x وهي x=1 ومن ثم تنفذ الشيفرة البرمجية فنحصل على النتيجة x=2 في الجزء الأخير النظام سيقوم بإزالة شيفرة الـ Python وسيضع قيمة المتغير والتي هي x=2 كما ترون هنا فإن هذه الشيفرة هي شفرة C خالصة يتم إرسالة الجزء إلى الـ Compiler ومن ثم يقوم يتنفيذه ومن ثم يحصل على النتيجة والنتيجة هنا هي x=2 هذه هي خريطة التجانس بين المتغييرات هنا لدينا الشيفرة الهجينة ثم ننفذ الجزء الخاص بـ C فنحصل على متغييرات ومخرجات ثم نقوم بحفظهم داخل النظام لاستخدامهم في الأجزاء الأخرى ثم نرجع مرة أخرى إلى الشيفرة الهجينة ثم نذهب إلى Python فنحصل على متغييرات ومخرجات ومن ثم نحفظهم مرة أخرى داخل النظام هنا يقوم النظام بحفظ المتغييرات خطوة بخطوة الآن فلنقارن بين التجانس وعدم التجانس لنرى كم هو مهم إذا لم يكن لدينا تجانس للمتغييرات في المثال السابق فإن قيمة x النهائية ستكون 1 وليس 2 بالنظر هنا إذا لم يكن لدينا تجانس للمتغييرات هنا فإن المتغير x هنا مجهول القيمة المتغير x هنا يساوى 1 سيبقى يساوي 1 هنا كما هو دون تغيير لذلك هنا ليس لدينا العدد 1 لأن 1 يعني عدم التجانس لذلك لدينا هنا العدد 2 لأن لدينا تجانس للمتغييرات سمحت للمبرمج بتحديد المتغييرات التي يرغبون بمشاركتها بين الأجزاء يجب عليه فقط استخدام شيفرة المشاركة هذه هي عليه فقط تحديد نوع المتغير واسمه إذا كان لديه أكثر من متغيير بإمكانه إضافتهم أيضا وإذا كان لديه أكثر من نوع للمتغييرات فبإمكانه إضافتهم أيضا فلنبدأ الآن بالتطبيق بالإضافة للعرض التجريبي ومن ثم النتائج فلنبدأ بالعرض التجريبي لاستخدام النظام عبر شبكة الانترنت, قم بزيارة الرابط التالي هذا هو النظام عندنا هنا الشعار ولدينا هنا زر للمثال الأول والثاني والثالث وهنا لدينا زر مساحة العمل الحالية بالضغط على هذا الزر سترجع إلى مساحة العمل هذه وهذه الزر لعمل Compile و Run دعني أبدأ بالمثال رقم 3, حيث أنه نفس المثال الذي تناولناه في العرض المرئي بالنظر هنا ستجد أن لدينا هنا شيفرة C وبداخل شيفرة C لدينا شيفرة Python دعني أبدأ بعمل Compile و Run لهذه الشيفرة الهجينة أقوم بالضغط على هذا الزر ومن ثم تظهر رسالة بأن العملية قد تمت بنجاح بالذهاب للأسفل ستجد المخرجات فكما ترى هنا بالأعلى, لدينا أول printf ثم لدينا printf أخرى هنا ولدينا ناتج صحيح هنا, فالناتج الأول هو x=1 والناتج الثاني x=2 قمت أيضا بإضافة ميزة أخرى وهي على الجانب الأيمن للشاشة, ستجد مربع نصي به BEFORE و AFTER في شيفرة Python هنا لدينا متغير مشترك x, فيظهر لنا في المربع النصي قيمة x قبل البدء في شيفرة Python وبعد الانتهاء منها وإذا كان لديك أكثر من شيفرة Python في الشيفرة الهجينة فسيظهر على الجانب الأيمن مربع نصي لكل شيفرة Python دعني أريك ذلك عمليا, بإضافة شيفرة Python أخرى بعد printf بالإضافة إلى printf أخرى أيضا وسأقوم هنا بعمل x=x+10, وسأقوم أيضا بطباعة الناتج أيضا وبعمل Run للشيفرة المصدرية ستلاحظ وجود مربعين نصيين هنا لأن عندنا شيفرتين Python حاليا وبذلك لدينا x=1 قبل الشيفرة الأولى و x=2 بعدها والناتج هنا كان 2 ولكنني زدته بمقدار 10, لذا فقبل شيفرة Python كان x=2 وبعدها أصبح x=12 بالنظر هنا سترى مخرجات الشيفرة الهجينة قمت أيضا بإضافة ميزة أخرى وهي تحميل الشيفرة البرمجية للحصول على الشيفرة البرمجية الصافية المكونة من ملفات C و Python والمرتبطة مع بعضها البعض دون الحاجة لاستخدام النظام أو الشيفرة الهجينة, اضغط هنا وستحصل على الشيفرة الصافية بالنظر هنا ستجد أن لديك ملف C واحد وملفين Python دعني أفتح ملف C كما ترى هنا فإن كل هذه الدوال هي لإجراء التجانس بين المتغييرات, وقد جهزت النظام بأن يقوم بإنشائها تلقائيا اذهب إلى الدالة الرئيسية بالنظر هنا هذا يمثل شيفرة Python الأولى وهذا يمثل شيفرة Python الثانية هنا سيتم استدعاء ملف Python الأول وهنا سيتم استدعاء ملف Python الثاني أيضا لدينا هنا ملف Pyhton, دعني أستعرض الملف الأول هذه هي شيفرة Python هنا لدينا x=x+1 البقية لطباعة المتغير قبل وبعد الشيفرة على الجانب الأيمن كما ترى هنا أنه بامكانك استخدام الملفات مباشرة دون الحاجة للنظام وذلك بعمل compile لملف root.c ومن ثم run وبذلك لن تكون بحاجة إلى النظام هذه جداول العمل في الأسبوع الأول قمت بتجهيز server وقمت ببناء التركيبة النحوية للغة الهجينة مثل الصيغة البرمجية لعمل مشاركة للمتغييرات كيفية التفريق بين الأنواع المختلفة للمتغييرات المتشاركة كل ذلك بعدها بدأ بعمل تحليل للعملية الأسبوع التالي بدأت بعمل خوارزمية توليد شيفرة C الصافية, ثم اختبرتها مع GCC ثم بدأ بالعمل على معالجة الطبقة الأولى وهي C ثم عملية التواصل مع الطبقات الأخرى من حيث تشارك المتغييرات ارسالا واستقبالا الأسبوع الذي يليه بدأت بالعمل على الطبقة الثانية وهي Python وكيفية التعامل مع الشيفرة الهجينة كيفية ارسال واستقبال متغييرات من طبقة لأخرى ومن ثم ارسال شيفرة Python إلى Compiler وتنفيذها ومن بعدها عدلت الطبقة الأولى C لتكون قادرة على استقبال المتغيرات المرسلة من الطبقة الثانية Python وفي الأسبوع الذي يليه بدأت بالعمل على الشيفرات الصافية التي تحصلت عليها من كل الخطوات السابقة وعمل Compile لهم بدأت بالعمل أيضا على واجهة المستخدم كنت قد باشرت قبلها بالعمل على واجهة المستخدم إلا أنني في هذه المرحلة جمعت كل شيء في مكان واحد وفي الأسبوع الأخير, وهو الأسبوع الحالي عملت على التقرير والعرض المرئي بالإضافة للتسجيل الصوتي الأعمال ذات العلاقة لم أجد عملا قريبا أو مشابها لما أقوم به, ولكنني وجدت بعض الأعمال بشأن تحويل الشيفرات البرمجية من لغة إلى لغة أخرى فمثلا إذا كنت تستخدم C فإنهم يقومون بتحويل C إلى Python أو تحويل C إلى PHP أو إلى أي لغة أخرى, هذه هي فكرتهم ولكنني أم أجد شيئا عن الكتابة بلغات برمجية مختلفة في نفس الملف الخطط المستقبلية أعتقد أن إضافة لغات برمجية إضافية شيء مفيد أعتقد أن البحث في إدارة الزمن مهم عند الحديث عن إضافة لغات برمجية جديدة أيضا إضافة طبقات متعددة, فمثلا كتبنا بلغة Python داخل لغة C, فماذا لو أضفنا على ذلك كتابة لغة C داخل لغة Python ثم لغة Python داخل لغة C الخلاصة النظام يعطيك شعورا فريدا وكأنك تستخدم لغة برمجية واحدة المبرمج بإمكانه تحميل الشيفرة البرمجية الصافية المتجانسة النظام يشتغل بكفاءة كوسيط بين المبرمج والعديد من Compiler النظام لا يتدخل في وقت التنفيذ مما يحسن من وقت التنفيذ شكرا للمتابعة

Tags: , ,

There are no comments yet

Why not be the first

Leave a Reply

Your email address will not be published. Required fields are marked *