الكشف عن نظام يعيد استخدام أكواد البرمجة بين برنامج وآخـر تلقائياً
كشف باحثون عن نظام جديد يمكنه نقل أجزاء من الأكواد المسؤولة عن تنفيذ وظيفة معينة في برنامج ما، وإعادة زرعها في برنامج ثان أو ثالث لاستخدامها، مع إجراء التغييرات الضرورية في البرنامج المتلقي للأكواد تلقائياً، والتي تضمن أن يظل يعمل بكفاءة تامة ودون ارتباك وأخطاء في وظائفه الأصلية أو الوظائف المضافة إليه، مشيرين إلى أن هذا البرنامج غير مسبوق، ويعد الأول من نوعه في العالم، ويستهدف تحسين كفاءة أنشطة البرمجة والتطوير داخل كل من شركات البرمجة وإدارات التقنية في المؤسسات التي توجد فيها أقسام برمجة.
اقتباس الأكواد قال أستاذ علوم الحاسب في جامعة «كورنيل» للتقنية، الدكتور فيتالي شماتيكوف، إن «اقتباس الأكواد يعد، بصفة عامة، المصدر الذي تأتي منه مشكلات كثيرة في البرمجة، إذ تحدث الكثير من العثرات البرمجية ونقاط الضعف الأمنية نتيجة الاقتباس بطريقة النسخ واللصق اليدوي، وهنا يرتكب المبرمجون بعض الأخطاء البسيطة»، مشيراً إلى أن «هذا هو ما يجعل الأشياء تتعرض للمخاطر، ولذلك فإن وجود طريقة آلية لتحريك الأكواد ونقلها من مكان إلى آخر، يمكن أن يكون أمراً ضخماً ومهماً جداً». • باحثون في «ماساشوستس» للتقنية أطلقوا على النظام اسم «النسخة الكربونية من الكود». • النظام الجديد يستهدف تحسين كفاءة أنشطة البرمجة في شركات البرمجة وإدارات التقنية. |
وعرض هذا النظام أمام مؤتمر «آلات الحوسبة» الذي نظمته مؤسسة هندسة البرمجيات الأميركية، أخيراً، وقدمه فريق من الباحثين في معمل علوم الحاسب والذكاء الاصطناعي بمعهد «ماساشوستس» للتقنية «إم آي تي»، الذي ضم الأستاذ في معمل علوم الحاسب، الدكتور ستيليوس دوسكوس، كباحث رئيس، إضافة إلى كل من أستاذ الهندسة الكهربية وعلوم الحاسب، الدكتور مارتن رينارد، والباحث في الهندسة الكهربية وعلوم الحاسب، فان لونج، فضلاً عن الباحثين في المعهد، إيريك لاثينين وأنتوني إيدن.
برنامج مانح
ونشرت غرفة الأخبار في موقع المعهد news.mit.edu ملخصاً للورقة البحثية الخاصة بالنظام، جاء فيها أن الفريق أطلق على النظام الجديد اسم «النسخة الكربونية من الكود»، ووظيفته الأساسية نقل وإعادة زرع الأكواد ما بين البرامج وبعضها بعضاً بطريقة تلقائية، من خلال منح المبرمجين القدرة على اختيار الكود الموجود في أحد البرامج، ونقطة إدراج في برنامج ثانٍ، ليجري النظام تلقائياً التعديلات الضرورية المترتبة على نقل وإعادة زرع هذا الجزء من الكود في البرنامج الثاني، مثل تعديل الأسماء المتغيرة، وبالتالي يتكامل الكود بسلاسة وطريقة جيدة في السياق الجديد.
جلب الكود
ووفقاً للورقة، يستخدم النظام مفهوم البرنامج المانح الذي تنقل منه الأكواد أو نسخة منها إلى البرنامج المتلقي الذي تزرع به الأكواد المنقولة، ويتعلق ذلك بصفة أساسية بالبيانات التمثيلية، أو البيانات التي تقوم بتمثيل وتوصيف وتوضيح البيانات الأخرى المستخدمة في البرنامج، سواء كان مانحاً أو متلقياً.
وأوضح الباحثون هذا الأمر بأن برنامجاً لمعالجة الصور، على سبيل المثال، يحتاج إلى أن يكون قادراً على التعامل مع ملفات الصور المتنوعة الأنماط، مثل نمط «جي بي جي»، و«تي آي إف» و«بي إن جي»، لكن داخلياً، عليه أن يقوم بتمثيل كل هذه الصور باستخدام مخطط معياري واحد، لكن البرامج المختلفة قد تستخدم مخططات داخلية مختلفة ومتنوعة، وهنا يأتي دور النظام الجديد الذي يعمل تلقائياً وبطريقة آلية على رسم المخطط المستخدم بالبرنامج المانح داخل البرنامج المستقبل للكود، من أجل جلب الكود بسلاسة وبلا تعقيدات أو مشكلات تترتب على ذلك.
خطوة جديدة
وقال دوسكوس إن «نظام (النسخة الكربونية من الكود) يوفر شيئاً مهماً في هندسة البرمجيات، لأن إعادة استخدام الكود تلقائياً خطوة جديدة باتجاه ميكنة الطريقة البشرية في دورة تطوير البرمجيات، ورؤيتنا أننا ربما نكون قد كتبنا معظم البرمجيات التي نحتاج إليها، ونحن الآن لا نحتاج إلا إلى إعادة استخدامها».
وأضاف أن «الفريق البحثي نفذ ثماني تجارب استخدم فيها نظام (النسخة الكربونية للكود) في نقل وإعادة زرع الكود بين ستة من برامج معالجة الصور مفتوحة المصدر، وسبع من ثماني عمليات النقل والزرع كانت ناجحة، حيث استطاعت البرامج المستقبلة للأكواد العمل بصورة جيدة، مع تنفيذ الوظائف الجديدة التي أضيفت إليها».
وبين دوسكوس أنه «مع النظام الجديد تكون الخطوة الأولى في نقل وزرع الأكواد من برنامج لآخر هي تغذية الإثنين بملف إدخال واحد، ثم يقوم النظام بعد ذلك بالمقارنة بين الطريقة التي سيتعامل بها كل من البرنامجين مع هذا الملف»، موضحا أنه «مثلا إذا كان البرنامج المانح ينفذ سلسلة من العمليات على كمية معينة من البيانات، ثم يحمّل النتائج داخل تعليمة برمجية خاصة بالأسماء المتغيرة تحمل اسم (mem_clip->width,)، فيما البرنامج المتلقي ينفذ العمليات نفسها على هذه الكمية ذاتها من البيانات، ويقوم بتحميل النتائج داخل تعليمة برمجية خاصة بالأسماء المتغيرة تحمل اسم آخر (picture.width,)، فإن النظام يخمن أن المتغيرات تلعب الأدوار نفسها في البرامج ذات الصلة، وبمجرد أن يحدد العلاقات والاشياء المتطابقة بين هذه المتغيرات، يعرض هذه الوظائف على المستخدم، كما يعرض جميع المتغيرات الموجودة في البرنامج المانح، التي يمكن أن يكون من بينها ما لا يتوافق مع البرنامج المستقبل، ثم يستأصل النظام تلقائيا أي عمليات أو أشياء زائدة لا علاقة لها بالوظيفة المطلوبة من الكود المنقول للزرع في البرنامج الآخر».
القيم الدقيقة
وذكر دوسكوس أنه «لرسم تمثيلات البيانات من أحد البرامج داخل تمثيلات البيانات في برنامج آخر، ينظر النظام إلى القيم الدقيقة، التي يخزنها كل من البرنامجين في الذاكرة، وكل نقطة داخل الصورة الرقمية مثلاً محكومة بثلاث قيم لونية (الأحمر والأخضر والأزرق)»، لافتاً إلى أن «بعض البرامج تخزن هذه القيم الثلاثية في أمر يرتبها النظام على النحو التالي: (أحمر أخضر أزرق)، في حين أن بعض البرامج تخزنها في أمر يرتبها (أزرق أخضر أحمر)».
وأضاف أنه «إذا وجد النظام علاقة منهجية بين هذه القيم المخزنة في أحد البرامج وهذه المخزنة أيضاً في البرنامج الآخر، يقوم بتوليد مجموعة من العمليات للترجمة بين البيانات التمثيلية في البرنامجين».
وأفاد بأن «النظام يعمل بصورة جيدة مع تنسيقات الملفات، مثل الصور التي تكون بياناتها منظمة جيداً، كما يعمل مع البرامج مثل برامج معالجة الصور، التي تخزن البيانات التمثيلية في مصفوفات التي تتكون بالأساس من صفوف من وحدات الذاكرة متطابقة الحجم».
وأشار دوسكوس إلى أن «الباحثين يسعون حالياً إلى تعميم هذا المدخل وتطبيقه على تنسيقات الملفات التي تسمح بالمزيد من المرونة في تنظيم البيانات، والبرامج التي تستخدم أسلوب هيكلة البيانات أكثر من المصفوفات، مثل شجرات التصنيف والقوائم المرتبطة ببعضها بعضاً».