Интересно, а в какой среде работают разработчики Microsoft? Linux?

Андрей Карпов
Статей: 375



Насчет Linux я конечно шучу. Тем не менее, меня интересует этот вопрос. Я понимаю, что системы, над которыми работают в Microsoft, большие и сложные. Я отлично представляю, как баг может быть обнаружен только через некоторое время пользователями. Но мне не понятно, как можно не замечать явных ляпов в инструментах, которыми сами разработчики должны пользоваться регулярно.

В начале, немного о классических ошибках. С ними всё понятно. Их легко не заметить разработчикам, так как они не являются конечными пользователями. Хорошим примером является ошибка в одной из версий Microsoft Visio. Кажется, это была версия 2010 года. Если вы начинали вводить текст в блок из Basic Flowchart на русском языке, то он вводился задом наперед. Это я понимаю. Кто-то напутал и решил, что в русском языке пишут справа налево. Русский и арабский – это одно и тоже, или очень похоже. Среди тестеров русских людей не нашлось, и ошибка ушла в release версию. Вот эту ситуацию я понимаю.

А вот то, что происходит в среде Visual Studio, не поддаётся логическому объяснению. Они совсем не пользуются этой средой? Я подозреваю, что для сборки они используют сложные билд-системы. Но неужели никто во всем Microsoft не использует саму Visual Studio для работы? Если использует, то мне не понятно, как можно не замечать явных промашек.

Притчей во языцех, является функция поиска в среде Visual Studio 2010 [1, 2, 3, ...]. Кто использовал Visual Studio 2010, тот думаю, сразу поймёт о чём я. Неужели никто из разработчиков Visual Studio сам не нажимал Ctrl-F в этой среде?

С выходом Windows 8 разработчикам подкинули очередной глюкодром. На каких программах он будет проявляться, я не знаю. Я могу рассказать, как это сказывается на PVS-Studio. У нас он проявляется на связке Windows Defender и компилятора Visual C++. Мой коллега написал техническую заметку про это. Однако я перескажу её суть более просто и эмоционально.

Итак, жила была в Windows система Windows Defender. В Windows 8 эта система стала представлять собой своего рода бесплатный антивирус. Всё замечательно. Однако теперь PVS-Studio стал работать в несколько раз медленнее.

Какая связь? Связь тонкая и неочевидная. Анализатор PVS-Studio запускает для препроцессирования компилятор Visual C++ (cl.exe). Так вот, теперь препроцессирование выполняется только на одном ядре, если включен Windows Defender. Чудеса и магия.

Читатель наверняка скажет: "Вы наверное процессы неправильно создаёте. Проверьте Affinity Mask.". Нет, с эти всё в порядке. Проблема в связке Windows Defender с Visual C++.

При этом где-то внутри Windows Defender есть механизм из пластилина и бумаги. Он помогает Visual Studio работать на первый взгляд правильно. При параллельной компиляции используются все ядра процессора. Однако стоит в настройках прописать ключики /P и /c, как всё ломается. Нажимаем F7 в Visual Studio и все процессы CL.EXE начинают запускаться на одном ядре. Забавно наблюдать, как на 8-ядерном процессоре все процессы ютятся на одном ядре, отъедая скромные 12%. Остальные 7 ядер в это время пьют чай.

Стоит отключить Windows Defender и всё начинает работаться нормально. Уверен, что от Windows Defender скоро пострадают и другие программы.

Вернемся к PVS-Studio. Ему необходимо запускать CL.EXE как раз для препроцессирования файлов. В результате всё это делается на одном ядре. Прискорбная ситуация. Причем явное задание Affinity Mask ничем не помогает. Windows Defender крепко держит систему в своих руках.

И вот тут у меня вновь возникает вопрос! А что, в Microsoft программисты работают с отключенным Windows Defender? Неужели никто нигде ни разу не заметил странностей? Или никто не использует Visual Studio?

С одной стороны всё это кажется мелочами и обыкновенными суровыми буднями программистов. Мы много чего уже повидали странного в сложных системах. Но всё равно ситуация меня расстраивает. Как устранить замедление, не отключая Windows Defender не понятно. Интернет пока молчит.

Первопричина всего это в том, что при разработке используется не та среда, которая предлагается пользователям. И ещё вопрос. Если, например, внутри Microsoft действительно отключают Windows Defender, то нужна ли такая полезная система нам?

Обращение к разработчикам. Не только Microsoft, а вообще всем. Используйте приложения, которые вы разрабатываете. Иначе сразу чувствуется, что вы не доверяете своей собственной системе. Это вылезает из разных щелей. И это очень негативно сказывается на отношении к продукту.



Найдите ошибки в своем C, C++, C# и Java коде

Предлагаем попробовать проверить код вашего проекта с помощью анализатора кода PVS-Studio. Одна найденная в нём ошибка скажет вам о пользе методологии статического анализа кода больше, чем десяток статей.

goto PVS-Studio;

Андрей Карпов
Статей: 375


Найденные ошибки

Проверено проектов
364
Собрано ошибок
13 504

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;