Visual Studio 2010: новый вид и возможности

20 август, 2009 - 11:58Вячеслав Колдовский

У Microsoft есть очень хорошая традиция – выпускать очередную версию Visual Studio (VS) одновременно с каждым крупным обновлением платформы. Так и VS 2010 ожидается нынешней осенью, как раз к релизу Windows 7/Server 2008 R2. А текущая бета достаточно стабильна для того, чтобы с нею познакомиться.

Visual Studio 2010 новый вид и возможности
Окно создания нового проекта обогатилось полезными средствами фильтрации, что неудивительно, учитывая огромное число шаблонов и SDK, которые могут быть установлены в Visual Studio

Visual Studio для компании Microsoft является продуктом «стратегического назначения». Выпустив более десяти лет назад первую версию по-настоящему интегрированной среды разработки, включающей все необходимое для создания приложений с помощью различных языков программирования (тогда, в 1997 г. поддерживались VB, VC++, VJ++ и FoxPro), редмондская корпорация определила VS не только как универсальный инструмент построения решений для платформы Windows, но и как мощное маркетинговое средство. Действительно, огромная клиентская база быстро делает массовыми буквально все технологии, попадающие в Visual Studio. К примеру, успех ASP.NET в значительной мере обусловлен появлением в VS, благодаря чему «обычные» программисты смогли легко приобщиться к веб-разработке. Учитывая особую роль, к VS применяются и соответствующие методы продвижения: достаточно демократичные цены, наличие вполне функциональных бесплатных редакций Express и множество программ, позволяющих отдельным категориям пользователей получить профессиональную среду разработки бесплатно или со значительной скидкой. Потому и выход каждой новой версии Visual Studio – знаковое событие для всей ИТ-индустрии.

VS 2010 в первую очередь позиционируется как «нативная» среда разработки для ожидаемых нынешней осенью Windows 7 и Windows Server 2008 R2. Одновременно планируется и выход .NET Framework 4.0 – своеобразной метаплатформы, развертывание которой будет возможно на всех актуальных клиентских и серверных версиях Windows. Также VS 2010 должна стать средой разработки и для Silverlight 3, релиз которой состоялся в первой половине июля – для ее поддержки необходимо загрузить и установить соответствующий SDK и расширение для IDE. Еще среди поддерживаемых платформ нельзя не упомянуть Microsoft Office 2010, Windows Mobile 6.5, а также «облачную» Windows Azure Services Platform. А полный список очень длинен, поскольку традиционные .NET Framework 2.0–3.5, SQL Server 2000–2008, Microsoft Offi-ce 2007, SharePoint 2007, Win32/MFC (на C++) и прочие дополнительно расширяются многочисленными SDK и специальными шаблонами. Таким образом, каждая следующая версия Visual Studio становится все более функциональной и универсальной, а ведь известно, что стремительное экстенсивное развитие программных продуктов нередко превращает их в настоящих «монстров». Впрочем, создатели VS приняли ряд упреждающих мер, в частности, перекроили как механизм расширений, так и пользовательский интерфейс, практически не менявшийся с 2002 г.

Интерфейс и возможности IDE

Visual Studio 2010 новый вид и возможности
Интерфейс максимально соответствует прежним версиям, но в нем появилось множество мелких усовершенствований, значительно повышающих удобство использования

Хотя и визуально, и функционально новый интерфейс максимально напоминает прежний, он сильно отличается технологически – теперь для прорисовки рабочей области вместо Windows Forms используется WPF. Это не только добавило внешнего лоска, но и позволило реализовать множество усовершенствований, направленных на повышение производительности работы, в том числе и с учетом разросшихся возможностей продукта. К примеру, в окне выбора типа проекта, а также в инспекторе свойств появились поля, отфильтровывающие неподходящие элементы по мере ввода нужного названия; редактор теперь позволяет масштабировать текст колесом прокрутки мыши при нажатой клавише Ctrl так же, как это делается в браузере; улучшилась поддержка нескольких мониторов; при разработке с применением модульных тестов будет полезна новая функция, отображающая в реальном времени тесты, на результат которых могут повлиять текущие изменения исходного кода. Был значительно переработан и визуальный редактор WPF/Silverlight – теперь его возможности вплотную приблизились к Expression Blend, что даже дает основания исключить последний из набора инструментов, если для визуальной разработки на базе XAML применяется VS 2010.

