Visual Studio 2012
Привет всем.
Вчера вечером решил не добивать последний две недели из 90-дневного тестового режима и приобрести этот шедевр для создания программного обеспечения. О VS2012 не писал только ленивый, чиркну и я пару строчек о своих впечатлениях.
IDE
После года программирования в VS2010 на C#, поддержка C++ в 2010 студии начала наводить некоторое уныние. К хорошему быстро привыкаешь. В 2012 студии, в плане плюсов, стало гораздо лучше. Позабавили расширенные возможности в плане раскраски исходного текста. Чем я незамедлительно воспользовался, раскрасив в рыжий цвет аргументы функций 🙂

Общее положительное впечатление немного портит обнаруженный баг в редакторе кода. Будем надеяться, что в Update #2 это исправят.
Компилятор C++
Хотя в студии я «живу» больше пяти лет, все равно никак не могу привыкнуть, что её компилятор C++ работает стабильно и полученные бинарники содержат только мои баги. Меня может понять только тот, кто достаточно долго и более чем плотно использовал компиляторы Borland и его потомков. Линейка BC5.x, BCB1-BCB3 прошлись по моей хрупкой натуре кованными дырявыми сапогами и способствовали появлению более чем циничного отношения к программированию как таковому.
Если сравнивать компилятор из VS2012 с компилятором из VS2010 на примере сборки (из командной строки) релизной 64-битной DLL IBProvider-a с полной оптимизацией кода, то получаются такие цифры:
Компилятор | Компиляция | Линковка | Размер бинарника |
VS2010 | 90 сек | 90 сек | 6 235 648 байт |
VS2012 | 150 сек | 70 сек | 5 963 264 байт |
Судя по моим записям, исходные тексты провайдера выдержали перекомпиляцию без каких либо дополнительных изменений. Что не может не радовать. При переходе на VS2010, некоторые вещи пришлось доработать.
Анализатор кода.
Это, пожалуй главный элемент новой студии, который полностью окупает затраты на её приобретение уже в первые дни часы эксплуатации. Я был реально впечатлен работой статического анализатора кода. И теперь страшно думать о том, что существуют отдельные продукты связанные с этой темой.
Общее число проблем, которые обнаружил анализатор, было в районе 250 штук. Для моего объема кода — это не так и много. Из них две сотни — однотипные, связанные с моим детским увлечением писать «оптимизированный» код вида:
if(HRESULT const hr=<вызов>) { assert(FAILED(hr)); //... обработка ошибок }//if
Я, вообщем-то, понимал, что так писать не стоит. Но, в глубине души радовался — «вот какой я молодец, пишу клевую проверку для S_OK и FAILED-кодов». Получив «по морде» от анализатора, я привел такие проверки к нормальному виду:
HRESULT const hr=<вызов>; if(FAILED(hr)) { //... обработка ошибок }//if assert(hr==S_OK);
После этого число предупреждений резко уменьшилось и я вдумчиво их проанализировал. Среди всего прочего, этот черт нашел:
- ошибки в логических выражениях
- ошибку в работе с массивами (потенциально возможный доступ к следующему за последним элементом)
Во всех случаях, проблемы могли привести к AV. А связанный код был написан так давно, что анализатор (по ходу) был первым кто в него заглянул за последние пять лет.
Так что, самоуверенности он немного уменьшил. Хотя, опять же. Если сравнивать с тем, что я вижу при компиляции того же Firebird (там даже анализатором сканировать не надо — предупреждений компилятора вполне достаточно) — IBProvider находится просто в отличной форме. И, наверное, любая другая форма для него неприемлема.
Единственное неудобство — очень медленная работа анализатора. Он работает в один поток, и компилирует по одному файлу за раз. Сканирование всего исходного кода провайдера занимает около часа на i7-2670. Хочется надеяться, что в будущем его работу распараллелят.
Вывод
За смешные деньги (а через Microsoft Store — еще дешевле) можно сходу радикально улучшить процесс программирования на C++. И если с 2010 студией уже было классно, то с VS2012 вполне можно получить допаминовый резонанс 🙂
dimitr on 18 марта, 2013
Меня после VC8 тормозная компиляция в VC10 бесит, а этот еще медленнее? Куда катится мир…