المصفوفة الشرطية لعدم الدقة لشبكة عصبية ومجموعة اختبار من 500 برنامج بطول 3 خطوط. تحتوي كل خلية على متوسط احتمالية نتيجة إيجابية كاذبة (بأحرف كبيرة) وعدد برامج الاختبار التي يتم اشتقاق هذه القيمة منها (بأحرف أصغر ، بين قوسين). يرتبط تشبع اللون باحتمالية وجود إيجابي كاذبسيكون للمبرمجين قريبًا مساعد جيد: شبكة عصبية ذكية يمكنها أداء المهام الروتينية. علاوة على ذلك ، بمساعدة مثل هذه الشبكة العصبية ، يمكن للناس إنشاء برامج دون حتى معرفة بنية لغة معينة ودون القدرة على البرمجة. من الضروري تكوين خوارزمية وتحديد المهام - وستكتب الشبكة العصبية رمزًا لحلها.
ونتيجة لذلك ، ستصبح جميع الأعمال أكثر إنتاجية بكثير: قال خبير مستقل
أرماندو سولار ليزاما من معهد ماساتشوستس للتكنولوجيا في
تعليق لـ
New Scientist : "سيتمكن الناس من إنشاء أنظمة كان من المستحيل إنشاؤها من قبل".
طور باحثون من Microsoft وجامعة كامبريدج نظامًا يسمى
DeepCoder ، والذي يحل الآن بشكل صحيح المشاكل البسيطة من مسابقات البرمجة المدرسية. يستخدم DeepCoder تقنية تسمى توليف البرنامج الاستقرائي ، وهو معروف للعديد من المطورين. تأخذ سطورًا من التعليمات البرمجية من برامج أخرى - وتقوم بعمل برنامج فريد خاص بها. من المهم أن تضع في اعتبارك أن DeepCoder ، مثل أنظمة تجميع البرامج الأخرى ، يستخدم لغة خاصة بالمجال (DSL) متخصصة لتطبيق معين. يمكن تسميتها "لغة صغيرة" أو "لغة برمجة مقطوعة". يحتوي على تسع وظائف من الدرجة الأولى فقط:
الرأس ، آخر ، أخذ ، إسقاط ، وصول ، الحد الأدنى ، الحد الأقصى ، عكس ، فرز ، مجموع
وخمس وظائف أعلى مرتبة:
MAP ، FILTER ، COUNT ، ZIPWITH ، SCANL1
نطاق اللغة الخاصة بالمجال محدود بالنسبة إلى لغات البرمجة للأغراض العامة.
يتم اختيار خطوط تجميع البرنامج بعد تحليل قيم المدخلات والمخرجات لكل جزء من الكود. في العمل العلمي ، يمكنك دراسة تسعة أمثلة لبرامج من 5 أسطر كتبها DeepCoder. على سبيل المثال ، إليك حل لمشكلة الحلوى (على اليسار) مع وصف نصي (على اليمين) وقيم الإدخال (في المنتصف):

في البحث عن أسطر مناسبة من التعليمات البرمجية ، يتفوق DeepCoder على الرجل: فهو قادر على فهرسة وتحليل كود مصدر أكثر بكثير مما يستطيع الإنسان. يتعلم نظام التعلم الآلي فهم كيفية استخدام هذه الأنماط - ويشكل أساسًا مقدمًا. بالإضافة إلى ذلك ، ستقوم الشبكة العصبية بربط الخطوط الموجودة بطريقة لا تحدث أبدًا لربطها بشخص حي. من خلال التجربة والخطأ ، تتعلم الشبكة العصبية تدريجياً لتحقيق هدفها. هذا التطبيق لتوليف البرمجيات في نظام DeepCoder يسمى تخليق البرنامج الاستقرائي للتعلم (LIPS).
تمثيل تخطيطي لمشفرة مقرونة مباشرة ومفكك شفرات DeepCoderيوضح الرسم التوضيحي أدناه كيف تتوقع الشبكة العصبية DeepCoder احتمالية ظهور كل وظيفة في شفرة المصدر.

كل هذه المزايا تسمح لـ DeepCoder بكتابة البرامج بشكل أسرع بكثير من سابقاتها. تكتب برنامجًا من ثلاثة أسطر في جزء من الثانية ، بينما تحتاج الأنظمة السابقة عدة مرات أو عشرات المرات من الوقت لتجربة جميع الخيارات الممكنة. على سبيل المثال ، يوضح الجدول سرعة إنشاء البرامج من ثلاثة أسطر من التعليمات البرمجية بمهام مختلفة.

يتم إنشاء برامج من خمسة أسطر من التعليمات البرمجية بترتيب حجم أبطأ. يوضح الرسم البياني الموجود على اليمين اعتماد السرعة على طول البرنامج.

كما تعلم ، يفهم النظام أي مجموعات التعليمات البرمجية تعمل وأيها لا تعمل. إنها تتحسن في البرمجة مع كل مهمة جديدة.
يمكن استخدام هذه التقنية لإعادة البناء والبحث عن الأخطاء في البرامج. سوف تجد الأسطر الخاطئة وتستبدلها بالخطوط الصحيحة من البرامج الأخرى. يعتقد المؤلفون أنه بمساعدتها ، من السهل إنشاء برامج روتينية بأسلوب
IFTTT الشهير - لأتمتة التفاعلات الأساسية بين خدمات الويب المختلفة. حتى غير المبرمج يمكنه عمل تعليمات بسيطة مثل اختيار الصور من Facebook وفرزها وفقًا لمعايير محددة. يمكن إنشاء مثل هذه البرامج البسيطة في دقائق دون معرفة البرمجة.
بالطبع ، لا يمكن لهذه الأدوات أن تحل محل مبرمج حقيقي. تعتبر فقط كأداة مساعدة. سيكون مطورو DeepCoder أنفسهم مفيدين جدًا في المستقبل: فهو سيخفف من عبء العمليات الروتينية وسيسمح لك بالتركيز على المهام الأكثر تعقيدًا وأهمية.
حاليًا ، DeepCoder قادر على حل مشاكل البرمجة ، ويعمل مع خمسة أسطر من التعليمات البرمجية. بالطبع ، في لغات البرمجة المتقدمة ، تسمح لك خمسة أسطر من التعليمات البرمجية بكتابة برنامج مفيد للغاية ، ولكنه لا يزال بسيطًا للغاية وأشياء أساسية. يعتقد الخبراء أنه من المستحيل إنشاء برنامج معقد يحتوي على كمية كبيرة من التعليمات البرمجية باستخدام تجميع البرامج. من ناحية أخرى ، بمساعدة الإنسان هذا ممكن. بعد كل شيء ، تتكون البرامج الكبيرة من عدد كبير من الأجزاء الصغيرة.
على الأقل في السنوات القليلة المقبلة ، لا يواجه معظم المبرمجين خسارة في الوظائف بسبب أتمتة الترميز. لكن طرق التعلم الآلي تتحسن بسرعة كبيرة. إنه لأمر مدهش كم تم القيام به في هذا المجال في الآونة الأخيرة.