لغات البرمجة cs.PL

3 مقالات

مقالات

الخصائص كبوصلة: البرمجة الدقيقة
يتكاثف الضباب فوق السطر «def max(a: Int, b: Int): Int». ماذا يفعل هذا السطر؟ يعيد أكبر رقمين، ولكن كيف يمكن التحقق من ذلك؟ يمكن كتابة عشرات الاختبارات بأزواج محددة: max(2,3)=3، max(5,5)=5، max(-1,0)=0. ومع ذلك يبقى القلق: ماذا لو تعطلت الدالة مع مليون وسالب مليون؟ بدلًا من التحديق في الضباب، يمكن للمطور أن يأخذ بوصلة، وهذه البوصلة تسمى خاصية. الخاصية هي عبارة عن البرنامج يجب أن تكون صحيحة لجميع المدخلات.
نُجمّع مرة واحدة، ونُفاضل في كل مكان
تخيّل مترجمًا يجلس في قاعة اجتماعات ويترجم كل كلمة. لكنه يلاحظ أنه يمكنه تحسين ترجمته إذا تعلّم من أخطائه. يبدأ بتسجيل العبارات التي سبّبت سوء الفهم، ويصححها. وبعد ساعة، تصبح ترجمته أدق، ويمر الاجتماع بسرعة أكبر. وهكذا هنا: مُفسِّر لغة Scheme، بمجرد تجميعه، يمكنه تنفيذ أي برنامج يُمرَّر إليه كبيانات، وفي الوقت نفسه حساب التدرجات لتحسين تلك البرامج.
التفتيش الجمركي للكود: كيف نضمن تحسين برامج الأطفال دون أخطاء
يبني الطفل لعبة بسيطة في سكراتش: تظهر الشخصية في المنتصف وتقفز فوراً إلى الزاوية. الحركة الأولى تختفي بين الإطارات ولا يراها أحد. إزالة هذا الأمر آمنة. لكن كيف يعرف المُحسِّن التلقائي ذلك؟ اليوم، يحتوي مستودع سكراتش على عشرات الملايين من المشاريع التي كتبها مؤلفون صغار. خطأ من المُحسِّن قد يُشوِّه مقصدهم دون أن يُلاحَظ. الحل يشبه التفتيش الجمركي.