#4813: Тяжело в учении, тяжело в бою

14:00 29.11.2010, IT happens


Учусь на четвёртом курсе на инженера-программиста по автоматизации производственных процессов. Учебный курс включает в себя некую программу для разработки аппаратных решений под названием Genie, о которой и пойдёт речь.


В моё задание входило написание программы с парой кнопок и датчиков для симуляции производственного процесса. В ходе написания я сталкивался с настолько чудесными багами и глюками, что описывать их словами было бы очень сложно, поэтому покажу на примерах.


* * *


Переменные могут состоять либо из одной буквы, либо из одной буквы и цифры. «ts» или «t00» — ошибка синтаксиса.


* * *


Есть вот такие строки кода:

t1 = ET1/10 ? t0;

output(#0, t1);


Выполняются они по факту в такой последовательности:

t1 = ET1/10;

output(#0, t1);

t1 = t1 ? t0;

output(#0, t1);


* * *


ET1/10 ? ET1*0,1. После обнаружения этого бага я вышел из аудитории и побился об стены. Программа вела себя по-разному: то замедляла время в десять раз, то считала время как дробную величину, а не целую.


* * *


Явно заданное в коде обнуление не происходит? Надо перезапустить программу дважды. В первый раз странным образом сбрасывается пара параметров, после второго включения — все остальные.


* * *


И на десерт: программа в бесплатном режиме работает два часа (и, следуя логике, после этого выключается). Но нет, разработчики не смогли подать команду выхода, поэтому программа сама просит, чтобы её перезапустили.




Загрузка...