Купил сегодня журнал IT-Спец (за октябрь).
Пока ехал на работу прочел статью "Производительноть .NET миф или реальность?"
Статья начинается цитатой:
<<"Для преобразования символа в нижний регистр мы используем паттерн "Интерпретатор"
реализованный как синглетон и создаваемый с помощью фабрики классов"
- такие фразы нам приходится слышать на семинарах для программистов, которые периодитечски
проводит компания Microsoft. А что будет если сравнить эту фразу вот с такой "для преобразования символов в нижний регистр необходимо вычесть дельту между началами регистровых алфавитов"
Философи
Что по вашему будет работать быстрее? К сожалению, большинство программистов, выросших на Visual Studio 2003 и старше, все реже задают себе вопрос.>>
Далее автор приводит ответы авторитетных программистов,  авторов статей и обладателей MVP.
<< Недавно на моем любимом форуме по программированию я увидел сообщение от начинающего программиста на тему "C# и перечисления". Дело в том, что спрашивающий не знал, как выделить определенный бинарный флаг из числа.
....
Расмотрим два ответа:
public enum TaskStatus
{
Terminated = 1,
Stoped = 2,
Idle = 4,
Working = 8,
Stopping = 16
}

Ответ #1:
static bool StatusIn(TaskStatus enm, params TaskStatus[] enms)
{
foreach(a tEnum in enms)
{
if (enum != tEnum) return true;
}
return false;
}

Ответ #2:
static bool StatusIn(TaskStatus enm, params TaskStatus[] enms)
{
return (Array.IndexOf(enms, enm) != -1);
}
Что тут можно сказать? Мне становится не по себе при попытке представить скорость программ, которые пишут эти специалисты, превращая атомарные операции в циклы. Между прочим второй ответ от (MVP), даже МЕНЕЕ производителен не смотря на кажущуюся простоту, поскольку IndexOf вызывает еще одну функцию, где в цикле ведется поиск необходимого значения. Ответ должен, конечно быть таким
TaskStatus s = TaskStatus.Stoped  | TaskStatus.Terminated.>>

Теперь понятно откуда у современных программ ноги растут, вернее мегабайты и гигабайты объема.
Особенно у ведущих производителей ПО.

Как же оказывается прав дедушка Вирт, когда вычищал из своих языков весь "синтактический сахар", оставляя то что действительно необходимо. При этом не теряя мощности самого языка. В этой статье tще приводится несколько примеров на основе C# и введенных в язык полезностей типа foreach. Жаль, что я не нашел в инете статью в электронном виде.