ПРОГРАММИРОВАНИЕ

Для создания .NET-приложений корпорация Microsoft предлагает, как известно, два основных языка программирования - Visual Basic . NET и C#. Последний позволяет максимально использовать свойства платформы Microsoft Framework .NET, однако с точки зрения разработки ПО для подавляющего большинства прикладных решений функционал обоих языков примерно одинаков и выбор определяется в основном субъективными пристрастиями программиста, в частности привычкой к тому или другому синтаксису.

Схожесть возможностей языков, с одной стороны, снижает актуальность смешанного программирования (применения разных языков для написания единого исполняемого модуля), так как подобные методы обычно служили для получения эффекта от сочетания качественно различных средств (например, сочетание Basic и Assembler во времена DOS обеспечивали высокую скорость разработки программы и наилучшее быстродействие критически важных операций). С другой стороны, при коллективной разработке или при использовании унаследованного кода задействование разных языков достаточно актуально.

Инструмент Instant C# автоматизирует преобразование кода VB.NET в C#

Однако, несмотря на близость VB. NET и C# (в том числе единой модели библиотек классов .NET), смешанное программирование - дело не простое. Во-первых, синтаксис языков довольно сильно различается, причем зачастую без каких-либо понятных причин. Примеров тому множество: так, одна и та же смысловая конструкция подключения внешних библиотек классов в VB.NET обозначается ключевым словом Imports, а в C# - Using. Во-вторых, хотя в среде Visual Studio .NET и поддерживается большой набор .NET-языков, внутри отдельного проекта можно воспользоваться только одним из них.

Все эти обстоятельства обозначили проблему преобразования кода с одного языка на другой. Спрос рождает предложение: американская компания Tangible Software Solutions (www.tangiblesoftwaresolutions.com) представила в 2004 г. свои инструменты Instant C# и Instant VB.NET для автоматического перевода программ, написанных с помощью VB.NET, на C# и наоборот (см. рисунок). Они позволяют работать как с законченными проектами, состоящими из множества файлов, так и с отдельными фрагментами кода. Второй вариант может применяться в том числе и для анализа различий в реализации кода на разных языках. Он может пригодиться и техническим писателям для автоматического получения программных примеров на двух языках.

По оценкам экспертов журнала Visual Studio Magazine, Instant C# способен автоматически преобразовать 99% кода VB.NET. В оставшийся 1% попадают лишь устаревшие унаследованные конструкции VB.NET, например операторы OnError и Resume, которые не вписываются в архитектуру .NET. В целом VB.NET-проект, содержащий 110 тыс. строк кода в 648 файлах, был преобразован за 1 ч 40 мин. В результирующем исходном коде на C# было выделено 2200 фрагментов кода, их система рекомендовала проверить дополнительно, и 108 мест, с которыми программа не справилась в автоматическом режиме. После их анализа и ручной корректировки созданный проект на C# заработал так же, как исходный VB.NET-вариант. Инструмент Instant VB достиг на тестовых примерах (проекты C#, включенные в состав Visual Studio .NET) еще более высоких показателей: эффективность перевода C# на VB.NET составила 99,98% при скорости преобразования более 10 тыс. строк в минуту.

Стоимость полной версии каждого инструмента - Instant C# и Instant VB.NET - составляет соответственно 159 и 119 долл., а вариантов для преобразования только отдельных фрагментов кода - 79 и 59 долл.