تَفَرُّد نت - Tafarud.net

أداة SapFix تعمل على تصحيح الاخطاء في الشفرات البرمجية بشكل اوتوماتيكي

إن أي شفرةٍ (code) في أي برنامج عرضةٌ للضرر، لا استثناء في ذلك، سواءً أكانت شفرة المادة الجينية الموجودة في الخلايا –وهو ما ينتج عنه أمراض جينية-أو كانت شفرة برنامج –وهو صلب موضوعنا-وقد تكون النتائج المترتبة على ذلك سيئة، فقد لا يعمل البرنامج بالكفاءة المطلوبة أو حتى قد يتوقف بالكامل. فكيف يمكننا التعامل مع حالةٍ كهذه، وهل يمكن للذكاء الاصطناعي (Artificial Intelligence) أن يمد لنا يد العون؟

حسناً، يأتينا الجواب من إحدى كبرى الشركات في العالم، شركة فيسبوك (facebook)، حيث قام الخبراء هناك ببناء أداة تعمل بالذكاءٍ اصطناعي تساعد المبرمجين على كشف الشفرات البرمجية أو الكودات (code) التي أصابها الضرر(1) (buggy code)، وهذه الأداة المسماة سابفكس (SapFix) يتم استعمالها حالياً على نطاقٍ داخلي ضمن شركة فيسبوك لتكشف الأخطاء في الشفرات البرمجية بشكل اوتوماتيكي، كما وتقترح على المبرمجين (coder) كيفية إصلاحها.

وحقيقةً، فإن استعمال هذه الأداة قد دخل حيز التنفيذ منذ فترة، حيث تستعمله الشركة لبرمجة شفراتٍ أكثر متانةً (2) (robust code) في تطبيقها على الأندرويد (Android app)؛ ولحسن حظنا، فقد قالت الشركة بأن هذه الأداة سيتم طرحها لتُستعمل من قبل المطورين حول العالم.

ولكي ننظر إلى الموضوع من كل الزوايا، فإن (SapFix) لا تعمل الآن بشكلٍ ذاتي، بل تصلح الأخطاء التي تكشفها أداة اختبارٍ ذكية أتوماتيكية اسمها سابينز (Sapienz). لكن، وبما أن التطور والمعرفة البشرية لا تتوقف عند حدٍ بل تخطو إلى الأمام، فإن الخبراء سيطورونها –يطورون (SapFix)-لتعمل بشكلٍ مستقل في المستقبل.

حسناً، لما لا نخوص الآن قليلاً في التفاصيل، فنسأل مثلاً كيف ستعمل هذه الأداة؟ بشكلٍ عام، ولكي يتم إصلاح العطل في برنامجٍ ما، فإنه تتم إعادة الشفرة التي سببت المشكلة بشكل كلي او جزئي؛ لكن، ماذا لو كانت المشكلة معقدة؟ لتجاوز عقبةٍ كهذه، فإن هذه الأداة التي طورتها شركة فيسبوك تقوم بتعديل الشفرة البرمجية بالاعتماد على نماذجَ موجودةٍ في قاعدةٍ معرفيةٍ(3) (knowledge base) مما يسمح لهذه الأداة بإصلاح الخطأ أو حتى القيام بتعديلات صغيرة على الشفرة لإصلاح المشكلة؛ ولا يتوقف الأمر عند هذه النقطة، بل إن (SapFix) بعد أن تصلح الأخطاء، تختبر ملائمة ما قامت به مع ثلاثة معايير:

1-هل هناك أي مشاكل في تنفيذ الشفرة البرمجية (compilation error)؟ (4)

2-هل ما زال العطل قائماً؟

3-هل أدى الإصلاح الذي تم إجراءه إلى مشاكل جديدة (5)؟

وحالما تجد هذه الأداة مشكلةً هنا أو هناك تصلحها ومن ثم ترسلها إلى المهندسين بغية المراجعة والتقييم (6) (feedback).