Тем не менее, как мы уже упоминали, интерфейс покажется совершенно привычным опытным пользователям – сохранены не только места расположения основных элементов, но и их значки (во всяком случае, в текущей бете). Так что в эстетическом и функциональном плане новации можно лишь приветствовать. А вот с быстродействием не исключены проблемы. Традиционно IDE Visual Studio вполне лояльно относилась к скромным системным ресурсам – по крайней мере, для комфортного ее использования не был нужен суперсовременный компьютер. Нынешний релиз, вероятно, станет переломным в этом отношении: новая IDE потребляет заметно больше процессорных ресурсов и ОЗУ, поэтому весьма желателен достаточно производительный ПК, оснащенный к тому же современной видеокартой. Для профессионального разработчика это, скорее всего, не будет иметь сколь-нибудь серьезного значения, а вот типичный студент, изучающий программирование на своем нетбуке, может столкнуться с раздражающей медлительностью среды разработки. Впрочем, у создателей Visual Studio еще есть время улучшить ситуацию до выхода финальной версии.

Среди наиболее интересных новинок IDE следует отметить Architecture Explorer, позволяющий анализировать сложный программный код в графической форме. Отображаются классы и их члены, взаимосвязи между ними, существуют режимы графического представления информации с различной степенью детализации, от каждого элемента можно непосредственно перейти к исходному коду. Особую ценность Architecture Explorer представляет при изучении сторонних программ и коллективной работе над объемными проектами. Улучшилась также поддержка языка UML, теперь VS изначально позволяет создавать пять типов диаграмм: классов, прецедентов, последовательностей, деятельности и компонентов. Кроме того, разработчики обещают, что вскоре после выхода релиза VS 2010 станут доступны все типы UML-диаграмм – в виде самостоятельных дополнений или в пакете обновлений.

Отдельного внимания заслуживает усовершенствованный отладчик, который и ранее был предметом гордости Visual Studio. Теперь он дополнен функцией, получившей название «историческая отладка» (Historical Debugging), способной вызвать настоящую зависть у пользователей других IDE. Традиционно для точного выявления источника ошибки применяются точки останова и пошаговое исполнение кода до тех пор, пока не возникнет исключение. Программисты со стажем не понаслышке знакомы с этим утомительным занятием – нередко пошаговая прокрутка и проверка текущего значения переменных занимает гораздо больше времени, чем собственно написание кода. Функция исторической отладки позволит радикально упростить данный процесс – при ее активации все действия программы, вплоть до вызова методов и обработки событий, отслеживаются и сохраняются. Таким образом, во многих случаях для поиска ошибки вообще нет необходимости использовать точки останова, достаточно прервать работу программы с помощью отладчика и в специальном окне просмотреть историю исполнения (за исключением значений локальных переменных, сохранение которых не предусмотрено из соображений производительности). Затем состояние программы можно пошагово пролистывать вперед-назад («прошлое» помечается специальным значком – стрелкой с часами) или сразу переходить к любой нужной точке. Поскольку активация этой функции для сохранения всей истории работы программы может вызвать значительную дополнительную нагрузку на систему, предусмотрены возможность ограничения максимального объема протоколов и гибкая настройка отслеживаемых методов и событий.

Новый язык F#

Visual Studio 2010 новый вид и возможности
Architecture Explorer – чрезвычайно удобный инструмент, позволяющий в графической форме разобраться с внутренним устройством исходного кода

Microsoft не часто балует пользователей Visual Studio новыми языками программирования, входящими в стандартный комплект поставки: тройка C#/VB/C++ оставалась неизменной с 2002 г. И хотя расширить среду разработки можно множеством различных языков, установив их в качестве дополнений, даже от самой Microsoft (к примеру, IronPython или IronRuby), все же это больше удел энтузиастов, а основная масса разработчиков довольствуется тем что есть. Поэтому появление F# в составе VS 2010 весьма знаменательно, и важен здесь не столько сам факт, сколько то, что этот язык представляет совершенно иную парадигму – функциональное программирование, вплоть до настоящего времени не особо популярное в рядах среднестатистических программистов.

