Здравствуйте, Александр!

> Вот и выросло поколение, которое не пользуется почтовыми клиентами.

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

> Иногда логика продвижения, обновляющая часть сильно переплетена с логикой 
> обработки текущей итерации. Иногда продвижение выполняется как побочный 
> эффект проверки.

Согласен.  Но см. ниже.

> Иногда продвижение требует, скажем, условного оператора. А сишный for в 
> качестве операции обновления требует только одно выражение. При этом, 
> желательно, довольно короткое (выражение в три строки в операторе for будет 
> выглядеть и читаться не самым лучшим образом)

Да.  Однако это говорит о потребности в более усовершенствованной
конструкции типа for, а вовсе не об адекватности while для решения
таких задач.

Какое-то время назад я исследовал использование циклов в программах
на C.  Подтвердилось предположение о значительном доминировании
циклов с хорошо различимыми частьями, даже когда while.  Т.е. и в
теле многих while можно было четко разглядеть обновляющую часть,
а инициализация висела вне цикла, хотя по смыслу несомненно
относилась к нему.

Кстати, повышать выразительность циклов в C и C++ можно за счет
макросов — тут и любое число локальных переменных, и развернутые
прологи/епилоги/обновления, и окончания непосредственно на
синтаксическом уровне тела цикла (чего break и continue не могут).
Через макросы можно и специализировать (упрощать) циклы.  Я все это
делал в качестве эксперимента и даже считаю, что стоит пользоваться,
когда нет причин, заставляющих к обратному.

Ответить