Здравствуйте, zelenprog, Вы писали:
Z>А если нету таймера? Если все выполняется в одном потоке?
Есть системное время, вычисляй разность с последней операции и если оно больше заданной дельты обновляй интерфейс взаимодействия с пользователем.
Вопрос здесь скорее во сколько тебе обходится показ прогресса и стоит ли выводить его весь с каждой операции или только часть с задержкой по дельте времени, например, 0.1 сек, чтобы показать, что он есть.
И в принципе я написал по этому поводу.
Почему программисты прошлого были умнее
Это типичная ловушка абстракций. GUI это самый обычный условно бесконечный цикл пока не будет выполнено условие выхода. И внутри него крутятся циклы обработки сообщений или называй как хочешь.
Фактически это машина состояний как в том же контроллере. То есть вся эта байда будет работать даже если программист не продвинулся дальше процедурного программирования с блоком, ветвлением и циклом.
Плюс получение системного времени или чего-то похожего учитывающего перевод часов. В общем смысл в простеньких алгоритмах уровня программистов аппаратчиков, см. статью выше.
А вот на третьем уровне абстракционистов нет понимания работы компьютера. На нём работают уже состоявшиеся в алгоритмах программисты, которые просто записывают их иначе.
Это как раз все эти шаблоны проектирования и прочее. Например, шаблон проектирования итератор внутри является самым обычным циклом относящимся к синтаксису языка программирования.
Все эти шаблоны это здорово и хорошо, но они не дают понимания алгоритмов, причём даже самых простых, а часто напротив превращают нечто сверх простое в сверх сложное.
Я писал ради опыта реализацию со временем сам, так и видел её на стековерфлоу. Если лень писать самому просто найди поиском готовое решение.
А про Мартина Роберта с его книгами Чистым Кодом, Чистым Кодером, Чистой Архитектурой и Чистым Agile, скажу так, сам он начинал с перфокарт. Статья же на хабре вторична и не имеет отношения к этому автору.
Между прочим UML это тоже попытка абстрагироваться, но уже от языков программирования. А в итоге получаем ещё один язык программирования с рамочками.
В общем сначала нужно учить алгоритмы и структуры данных, пусть даже это будет процедурное программирование, и лишь потом переводить работающий алгоритм в некую абстракцию по сути делающую тоже самое.
Четвёртому поколению пользователей ещё сложнее, так как они сидят на чужих готовых библиотеках алгоритмов в виде чёрных ящиков. И даже если код открыть за многоэтажными абстракциями сложно найти алгоритмы.
Кстати, интересная мысль вроде бы от Мартина Роберта, парадигмы всегда ограничивают возможности, а не добавляют их. Но если продолжить мысль, то став пользователем или пусть даже абстракционистом тоже ограничиваешь собственные возможности.