КОНФЕРЕНЦИИ

В конце апреля корпорация Microsoft (www.microsoft.com) провела в Подмосковье двухдневную конференцию "Microsoft Academic Days 2006", собравшую около 300 участников из ряда стран СНГ, Балтии и даже Финляндии. Главное внимание на этом мероприятии было уделено различным аспектам создания ПО.

Основным средством разработки по-прежнему остаются процедурные языки программирования, однако они постоянно совершенствуются. Большой интерес в этом плане представляет проект LInQ, направленный на развитие языков C# и VB. Одно из наиболее важных новшеств, которое будет реализовано в C# 3.0 и VB 9.0, - встраивание в эти языки средств доступа к информации из баз данных (DLInQ) и документов XML (XLInQ). Синтаксис запросов в таком случае почти такой же, как и при использовании обычного SQL, но сами запросы будут естественными конструкциями C# или VB, а не чем-то чужеродным, выполняемым с помощью библиотечных функций. Планируются и другие дополнения, при этом гарантируется полная обратная совместимость с уже существующим кодом.

Открытым является вопрос о дальнейшем совершенствовании наиболее широко используемого на сегодняшний день языка - C++. В отличие от C#, созданного специально для .NET, язык C++ никогда не был привязан к определенной платформе и поэтому был сразу же приспособлен для разработки ПО для .NET. Однако подобная многоплатформенность имеет и отрицательные черты. Так, помимо "родной" объектной модели C++ необходимо каким-либо образом поддерживать модели, характерные для используемой платформы, например технологию COM в ОС Windows или объектную модель .NET. Возникает закономерное желание по возможности объединить эти модели, максимально облегчив работу программиста.

Другая проблема - многопоточность. Пока многопроцессорные компьютеры встречались сравнительно редко, это было неактуально, но с выходом на массовый рынок многоядерных кристаллов потребности в создании многопоточного ПО резко возросли. В то же время C++, как и большинство других языков, не имеет встроенных средств для написания подобных приложений; использование же API операционной системы, даже "обернутого" с помощью библиотечных классов, не слишком удобно и чревато ошибками. Таким образом, имеется потребность расширить язык, чтобы отразить в нем новые направления в разработке ПО.

Вероятно, для многих участников конференции явилось новостью существование для платформы .NET языка сценариев F#. Его отличительная особенность - повышенная безопасность при выполнении операций над данными различных типов - как правило, скриптовые языки в этом вопросе более чем либеральны, что нередко служит причиной трудноуловимых ошибок. Подробнее об этом языке можно узнать по адресу: research.microsoft.com/fsharp/fsharp.aspx.

По-прежнему остается актуальным вопрос создания безопасного ПО. Microsoft предлагает разработчиком следовать методологии SDL (Security Development Lifecycle - дословно "жизненный цикл безопасной разработки"), призванной значительно сократить количество ошибок в новых приложениях и тем самым повысить их безопасность (подробнее об SDL можно прочитать по адресу: msdn. microsoft.com/security/default.aspx?pull=/library/en-us/dnsecure/html/sdl.asp). Однако немаловажная роль отводится и совершенствованию инструментальных средств. Так, в Visual Studio 2005 предусмотрен ряд возможностей для улучшенной защиты от переполнения буфера (точнее, этот механизм обеспечивает только обнаружение факта переполнения, да и то не во всех случаях), статического и динамического анализа кода, расширенной обработки исключений и т. д.; кроме того, подверглись чистке и библиотеки C/C++: теперь разработчик может заблокировать использование потенциально опасных функций, таких, как strcpy, memcpy и т. п. (Тут, правда, можно заметить, что для пущей безопасности стоило бы вообще отказаться от C++ в пользу Ады или, на худой конец, Паскаля: в этих языках в принципе нельзя совершить целый ряд ошибок, совершенно естественных для C/C++.) Наконец, очень важен и этап тестирования. Весьма часто программы тестируют на заведомо правильных данных, но забывают или ленятся тщательно проверять их на ошибочной информации, причем подаваемой самыми разнообразными путями: через API, предусмотренный отлаживаемой программой, через файлы, через сетевые порты и т. п. Для обозначения подобных проверок предусмотрен даже специальный англоязычный термин - fuzzing ("фаззинг"), и, как считают в Microsoft, опираясь на опыт уже обнаруженных уязвимостей, большая их часть могла бы быть найдена именно этим способом.