Самое примечательное, что впервые функциональный язык максимально адаптирован к использованию в .NET Framework, соответственно, он не отрицает и императивного подхода. По той же причине F# не особо почитаем пуристами функционального программирования, хотя это ничуть не умаляет его достоинств как полноценного функционального языка, позволяющего воспользоваться преимуществами многообещающей парадигмы.

В течение продолжительного времени F# существовал в качестве исследовательского проекта, основная задача которого – обогатить императивный язык C# возможностями, традиционно доступными лишь функциональным языкам. Множеством нововведений C# 3.0 из VS 2008 обязан именно ему. Сам по себе F# не создан с чистого листа в Microsoft, в его основу положен достаточно популярный (если так вообще можно говорить о функциональных языках) OCaml, который, в свою очередь, уходит корнями к одному из первых типизированных функциональных языков ML. Несмотря на то что синтаксически F# и OCaml довольно близки, они не эквивалентны: грубо говоря, первый представляет собой подмножество второго, дополненное доступом к средствам .NET Framework. Однако некоторые программы на OCaml могут быть практически без модификаций скомпилированы F#, обратное также справедливо, разумеется, при отсутствии обращений к классам .NET Framework.

В целом, появление F# в составе Visual Studio свидетельствует о том, что разработчики из Microsoft возлагают большие надежды на функциональное программирование, что особенно актуально в эпоху многоядерных процессоров и непомерно возросшей сложности внутренней структуры исходного кода крупных проектов. Конечно, F# не позиционируется в качестве замены традиционным универсальным императивным языкам, в частности C#, и их развитие в направлении ассимиляции наиболее удачных идей декларативного программирования не прекратится. Скорее всего, F#, как и многие другие функциональные языки, займет свое место среди прочих, специализируясь на решении определенного класса задач так же, как, к примеру, SQL занял нишу инструментов для манипулирования реляционными данными. Можно предположить, что в ближайшем будущем владение хотя бы одним функциональным языком появится в числе профессиональных требований к типичному программисту, подобно тому как сегодня необходимо знание того же SQL.

.NET Framework 4.0

Visual Studio 2010 новый вид и возможности
Historical Debugger – своеобразная «машина времени», встроенная в отладчик

В четвертой версии .NET Framework появилось множество нововведений, отражающих наиболее современные течения в программировании и развитии аппаратной базы. В первую очередь это касается поддержки набирающих популярность динамических языков, реализованной посредством расширения среды исполнения CLR (Common Language Runtime) специальным набором сервисов, получивших название DLR (Dynamic Language Runtime). В то время как DLR прежде всего интересно разработчикам динамических языков, создающих или портирующих их в .NET Framework (следует отметить, что официально у Microsoft их два – IronRuby и IronPython, развивающиеся в виде открытых проектов на CodePlex.com), существующие языки со строгой типизацией также получили его поддержку. К примеру, в C# появился новый тип dynamic, переменные которого не проходят проверку типа во время компиляции, что может быть полезно при взаимодействии с динамическими и скриптовыми языками.

