Дмитpий Hecтepук

Блог о программировании — C#, F#, C++, архитектура, и многое другое

Небольшой обзор Visual Studio 11 (2012) Beta

27 комментариев

Должен признаться, что я пишу на 11й студии (она же VS2012) уже достаточно давно, и делаю эту в силу того, что новая студия имеет неплохую обратную совместимость с 2010й: если открыть обычное решение, то 11я студия оставит .NET проекты в покое, а С++ проекты предложить переконвертировать. От этой конверсии можно отказаться, и все равно все будет работать и компилироваться. Единственное, возможно придется менять использование констант вроде MSC_VER или как там, для того чтобы библиотеки компилировались. Но все будет работать.

Этот пост – мои заметки о том, что новое в 2011й студии и как мне в ней работается.

Поддержка WinRT – она есть, но не здесь

Как и все, я немного ошеломлен тем, что даже в Бету Студии не попала поддержка WinRT. Microsoft в очередной раз сбила всех с толку, выпустив Visual Studio Express с поддержкой Metro-Style Apps и «полноценную» студию без такой поддержки. Наверняка на это решение повлияли сложные маркетинговые механизмы, но как бы там ни было, поддержки WinRT в основной студии пока нет.

Как вы понимаете поддержка WinRT – это основноая «фича» новой студии. Но добавлять ее в обзор VS11 пока что неуместно — пусть она сначала тут появится.

Upd: как подсказал в комментариях Владимир Юнев, поддержка WinRT/Metro-Style Apps присутствует в VS11, но только в том случае, если вы ставите ее на Windows 8. :)

Black & White

Новая студия, для тех кто еще не видел скриншоты – черно-белая. А точнее монохромная – в ней скорее много оттенков серого, чем чисто черный и белый цвет:

В сети появилось очень много полемики насчет такого дизайнерского решения. Идея как бы понятна: берем «цветастую» студию и делаем из нее полностью нейтральный вариант. Я сам по себе фанат нейтральности: у меня нейтральный черно-белый офис, музыкальная система с самым нейтральным звучанием, а мой любимый цвет – белый. Но не смотря на это, работать с монохромной студией мне тяжело.

