Что-то я пару дней ждал, пока отдохнёт мозг и начнёт снова программировать, но так и не дождался. А раз так, то я не стал пока переписывать алгоритм в консоли, занявшись исправлением багов. Пару багов удалось исправить.
Баги досадные, но неприятные. Почему-то компилятор clang не выдаёт ошибку, если указать функции вместо ссылки указатель и наоборот. Например функция:
void function(const Value& val);
Если сделать ошибку, и вызвать её вот так:
Value* p;
function(p);
То компилятор clang почему-то не ругается на это, но код генерит тоже неправильный. В результате получается баг, который сложно обнаружить не только визуально, но даже прогоняя программу в отладчике.
Данные почему-то в каком-то месте вдруг превращаются в кучу мусора. Возникает ощущение, что компьютер живёт какой-то собственной жизнью. При этом в компиляторе никаких ошибок или предупреждений.
В результате ты думаешь, что у тебя неправильно составлен алгоритм. Такое тоже встречается - и это самая частая ошибка, поэтому по привычке начинаешь искать именно такого рода ошибку. Смотришь в отладчике - раз, другой, третий, а там всё нормально, но программа то где-то вылетает, то выдаёт разные ошибки при одинаковом сценарии использования. В итоге ты находишь банальную опечатку. Но всё это отняло у тебя неделю. Нормально.
![Создание массива типа [Boolean] с добавлением элемента](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWmwUWvbTiPNAQ5Np6Wz8Fz3zPSvk-04ZNkt4UvDAEWm6nvfsPVkeBjhlFhDE-tW30BloxPKV0cd4D7NH2R_MQko0Awk_TkSexqbyEBdY_j1bYS-xmU4JHsU7c0SdlLREEFnUZkx7JL9K7/w400-h258/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA+%25D1%258D%25D0%25BA%25D1%2580%25D0%25B0%25D0%25BD%25D0%25B0+2021-02-17+%25D0%25B2+06.53.05.png)
Комментариев нет:
Отправить комментарий