Правильная технология необходима не только для того, чтобы разрабатываемое ПО было безопасным; крупные проекты вообще невозможно успешно завершить без серьезнейшего внимания к организационно-техническим вопросам. В качестве решения участникам конференции была предложена "фабрика приложений". Упрощенная суть ее сводится к сборке ПО "под клиента" из готовых модулей, когда разрабатывать приходится только код, уникальный для каждого конкретного случая и который, будучи один раз создан, становится очередным модулем, доступным для использования в последующих проектах. Нельзя сказать, чтобы "фабрика" представляла собой нечто совершенно новое, однако правильная разработка ПО - не та тема, которую достаточно обсудить один раз и больше к ней не возвращаться, поэтому разговор об этом на конференции был вполне уместен.

Большой интерес вызвал доклад о перспективной файловой системе WinFS, есть надежда, что она появится в ОС Longhorn. На самом деле WinFS - нечто большее чем очередное хранилище файлов. Говоря упрощенно, это платформа, представляющая собой гибрид традиционной файловой системы, СУБД и поисковой машины и реализующая собственный API для работы со своими объектами (которыми, в частности, являются традиционные файлы). "Схематизированная" информация (объекты WinFS, в частности файлы, для которых существуют "схемы", описывающие их структуру, связь с другими объектами, способы обработки и т. п.), такая, как содержимое таблиц баз данных или документов XML, в WinFS будет доступна напрямую, без необходимости явного запуска соответствующего приложения. Это сулит ряд преимуществ; например, станет возможным найти средствами WinFS все упоминания о каком-либо клиенте независимо от того, где они встречаются: в базе данных CRM-системы, в текстах договоров и т. д. В то же время обычные, "несхематизированные" файлы не упраздняются: не всякую информацию нужно "схематизировать", а иногда это сделать и невозможно. Правда, остается вопрос, насколько хорошо эти интересные идеи будут работать на практике и какая для этого аппаратура потребуется.

Еще одна интересная тема - высокопроизводительные вычисления. Как известно, в настоящее время в этой области доминируют кластеры, работающие под управлением различных клонов Unix. Microsoft решила не оставаться в стороне и ответила созданием Computer Cluster Server (CCS), включающего специализированную версию Windows Server 2003, носящую название Cluster Edition, и Compute Cluster Pack. Решение CCS доступно для тестирования с ноября прошлого года, в настоящий момент актуальная версия - Community Preview Release #3.

Отдельные доклады были посвящены поисковым машинам и алгоритмам нахождения кратчайшего пути из одной точки в другую, применению языков логического и функционально-логического программирования на платформе .NET и даже советам относительно подачи "отличной заявки на грант".

Наконец, не могла остаться без внимания и академическая программа Microsoft, предлагаемая корпорацией для учебных заведений стран Восточной Европы. В соответствии с этой программой вузы получают право приобретения MSDN Academic Alliance (годовая подписка на справочные материалы и почти все ПО Microsoft, а также на методические материалы за 800 долл.) и Visual Studio 2005 Express. В распоряжении учебных заведений имеется библиотека учебных материалов (www.microsoft.com/Rus/Msdnaa/Curricula и www.msdnaa.net), а для их преподавателей проводятся бесплатные курсы повышения квалификации. Кроме того, в апреле 2004 г. в России стартовала программа Microsoft IT Academy, позволяющая учебным заведениям предлагать своим учащимся в качестве факультативов сертифицированные курсы Microsoft. Для студентов проводятся конференции и конкурсы, а некоторые получают возможность стажировки в Microsoft. Совместно с МГУ им. М. В. Ломоносова в марте 2006 г. был проведен конкурс грантов на разработку учебных курсов (всего принято 30 курсов из 154 предложенных, общая сумма грантов составила около 70 тыс. долл.).

Пожалуй, главным недостатком мероприятия стала его чрезмерная насыщенность. За полтора дня была прочитана дюжина докладов, и времени на проведение, например, "круглых столов" уже не осталось. Конечно, имелась возможность побеседовать в кулуарах, но подобные "митинги" в силу своей стихийности охватывают ограниченный круг участников. Что порадовало, так это отсутствие параллельных секций, благодаря чему не пришлось разрываться между несколькими интересными докладами. Вероятно, в будущем все-таки стоило бы предусмотреть отдельное "официальное" время для дискуссий, удлинив конференцию на день - от этого и без того интересное мероприятие только выиграет.

Версия для печати