Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #65, АПРЕЛЬ 2006 г.

интернациональное программирование

N|M{INT3 TEAM}{NIM@INT3.RU}

Спецвыпуск: Хакер, номер #065, стр. 065-032-1


.NET: ЧТО ТАКОЕ ХОРОШО И ЧТО ТАКОЕ ПЛОХО

КАК ИЗВЕСТНО, СЛОЖИЛАСЬ (И ДОСТИГЛА СВОЕГО АПОГЕЯ) СИТУАЦИЯ, В КОТОРОЙ НА РЫНКЕ ВЫСОКИХ КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ ПОЯВИЛИСЬ ПРОЦЕССОРЫ, НЕСОВМЕСТИМЫЕ С X86 (ИЛИ СОВМЕСТИМЫЕ, НО ЦЕНОЙ БОЛЬШОЙ ПОТЕРИ ПРОИЗВОДИТЕЛЬНОСТИ), НАПРИМЕР — ПРОЦЕССОРЫ СТАНДАРТА IA64

Появились и такие процессоры, производительность которых была бы выше, если бы компиляторы учитывали их особенности (например процессоры ia32 (64bit) или AMD (3DNOW и т.п.). В борьбе за драгоценные секунды разработчики стали делать несколько копий исполняемых файлов, откомпилированных под разное железо.

В аналогичную ситуацию попали программеры, если программа должна выполняться на разных операционных системах или на всевозможных мобильных устройствах. В результате увеличивался объем дистрибутива: в одном дистрибутиве были файлы для разного железа, и таких дистрибутивов было несколько для разных операционных систем. Соответственно, разработка затягивалась во времени и дорожала, что, естественно, влияло на стоимость программы.

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

Подобная идея была воплощена в платформе .NET (как известно, от компании Microsoft). Программа, написанная для .NET, может работать везде, где установлена эта платформа. .NET-программа, работающая в Windows, с таким же успехом пойдет в любой операционной системе семейства Unix или на мобильном телефоне. Однако здесь есть одно «но». Управляемый код будет выполняться только под определенной операционной системой, если он вызывает внутренние API, специфические для платформы, или библиотеку классов, специфическую для платформы.

[изначально Microsoft выпустила три языка] программирования для платформы .NET: C#, Visual Basic и managed C++ (входят в поставку Visual Studio .Net).

Visual Basic .Net (VB.NET) является продолжением VB6, но от первого (если честно) остался один только синтаксис. Когда я начал знакомиться с VB.NET, мне показалось, что резкий скачок языка VB подобен скачку при переходе с QBasic на VB1. Сейчас VB активно развивается и уже представляет собой девятую версию.

В то же время C++ после интеграции Visual Studio .Net претерпел изменения совсем не к лучшему. Ужасный синтаксис стал еще ужасней, хотя managed C++ имеет одно (хотя бы одно) большое преимущество — единственный язык платформы .NET, который поддерживает ассемблерные вставки в методах с пометкой unsafe. В остальном — одни недостатки :).

C#, на мой взгляд, намного лучше. Он вобрал в себя всю простоту VB и профессионализм С++. Позднее же было написано множество языков для платформы .NET (по некоторым данным, их число достигло сорока).

Содержание  Вперед на стр. 065-032-2