وتعقيباً على ذلك، فقد أشارت الشركة إلى أن هذه التقنية الآلية –أي غير البشرية-المخصصة لإصلاح الأخطاء مع منظومة إصلاحٍ واختبار أتوماتيكية، هي الأولى من نوعها التي تتم إضافتها إلى قاعدة الشفرات البرمجية (7) (codebase) في فيسبوك.

وختاماً، تجدر بنا الإشارة إلى أن المهندسين يعملون على تعليم هذه الأداة اكتشافَ المشاكل قبل وقوعها. وأضافوا أن اداتي سابينز (sapienz) و سابفكس (SapFix) ستُطلقان كأدواتٍ مفتوحة المصدر حالما ينتهي العمل عليهما.

أمر مشوق، أليس كذلك أعزائي المبرمجين؟

 

الحاشية:

1-الـ (bug): كلمة تعني حرفياً حشرة، لكن، فيما يخص البرمجة، فهي تشير إلى عطل أو خطأ في عمل برنامج أو جهاز، وللطرفة، فإنه في عام 1947 تسببت عثة -يمكن ترجمتها إلى الإنكليزية جوازاً بـ (bug)-عالقة بين دارتين كهربائيتين في تعطيل حاسوب للبحرية الأمريكية، لكن مصطلح (bug) استُعمِل في وقت سابق لهذه الحادثة للإشارة إلى الخطأ في البرامج.

2-الشفرة المتينة (robust code): هي شفرة يتم استعمالها من قبل برنامج متين (robust program) وهو برنامج قادر على التعامل مع العديد من المُدخلات (input) دون أن يتعرض للضرر أو يتوقف.

3-القاعدة المعرفية knowledge base: هي قاعدة بيانات تُستعمل لتخزين المعرفة ومشاركتها واستعمالها، فدورها لا يقف عند حدود حفظ المعلومات، بل واستِعمالِها في حل المشاكل عن طريق الذكاء الاصطناعي.

4-الخطأ في التحويل البرمجي (compilation error): هو ببساطة خطأ في المُترجِم البرمجي (complier) والمحول هو برنامج خاص يُستعمل لتحويل العبارات من لغة برمجة ما إلى (شفرة) يستطيع معالج الحاسوب التعامل معها.

5-لنكون واضحين، فما تقوم به أداة (SapFix) هو التأكد من عدم وجود (crash) أي التأكد من عدم وجود فشل وتوقف مفاجئ في نظام تشغيل أو البرنامج.

6-التغذية الراجعة أو (feedback): هي نقل للتقييم أو التصحيح لعمل أو نشاط ما إلى الجهة المصدر، وفي مقالنا هذا، نعني أن (SapFix) ترسل الإصلاح الذي قامت إلى المهندسين الذين يقومون بدورهم بتقييم ودراسة ما قامت به هذه الأداة.

7-قاعدة الشفرات (codebase): هي كامل بنية الشفرة المصدر (source code) لبرنامج أو تطبيق ما، أما الشفرة المصدر فهي المكون الأساسي للبرنامج الذي يصممه المبرمج.

المصدر:

https://thenextweb.com/artificial-intelligence/2018/09/14/facebook-ai-tool-fixes-bugs/

مصادر الحاشية:

1- https://www.techopedia.com/definition/3758/bug

2- https://study.com/academy/lesson/characteristics-of-robust-programs.html

3- https://www.techopedia.com/definition/2511/knowledge-base-klog

4- http://www.cs.bu.edu/teaching/cpp/debugging/errors/

https://whatis.techtarget.com/definition/compiler

5- https://whatis.techtarget.com/definition/crash

6- https://www.merriam-webster.com/dictionary/feedback

7- https://whatis.techtarget.com/definition/codebase-code-base

https://searchmicroservices.techtarget.com/definition/source-code

 

اضف تعليق

حساب تويتر

تابعوا حساب تويتر للمقالات باللغة الانجليزية.