Тяжело вот почему: для меня все монохромные иконки размером 16×16px кажутся одинаковыми. Удалив цвет, потерялось целое «информационное измерение». Вот например раньше тип проекта (C#, F#, C++) имел свой уникальный цвет:

Проекты можно было различить по этому цвету, в голове возникала некая «условная классификация», да и при написании собственных программ тоже было понятно, какие иконки использовать. А что теперь? Почему, например, проект C# имеет на своей прямоугольной, абсолютно невзрачной иконке просто надпись C# в то время как проект С++ имеет на своей иконке – внимание – стрелки вверх-вниз? Вся логика подобного куда-то ушла, и с ней ушло удобство.

Solution Explorer

Единственное новшество solution explorer’а, которое я вижу – это возможность раскрывать структуру файлов чтобы смотреть что у них внутри. Работает это даже для С++ проектов:

Что ж, похвально, только польза от этого сомнительная: обычно требуется ответить не на вопрос «что в этом файле?» а на вопрос «в каком файле лежит тип Х?», и вот тут Студия бессильна.

Если взять и кликнуть правой кнопкой на каком-то из представленных выше типов (например Greeks), Студия покажет нам вот такое меню:

Большинство этих пунктов приводят к замене всего контента Solution Explorer’а, и тут-то становится ясно, что Solution Explorer – это некий page navigator (в терминоголии WPF), который может как набор страниц HTML показывать нам различные виды в зависимости от того где ма находимся.

Говоря о примере выше, Scope to This делает текущий элемент корнем дерева, Base Types и Derived Types ищет родителей и наследников этого типа, а вот Is Used By реализует полезную функцию нахождения всех мест где тип используется:

Add References

Add References – это главный #fail Студии всех версий включая 2010. Я с пристрастием смотрел на то, как нам обещали починить адски медленную загрузку ссылок в 2010й студии, но счастья не пришло: сделали еще хуже. В 11й студии правда все вроде получше: у меня окно при первом запуске открывалось 2 секунды, на последующих – моментально. Само по себе окошко теперь выглядит вот так:

В сборки «фреймворка» попали различные сборки System.* и Microsoft.*, в то время как все сторонние сборки попали в «extensions». Что порадовало так это скорость поиска: я написал «WPF» и получил список всех нужных сборок практически моментально. Вообщем, мне кажется что инцедент изчерпан, хотя признаюсь что нынче я использую NuGet намного чаще чем Add Reference. Он кстати, судя по всему, поставляется с 11й студией, и это хорошо, т.к. я до сих пор периодически встречаю людей, которые не знают что это такое.

Quick Launch или «быстрый запуск всего и вся»

Те из вас кто используют Mac’и уже знакомы с этой функцией: вы вбиваете в текстовое поле ориентировочное название того, что вы хотите сделать, и программа показывает вам все возможные варианты действий. Так вот: теперь подобное есть и в Студии. Называется эта функция Quick Launch (быстрый запуск), и находится она в правой верхней части основного приложения:

Я считаю что идея в принципе хорошая, хотя это и является как бы намеком на то, что в Студии слишком много всяких команд которые ни один человек в принципе запомнить не может. Что хорошо в списке выше, так это то что показаны шорткаты (например, для Run All Tests) — это позволить пользователю запомнить его и в следующий раз уже использовать шорткат вместо Quick Launch для запуска всех тестов.

IntelliSense

Автодополнение кода в 11 студии улучшено и даже умудряется работать в С++ с приемлимой скоростью, что особенно радует. Наконец-то дополнение сопоставляет не только начало слова, но идет все символы которые это слово содержат:

Конечно, до полноценной реализации fuzzy string matching Студия все равно не дотягивает, но хоть какой-то прогресс виден. Да, и список дополнения выпадает теперь автоматически, после первого же напечатанного символа.

Графика, GPGPU, C++ AMP

Теперь мы пришли к одной из «основных» фич студии, а именно поддержки отладки программ, работающих на GPU. Ситуация на данный момент такая: Microsoft работает вместе с AMD/ATI и NVIDIA для того чтобы реализовать в поставке 2012й студии библиотеку C++ AMP (Accelerated Massive Parallelism). Эта библиотека чем-то похожа на Thrust — ее цель дать пользователям интерфейс, сравнимый с TBB или PPL, но при этом сделать так, чтобы вычисления можно было производить не на CPU а на GPU.

Для тех кто не в курсе, напомню что на настоящий момент NVIDIA имеет намного более сильную позицию касаетельно вычислений на графических картах. Обусловлено это тем, что NVIDIA удосуживается поставлять качественный драйверы а также прекрасный CUDA SDK, в то время как ATI поставляет постоянно падающие драйверы и какую-то высокоуровневую несуразицу в форме OpenCL. Не удивительно, что на данный момент, большинсто библиотек и решений (Thrust, GPU.NET и так далее) поддерживают именно CUDA. Для ATI, C++ AMP – это наверное последний шанс вернуться в игру, т.к. иначе NVIDIA просто их раздавит.

К сожалению, и в этой бочке есть ложка дегтя: технология C++ AMP это некая спецификация, а реализация Microsoft использует Direct3D, что означает что шансы использовать эту технологию на не-Windows системах примерно равна нулю.

Заключение

На данный момент, помимо поддержки WinRT и C++ AMP, 11я студия не кажется мне чем-то особенным. Единственное что порадовало – это то что она работает чуть-чуть быстрее чем предыдущая, хотя она пока у меня «голая», а когда в ней будет масса плагинов – будет совсем другое дело. Тем не менее, на нетбуке она смотрится хорошо.

На данный момент мне уже ничего не препятствует в адоптации 11й студии за исключением одной вещи: наличия Intel Parallel Studio которая бы поддерживала VS11. Если вас интересует новая студия, советую скачать и начать использовать бету, т.к. «поломок» от беты, по крайней мере на моей системе, пока не наблюдается. И старая студия тоже, тьфу-тьфу, работает без проблем.

В целом же, мне остается только вздохнуть и заметить, что эра революций в нашей любимой IDE уже прошла. Это не значит что пора пересаживаться на Notepad, но мне кажется что сейчас самое время для какого-нибудь смелого игрока выступить с IDE которая нацелена целиком и полностью на разработку приложений для различных систем, а не на узконаправленную поддержку технологического стека Microsoft. По крайней мере, у меня такая мечта. Ведь если бы был редактор, который бы поддерживал, скажем, C# и C++ и функионал аналогичный ReSharper’у, уверен что процентов 60 разработчиков ежесекундно пересели бы на такую IDE.

P.S.: не упомянул MVC 4, но и не особо хотелось. Что, поддержка single-page apps, говорите? Хорошо, только зачем для этого MVC? Более того, зачем для этого IIS? Ни то ни другое не нужно для реализации парадигмы JS+REST.

P.P.S.: а вот еще одна ложка дегтя: Microsoft сделали так, чтобы было невозможно отлаживать на Windows 7, только на Windows 8 (WTF?!?) Хотя, судя по всему, это можно починить, но тот факт что это делается вручную через переименование DLLек… ну спасибо, Microsoft… серьезно, кто-то планирует использовать Windows 8 для разработки? А я-то думал это поделка чисто для Metro UI.

P3S.: примечательно так же, что попытка поставить DirectX SDK (June 2010) окончилась провалом, т.к. оказываается версия C++ слишком свежая. Детали проблемы тут.

Advertisements

Written by Dmitri

4 марта 2012 в 23:38

Опубликовано в Visual Studio

комментариев 27

Subscribe to comments with RSS.

  1. >> Как и все, я немного ошеломлен тем, что даже в Бету Студии не попала поддержка WinRT. Microsoft в очередной раз сбила всех с толку, выпустив Visual Studio Express с поддержкой Metro-Style Apps и «полноценную» студию без такой поддержки.

    Поддержка WinRT и разработка Metro Apps в VS 11 Beta Ultimate есть, если ее ставить на Windows 8 CP.

    Vladimir Yunev

    5 марта 2012 at 12:08

  2. > выступить с IDE которая нацелена целиком и полностью на разработку приложений для различных систем…

    Не надо утопий. Даже полноценная поддержка одного языка — целый гемор, тем более, что на 5 языках сразу никто не пишет. Пусть будет отдельно «Visual C#», но настолько крутой, насколько вообще возможно.

    Vincent

    5 марта 2012 at 12:52

    • Ну я не против, только я бы вместо C# взял С++, но это уже личное. Факт в том, что уже есть более резвые редакторы для C# &mash; SharpDevelop, например. Проблема в том, что помимо просто поддержки языка нужно еще получить все дополнительные удобства работы с ним — инспекции, рефакторинги, и так далее.

      Dmitri

      5 марта 2012 at 19:09

  3. А вот вам не то, что ложка дёгтя — целое ведро Г-НА: Windows XP не поддерживается!!!
    Казалось бы, что такого АРХИВАЖНОГО в Вынь7, что непременно нужно было задействовать в студии? Судя по VS2010 — ничего, однако юзеров опять за хер тянут под долбаную семёрку :(((

    Vincent

    5 марта 2012 at 12:55

    • Согласен. Как видите, все делается для того, чтобы вы переходили на Win 7, а лучше на Win 8. Но лично я ничего не имею против 7ки — по крайней мере, ее драйверная модель позволяет на одной машине иметь драйверы (и работающие девайсы) от ATI и NVIDIA, что бывает крайне полезно.

      Dmitri

      5 марта 2012 at 12:59

  4. Интеллисенс как был «средненький», так и остался: ищем функцию без параметров, вставляем по подсказке, в редакторе — только название функции, скобки и точку-с-запятой ПИШИ САМ! Вот дебилы!….

    Vincent

    5 марта 2012 at 12:57

    • Ну это уже спорно. А что если у ф-и есть параметры? (По-секрету, сами-знаете-где есть механизм «умного закрытия», который закроет любой количество открытых скобок и точку с запятой поставит.)

      Dmitri

      5 марта 2012 at 13:02

  5. кстати, не хотите, для повышения всеобщей образованности, рассказать про NuGet?

    july15

    5 марта 2012 at 17:11

    • А что, собственно, рассказывать? NuGet’ом нужно просто пользоваться. Никаких хитростей в этом нет.

      Dmitri

      5 марта 2012 at 18:56

  6. как я понимаю,
    еще есть поддержка subversion и nunit из коробки

    кстати, у меня студия более синеватая чем чероно-белая
    и особенно выделяются цветные окошки решарпера :)

    Igor

    5 марта 2012 at 17:17

    • Конечная расцветка Решарпера, как вы понимаете, будет соответствовать расцветке Visual Studio.

      Dmitri

      5 марта 2012 at 19:07

  7. вы будите смеяться, но после установки VS2011 (2012) у меня перестали компилироваться соседние проекты: какие то проблемы с ресурсами и с++ проектами.
    я их даже не открывал новой студией.
    так что будет чем заняться долгими зимними вечерами

    Igor

    5 марта 2012 at 17:28

    • Странно. У меня все ОК, хотя в pre-Beta версиях тоже были какие-то проблемы. Вообще С++ это зыбкий песок, одно неправильное движение и весь проект накрывается медным тазом. Особенно если использовать Intel C++.

      Dmitri

      5 марта 2012 at 18:55

  8. >> Тяжело вот почему: для меня все монохромные иконки размером 16×16px кажутся одинаковыми. Удалив цвет, потерялось целое «информационное измерение».

    Согласен на все 100.
    Хотя может это только первое впечатление. Риббон тоже не всем сразу понравился.

    >> Почему, например, проект C# имеет на своей прямоугольной, абсолютно невзрачной иконке просто надпись C# в то время как проект С++ имеет на своей иконке – внимание – стрелки вверх-вниз?

    Вы будете смеяться, но я не вижу там никаких стрелок, а вижу два плюса.
    Так что, логика все-таки где-то остается :)

    Oleg Shuruev

    5 марта 2012 at 23:30

    • У меня стрелки вверх-вних скорее всего из-за того, что проект находится как бы в «compatibility mode».

      Dmitri

      6 марта 2012 at 1:28

      • Мне тоже сначала показалось на вашем скрине, что стрелки. Потом пригляделся поближе — действительно плюсы. Только размытые.

        Alexander Shatunow

        6 марта 2012 at 6:44

        • Черт возьми, действительно, размытые плюсы! Вот вам и юзабельность!

          Dmitri

          6 марта 2012 at 11:22

  9. «инцедент изчерпан» Дмитрий, это уже неудобно как-то…. :)
    «инцидент исчерпан».

    Подсказка с решарпером мимо: решарпер делает слишком много и слишком медленно. Сношу его в который раз и желание его ставить снова — возле нуля.

    Vincent

    17 апреля 2012 at 15:48

    • Dmitri

      17 апреля 2012 at 19:22

      • Ну, чтобы совсем уж сгореть со стыда:
        «…уверен что процентов 60 разработчиков ежесекундно пересели бы…»
        Имелось ввиду, видимо, это: «уверен, что процентов 60 разработчиков сиюсекундно пересели бы»

        И ещё про НуГет: видел, один раз юзал, НЕ НРАВИТСЯ. Предпочитаю сам контролировать, что и где скачивается и когда обновляется. Студия — неахти какая многоплагинная система, чтобы всовывать в неё аж целый менеджер пакетов! Смешно сказать, я вообще кроме решарпера ничего не держу (да и тот сношу после недели мучений).

        Vincent

        26 августа 2012 at 21:18

  10. Оригинальный комментарий! Удалять не буду, пусть будет :)

    Dmitri

    18 мая 2012 at 16:52

  11. Сам ты идиот!
    А я бы всё таки удалил комментарий.

    Andrew.NET

    23 мая 2012 at 20:16

  12. Лмитрий! Случайно наткнулся на Вашу статью. У вас подсказчик работает, как Вы пишете, а у меня никак. Я должен сам набирать все. Вот в 2005-й все было ОК, а тут ничего. Может, я что-то не то делаю?

    Razvan

    5 июня 2012 at 23:46

    • Тут сложно подсказать, наверное просто стоит дождаться ритейл версии Студии.

      Dmitri

      13 июня 2012 at 18:12


Оставить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: