Основные проблемы программирования
Как известно, существует две проблемы программирования:
- Именование переменных
- Инвалидация кэшей
По поводу именования переменных мне нечего сказать, каждый начинал с того, что писал программу называл первыми попавшимися словами переменные и через месяц уже не мог понять, что в ней происходит.
В этом плане сильно доставляют Handler, Service, Factory, Process, Task в конце классов. Сразу понятно, что экземпляр этого класса делает.
Но с кэшами все гораздо интереснее. В моей практики они творили такие чудеса:
- показывали давно удаленные записи
- чаще не показывали недавно добавленные
- не давали закрывать баннер
- иногда открывали его через час снова и снова и снова
Но самое интересное, что в современных процессорах пары буферов и кэша достаточно для того, чтобы у пользователя создалось впечатление что операции присваивания переставлены местами:
Достаточно a = 1
положить в буффер записи в кэш, чтобы assert в многопоточной программе не выполнился.
Я вообще вру, такого безобразия нет, но простейшая реализация такое допускает.