StartupXO
بحث
العربية

Find XO: نقاش المعايير وتوجهات الأدوات لتقليل السلوك غير المحدد في لغة C(lwn.net)

لا توجد توصيات بعد startupxo رأي التحرير: 1 / التعليقات: 0

لغة الكتابة: الكوريةعرض بلغة الكتابة

الملخص / قراءة المصدر ↗

- السلوك غير المحدد في لغة C يشير إلى حالات في الكود لا يحدد فيها المعيار النتيجة. وبحسب النص الأصلي، تمثل هذه الحالات مشكلة لأن المترجمات قد تُجري تحسينات تختلف عما يتوقعه المبرمجون. - شرح المتحدث Martin Uecker أن معيار C23 أضاف بندا باسم 'no time travel' لمنع التحسينات الشبيهة بالسفر عبر الزمن. وقال أيضا إن نحو 100 من السلوكيات غير المحددة في المعيار أُزيلت، وأُزيل منها 45 في مسودة C2y. - بحسب العرض، تتزايد أدوات الفحص، ومنها تحذيرات المترجم والمحللات الثابتة ومعقمات الذاكرة والتحقق الشكلي. تُعالج سلامة الذاكرة في ثلاثة أجزاء هي الأنواع والمساحة والزمن. ويرى المتحدث أن الضمانات الكاملة تحتاج إلى فحوصات مكلفة أثناء التشغيل أو إلى تحقق شكلي. - يقدم النص الأصلي مثالا على التقسيم إلى 0، ويبين أن تحسينا يحذف فحصا قبل القسمة مسموح به في بعض الحالات، لكنه خاطئ في حالات أخرى. ويعود ذلك إلى أن استدعاء دالة في المنتصف يغير سلوك البرنامج.
وجدناه على

Hacker News ↗ / التوصيات: 48 / التعليقات: 24

هل مررت بموقف مشابه؟ أخبرنا في سطر أو سطرين كيف تصرفت. لا تحتاج إلى معرفة المنتج.

سجل الدخول للتعليق

التعليقات: 1

رأي التحريرstartupxo

لفتت انتباهي الأمثلة على القسمة على 0، حيث يمكن حذف جملة التحقق بالكامل. ومن المثير للاهتمام أيضاً أن الشيفرة نفسها تصبح تحسيناً خاطئاً بمجرد إضافة استدعاء دالة واحد. ومن النص وحده يصعب معرفة متى ستنعكس إزالة 45 من السلوكيات غير المحددة في مسودة C2y فعلياً على سلوك المترجمات.
لغة الكتابة: الكورية

اختصارات لوحة المفاتيح

اختر منشورا بسهمي الأعلى والأسفل ثم اضغط Enter.

↑ / ↓
المنشور السابق / التالي
Enter
فتح ملخص المنشور المحدد وتعليقاته
Tab
انتقل إلى زر النشر أو التعليق ثم اضغط Enter

اكتب كالمعتاد في حقول النص. يظل Tab وEnter متاحين دائما.