Следующее важное новшество .NET 4, отражающее дух времени – появление целой платформы для поддержки параллельных вычислений, именуемой PCP (Parallel Computing Platform). Безусловно, создавать «параллельные» приложения можно было и в предыдущих версиях .NET Framework, PCP же отличается подходом к их построению, призванным максимально облегчить жизнь разработчикам. Не секрет, что именно сложность распараллеливания задач и недостаточная приспособленность распространенных языков программирования к управлению потоками кода, исполняющимися параллельно, являются основными сдерживающими факторами, которые препятствуют эффективному использованию современным ПО возможностей многоядерных микропроцессоров. Поэтому PCP – долговременная инициатива Microsoft, состоящая в реализации отдельных компонентов, и вполне заслуживает особого рассмотрения. Если говорить коротко о наиболее интересных возможностях PCP, то следует выделить Task Parallel Library (TPL) и Parallel LINQ (PLINQ). TPL представляет собой набор классов и API для автоматического распараллеливания задач. В частности, TPL предлагает варианты реализации циклов, предусматривающих параллельное исполнение итераций (если их результаты не зависят друг от друга) при автоматическом масштабировании по числу ядер процессора. На практике (если речь идет о циклах) использование TPL сводится к тому, что там, где возможно, разработчик заменяет обычные конструкции циклами с применением TPL и получает существенный выигрыш в производительности без каких-либо дополнительных действий вроде самостоятельного создания пула потоков и т. п. Соответственно, PLINQ – это эволюция декларативного языка для работы с данными LINQ, доступного для C#/VB (ko-online.com.ua/36977). От обычного LINQ он отличается также возможностью автоматического распараллеливания запроса, если порядок возвращаемых данных или выполняемых операций не важен – достаточно просто указать в запросе, что его можно исполнять параллельно, все остальное возьмет на себя PLINQ.

Множеству усовершенствований подверглась и базовая библиотека классов BCL. В сопутствующей документации только заголовков разделов, посвященных новым функциям, около двух десятков. Не будем перечислять их полностью, отметим лишь некоторые, на наш взгляд, наиболее интересные. Поддержка длинной арифметики теперь становится стандартной функцией .NET Framework: появился класс BigInteger, а отдельные языки (F# в их числе) приобрели встроенную поддержку соответствующей структуры. Работа с изолированным хранилищем данных (Isolated Storage) для приложений с ограниченным доступом к файловой системе (относится в первую очередь к WPF-программам, исполняющимся в браузере, – XBAP, а также распространяемым по технологии ClickOnce) теперь полностью унифицирована с таковым для Silverlight-приложений. Улучшены инструменты ввода-вывода: запросы к файловой системе теперь возвращают коллекции вместо массивов, что увеличивает скорость работы в том случае, когда не требуется загружать весь список; статический тип File теперь содержит новые методы, позволяющие эффективно читать и записывать текстовые файлы с помощью LINQ, не создавая дополнительных структур данных; появилась поддержка стандартных для ОС Windows отображаемых в память (memory mapped) файлов, что ранее было возможно только посредством сторонних библиотек; улучшились алгоритмы компрессии из пространства имен System.IO.Compression, а также устранен существующий ранее лимит в 4 ГБ на максимальный размер сжимаемого потока данных. Кроме того, расширены механизмы мониторинга производительности и используемых ресурсов, усовершенствованы технологии управления и синхронизации потоков.

Заключение

Даже по столь краткому обзору несложно понять, что разработчики Visual Studio 2010 не сидели сложа руки. Конечно, в нем охвачены далеко не все интересные новшества, и не только из соображений разумного объема статьи, но и в силу того, что список изменений бета-версии еще не окончательно зафиксирован, а многие из них даже не документированы. В частности, за кадром остались нововведения, касающиеся улучшенной коллективной разработки в версии Team System – одной из ключевых областей, которой при создании VS 2010 уделялось особое внимание. Темы разработки для Windows Mobile мы также не касались, ведь соответствующий SDK пока даже не включен в состав VS 2010.

Одним словом, темпы развития Visual Studio можно поставить в пример другим компаниям, специализирующимся в этой же области. А отдельной похвалы, безусловно, заслуживает самое тесное взаимодействие Microsoft с клиентами и партнерами, в первую очередь через сообщество MSDN.com, которое, по словам Сомы Сомасегара (Soma Somasegar), руководителя подразделения средств разработки Microsoft, привлекает свыше 20 млн уникальных посетителей ежемесячно и обеспечивает квалифицированные ответы на большинство задаваемых на форумах вопросов. Таким вот образом и формируется экосистема из лояльных разработчиков и поставщиков решений, много лет являющаяся одним из важнейших факторов успеха платформ Microsoft.

Сайт автора: koldovsky.com