Поступь прогресса
О, прогресс-бары! Те самые полосочки из винды 3.1, которые в 95-й «мастдайке» стали жутко гламурными квадратиками.
После начальных экспериментов, чуть-чуть подвигав мозгом и поняв, что любая итерация алгоритма занимает значительно меньше времени, чем просчёт и отрисовка «градусника», я решил отображать именно ход процесса, а не ход просчёта прогресс-бара.
С тех пор и далее решалось это именно так. Винда — вроде как многопоточная среда. Дык, пусть полезный вычислительный процесс работает с максимальным использованием ресурсов, а рядышком такой, как все настоящие программеры, жутко ленивый, но лицом к юзверю, будет изредка у главного процесса спрашивать: «Ну как ты там?»
Чуть позже додумался делать таймаут — иногда полезный процесс заканчивался значительно быстрее, чем прогресс-бар впервые отрисовывался, и чтобы не дожидаться последнего процесса, его просто запускал с некоторой задержкой. Именно тогда, можно сказать, на практике я ощутил рост вычислительной мощи железа: что раньше показывало прогресс-бар, то на более свежих машинках сразу же рапортовало: «Нажмите ОК».
Впервые этот способ я изобрел в восьмидесятых еще на ЕС-17хх, будучи школьником и только начиная программировать. Хоть и был метод затратен в плане объема кода (важный тогда параметр — оперативки на борту монстра, занимающего помещение в две моих нынешних квартиры, было 16 килобайт), зато мэтрам программирования того времени была продемонстрирована мощь поступи молодого советского поколения, красота на экране, как голливудских фильмах, и изумительная скорость.
Каково же было мое изумление, когда в руки мне попалась книжка Кормена (1979 год), где он описывает, что этот способ он подглядел у военных программистов в техдокументации за 1948-й! Воистину, все продуктивное — не просто хорошо забытое старое, а именно то, что мы забыли взять у предков. Ну, или нас почему-то забыли об этом предупредить.