الخصائص بوصلة للمبرمج ✛ ✎

الأصل: "Accurate Programming: Thinking about programs in terms of properties"
· Walid Taha, Veronica Gaspes, Rex Page
arXiv:1109.0786 · 2011-09-05 · arXiv non-exclusive · تحليل مستقل · 1 دقيقة
يمكن اختبار البرنامج ليس بالأمثلة، بل بقواعد تصح دائمًا.

ينظر المبرمج إلى الدالة max التي تُرجع العدد الأكبر من عددين. كيف يتأكد أنها تعمل؟ يمكن كتابة اختبارات: max(2,3)=3، max(5,5)=5. لكن ماذا لو كان هناك خطأ في عمق الكود لا يظهر إلا مع العدد 65536؟ بدلًا من التخمين، يمكن صياغة قاعدة: «النتيجة لا تقل أبدًا عن أيٍّ من الوسيطين». هذه خاصية، ويجب أن تصح لأي بيانات إدخال.

تولّد مكتبة ScalaCheck تلقائيًا مئات الأعداد العشوائية، وتُدخلها في الخاصية، وتُخبر إذا خُرقت القاعدة. هكذا تعمل الخصائص كبوصلة: فهي لا تفحص مسارًا واحدًا، بل تحدد اتجاهًا يصح لأي طريق. مثلًا، بالنسبة للدالة sum (جمع قائمة أعداد)، خاصية «إذا أُضيف عدد موجب، يزداد المجموع» تكتشف خطأ تجاوز المدى الذي لا تراه الاختبارات العادية.

يمكن تحسين الخصائص كما تُضبط البوصلة. نقول أولًا: «النتيجة غير سالبة»، لكن هذه القاعدة تحققها حتى دالة تُرجع صفرًا دائمًا. نضيف: «لقائمة من عنصر واحد، النتيجة تساوي 1»، فيُستبعد الصفر. خطوة بخطوة، تتقارب الخصائص نحو البرنامج الصحيح الوحيد.

البرمجة الدقيقة هي أن يفكر المطور في الكود عبر خصائصه. فبدلًا من الغرق في ضباب التعقيد، يمسك ببوصلة من القواعد يمكن التحقق منها آليًا. هذا يجعل البرامج أكثر موثوقية، وتعديلها أكثر أمانًا.

اسم مكتبة ScalaCheck يشير إلى فكرة التحقق الآلي من الخصائص، وليس إلى «فحص سكالا» — إنها أداة للتحقق من الخصائص في سكالا.

في مسلسل «ويست وورلد»، يتم تحديد سلوك الروبوتات بقواعد معقدة، لكن صحتها غير مضمونة. كان يمكن للبرمجة الدقيقة أن تساعد في صياغة والتحقق من خصائص السلوك، مما يمنع الأعطال غير المتوقعة.

العلماء
Max BornAlbert EinsteinErwin SchrödingerHugh Everett IIIJohn von NeumannAugustin-Louis Cauchy
المفاهيم
دقة أتمتة التحسين دقة تشخيصية معالجة اللغة الطبيعية زمن حقيقي الخوارزمية الكمومية تصميم الدواء مفتوح المصدر تقارب التعلم الآلي محاكاة حاسوبية التعرف على الكلام طب شخصي ذكاء اصطناعي الروبوتية حساب التصنيف حل دقيق دقة