ИНСТРУМЕНТАРИЙ
В последние годы в свЯзи с бурным развитием сетевых технологий широкое распространение получили средства разработки, ориентированные на распределенные многоплатформенные приложения, в частности на технологии Java корпорации Sun (www.sun. com) и .NET фирмы Microsoft (www.microsoft.com). Соответственно и основное внимание оказалось сосредоточено на дальнейшем совершенствовании этих средств. В то же время потребность в традиционных инструментах, ориентированных на конкретные платформы исполнения в "родном коде", не исчезла. Данный обзор посвящен рассмотрению ситуации, сложившейся в области средств разработки ПО для пока доминирующей на настольных системах платформы Win32.
Microsoft: версии на все вкусы
Вполне логично, что на платформе Microsoft Windows самыми популярными являются средства разработки этой же компании. Последним сугубо Windows’овским средством разработки была Visual Studio 6. В дальнейшем корпорация сделала упор на платформу .NET, а заодно перешла на нумерацию версий по годам выпуска, однако возможности создания приложения для Win32 не уменьшились.
***
Особый интерес для осваивающих программирование на платформе Win32 представляют Visual Basic Express и Visual C++ Express, а также СУБД SQL Server Express.
***
На сегодняшний день, пожалуй, наиболее популярная версия - Visual Studio .NET 2003. Разработка приложений для платформы Win32 возможна на двух языках - Visual C++ и Visual Basic, платформа .NET помимо этого располагает еще двумя языками - Visual C# и Visual J#.
Visual Studio 2003 представлена в четырех редакциях: Professional, Academic, Enterprise Developer и Enterprise Architect, первая из них - базовая. Вариант Academic, как явствует из его названия, ориентирован на образовательные учреждения. От профессионального он отличается главным образом специальными средствами, облегчающими освоение Visual Studio, а также инструментарием для управления учебными курсами, создания и распространения проектов-заготовок и т. п.
Два последних варианта предназначены не для индивидуальных разработчиков, а для коллективов. Из полезных "продвинутых" инструментов в них поддерживаются, например, корпоративные шаблоны (enterprise templates) и средства контроля версий, позволяющие совместно работать над проектами, используя единую базу исходного кода и применяя единые методики и правила, принятые в этом коллективе.
Кроме того, редакция Enterprise Architect располагает дополнительными инструментами, необходимыми архитектору ПО для моделирования с использованием языка UML бизнес-процессов и поддерживающих их приложений и баз данных, а также для создания корпоративных шаблонов, специализированных файлов помощи и т. п. Созданные модели архитектор передает программистам, разрабатывающим на их основе код приложения; для этого обычно применяется вариант Enterprise Developer, поскольку дополнительные возможности Enterprise Architect кодировщикам не требуются.
Очередная версия, Visual Studio 2005, выход которой ожидается в ноябре (сейчас на сайте корпорации для загрузки доступен Release Candidate), также предлагается в редакциях, ориентированных на разные типы пользователей.
Начинающим программистам доступен набор средств, объединенных общим названием Express Edition. Следует признать, что нужда в "экспрессах" ощущалась уже давно: версии для профессионалов-одиночек, не говоря уже о корпоративных редакциях, перегружены многочисленными инструментами, обычно бесполезными для программиста-любителя или для студента, нередко затрудняющими освоение системы (хотя бы из-за перегруженности пользовательского интерфейса) и всегда потребляющими дополнительные ресурсы ПК. Особый интерес для осваивающих программирование на платформе Win32 представляют Visual Basic Express и Visual C++ Express, а также СУБД SQL Server Express.
Во всех остальных версиях основной упор Microsoft сделала на улучшение средств коллективной работы. Корпоративная редакция, носящая название Visual Studio 2005 Team System Edition, теперь предусматривает ролевую организацию процесса разработки ПО. Ее модель создания ПО выделяет четыре категории разработчиков: руководители проекта (project managers), архитекторы ПО (software architects), кодировщики (software developers) и тестеры (software testers). Ядром системы поддержки коллективной работы является Visual Studio Team Foundation Server, который предоставляет средства контроля версий, отслеживания и управления процессом разработки, автоматизации сборки приложений и генерации отчетов. Архитекторы, кодировщики и тестеры ПО получили в свое распоряжение специализированные инструменты: Visual Studio Team Edition for Software Architects, for Software Developers и for Software Testers. Эти инструменты тесно интегрированы с Team Foundation Server, что, как утверждает корпорация, позволяет специалистам работать в коллективе практически так же легко, как и в одиночку: почти всю заботу об объединении результатов коллективного творчества берет на себя Team Foundation Server.
В заключение следует отметить, что в Visual Studio 2005 весьма широко используются инструменты не только собственной разработки Microsoft, но и других компаний, прежде всего главного конкурента и одновременно партнера в области инструментальных средств - корпорации Borland Software (www.borland.com).
Borland: ставка на жизненный цикл
Выпустив Turbo Pascal, фирма Borland совершила настоящую революцию, впервые объединив в общую среду все традиционные средства для создания программ - редактор исходного кода, компилятор, компоновщик, систему помощи. Не изменила компания своему правилу предоставлять высокоэффективные инструменты и в дальнейшем, причем по большинству характеристик решения Borland как минимум не уступали их аналогам от Microsoft, хотя последняя имела преимущество, одновременно разрабатывая и ОС, для которой предназначались эти инструментальные средства.
На сегодняшний день решения для платформы Win32 можно создавать с помощью двух систем - Borland C++ Builder и Borland Delphi. Последней на данный момент версией первого из этих пакетов является Borland C++ BuilderX, предназначенный для написания приложений на языке C++ на платформах Win32, Linux и Solaris. Отличительная его черта - интеграция с различными компиляторами, системами управления версиями и другими инструментами различных производителей. Так, среди собственно компиляторов C++ поддерживаются "родной" Borland C++ for Windows, Microsoft Visual C++ 7.1, Sun Forte C++, Metrowerks C++, 32-разрядные компиляторы фирмы Intel и, наконец, GNU C++. Такой широкий выбор позволяет разработчикам использовать наиболее подходящие в каждой конкретной ситуации средства.
Borland Delphi - прямой наследник Turbo Pascal, основанный на языке Object Pascal (впрочем, последний часто называют тем же именем, что и саму среду разработки, - Delphi). Версия Borland Delphi 2005 дает возможность создавать приложения на Паскале для платформ Win32 и .NET, а также для .NET. По сравнению с предшествующими версиями в Delphi 2005 появилось много новых средств и функций, о чем PCWeek/RE уже писал (см. PC Week/RE, N 45/2004, с. 44).
***
Важнейшим стратегическим направлением развития средств разработки Borland стала реализация концепции управления жизненным циклом приложений.
***
Важнейшим стратегическим направлением развития средств разработки корпорации стала реализация концепции управления жизненным циклом приложений (ALM - Application Lifecycle Management). Borland выпустила целый ряд специализированных инструментов, в том числе CaliberRM для сбора и формализации требований к разрабатываемому ПО, Together для проектирования приложений, Optimizeit для оценки производительности приложений, StarTeam для управления изменениями, вносимыми в ПО. Все эти инструменты можно использовать как порознь, так и в тесной интеграции друг с другом; кроме того, они пригодны для совместного применения не только с Delphi и C++ Builder, но и со средствами разработки других фирм, в том числе Microsoft Visual Studio.
Intel: оптимизация производительности
В отличие от Microsoft и Borland, корпорация Intel (www.intel.com) не имеет собственной полнофункциональной среды разработки приложений, тем не менее обойти вниманием предлагаемые ею инструменты нельзя. Дело в том, что увеличение производительности компьютеров за счет роста тактовой частоты практически зашло в тупик, а широко рекламируемые, в том числе и фирмой Intel, многоядерные процессоры отнюдь не являются панацеей от всех бед*1.По-настоящему "жадное" на вычислительные ресурсы ПО, например мультимедийные приложения, математические пакеты, системы моделирования, игры и т. п., нуждается в глубокой оптимизации, и именно в этой области средства, предлагаемые Intel, поистине незаменимы.
_____
*1 Более того, ничего принципиально нового многоядерность не несет: ПК с многоядерным процессором - всего лишь многопроцессорная вычислительная машина, которые существовали и 40 лет назад...
***
С помощью Intel VTune можно буквально по машинным тактам проследить, как исполняется та или иная программа и где возникают задержки.
***
Intel предлагает тщательно оптимизированные математические библиотеки, средства распараллеливания вычислений (threading tools) и кластеризации (cluster tools). Однако наиболее важными являются, пожалуй, фирменный компилятор языка C++ и профилировщик Intel VTune Analyzer.
Есть известное эмпирическое правило, гласящее, что 90% времени исполнения программы потребляет 10% кода. Очевидно, что оптимизировать в первую очередь нужно именно эти 10%, однако сначала их необходимо обнаружить, а заодно и выяснить, почему они требуют так много времени. Штатные профилировщики, входящие в интегрированные системы разработки, не всегда позволяют определить источник проблем с точностью до строки исходного текста, часто ограничиваясь лишь профилированием на уровне функций в целом. И ни один из них не способен отслеживать выполнение отдельных машинных команд, в которые скомпилирован исходный текст программы, разрабатываемой на языке высокого уровня. VTune решает эти проблемы; с его помощью можно буквально по машинным тактам проследить, как исполняется та или иная программа и где возникают задержки.
Компилятор Intel C++ для платформы Win32 является не просто самым "оптимизирующим" из существующих, генерирующим более качественный код, чем, например, Microsoft Visual C++ или Borland C++ Builder. Он учитывает архитектурные особенности микропроцессоров фирмы Intel, а также обеспечивает обратную связь с результатами профилирования компилируемой программы в VTune, что еще более повышает качество кода. В то же время следует отметить, что по-настоящему качественная оптимизация программы невозможна без участия программиста (иногда внешне мелкие изменения в исходном тексте программы повышают скорость ее работы в тысячи раз безо всякой оптимизации со стороны компилятора), а код, сгенерированный с учетом особенностей конкретного процессора, часто оказывается малоэффективным при исполнении на процессорах других моделей даже одного производителя.
Попутно отметим, что основной конкурент фирмы Intel - корпорация AMD (www.amd.com) - не располагает собственным компилятором, однако предоставляет профилировщик CodeAnalyst, хотя и несколько уступающий по возможностям VTune, но вполне обеспечивающий тщательную профилировку и ручную оптимизацию программ.
Альтернативные решения
Конечно, вышеприведенным ПО средства разработки для Win32 не исчерпываются. Например, компания Sybase (www.sybase.com) в качестве средства моделирования приложений, баз данных и бизнес-процессов выпускает пакет Power Designer. Ранее она же предлагала компилятор Watcom C++, в настоящее время ставший проектом open source (www.openwatcom.com). Из некоммерческих интегрированных сред разработки можно выделить платформу Eclipse (www.eclipse.org), написанную на Java и благодаря этому способную функционировать практически под любой ОС. Среди поддерживаемых ею языков программирования имеется и С++ для платформы Win32. Корпорация IBM (www.ibm.com) предлагает основанную на Eclipse платформу разработки ПО Rational. Существуют и другие как коммерческие, так и открытые компиляторы с различных языков (C++, COBOL, Fortran, Pascal и т. д.). Тем не менее сфера их применения в крупных проектах очень ограничена.
Что лучше?
Однозначно ответить на этот вопрос нельзя: очень многое зависит от того, какого рода решения планируется разрабатывать. Но несколько самых важных факторов стоит отметить.
Во-первых, совершенно очевидно, что Microsoft Visual Studio наиболее оперативно и полно отражает все нововведения в ОС Windows; для этой среды разработки в первую очередь предназначены наборы фирмы Microsoft, такие, как DirectX SDK или Driver Development Kit (DDK). Поэтому нет ничего удивительного, что Visual Studio - самый распространенный инструментарий создания приложений под Windows.
Во-вторых, все большую роль приобретают средства моделирования, а также поддержка непрерывного жизненного цикла приложений - от сбора первичных требований к начинающемуся проекту до сопровождения готового решения в процессе промышленной эксплуатации, внесения дополнений и исправлений и выпуска новых версий. В этой сфере особенно стройной и продуманной выглядит концепция ALM фирмы Borland. Если данный фактор принципиален, весьма логичным выглядит использование полного набора инструментов этой компании. В то же время возможны альтернативные подходы, и в первую очередь совместное использование инструментария управления проектами от Borland и среды разработки Visual Studio - благо обе корпорации тесно сотрудничают в этой области (например, Borland еще в начале года представила систему моделирования Together 2005 for Visual Studio .NET).
Третий фактор - качество создаваемого кода. Как уже говорилось, здесь лидирует инструментарий фирмы Intel. В тех случаях, когда эффективность является критически важной, представляется целесообразной разработка чернового варианта приложения с помощью одной из интегрированных сред, а затем тщательная оптимизация с помощью инструментов Intel. Здесь, пожалуй, можно отдать предпочтение среде Borland C++ BuilderX, "штатным" образом поддерживающей различные компиляторы, в том числе и от Intel.
Не последнюю роль играет возможность применения единого инструментария в различных ОС. Потенциально здесь лидируют проекты open source, в частности платформа разработки Eclipse. Однако на практике все не так просто. Например, если предполагается разработка только под Win32 и .NET, наиболее очевидным решением представляется использование Microsoft Visual Studio (как вариант - Borland C++ Builder или Delphi); если второй платформой будет Linux, резонно рассмотреть инструментарий Borland.
Наконец, следует помнить о том, что в долгосрочном плане платформа Win32 перспектив не имеет. Конечно, все ведущие игроки предлагают инструментальные средства для разработки 64-разрядных приложений, но очень многое зависит от того, сумеет ли Windows 64 сохранить позиции, занимаемые ныне 32-разрядными версиями этой ОС. Если нет, то узкоспециализированная Visual Studio сразу же лишается значительной части своих преимуществ. Однако - это дело неблизкого будущего.