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

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
Выпуски журнала "СПЕЦ Xakep"
Cпец Хакер #01Cпец Хакер #02Cпец Хакер #03Cпец Хакер #04Cпец Хакер #05Cпец Хакер #06Cпец Хакер #07Cпец Хакер #08Cпец Хакер #09Cпец Хакер #10Cпец Хакер #11Cпец Хакер #12Cпец Хакер #13Cпец Хакер #14Cпец Хакер #15Cпец Хакер #16Cпец Хакер #17Cпец Хакер #18Cпец Хакер #19Cпец Хакер #20Cпец Хакер #21Cпец Хакер #22Cпец Хакер #23Cпец Хакер #24Cпец Хакер #25Cпец Хакер #26Cпец Хакер #27Cпец Хакер #28Cпец Хакер #29Cпец Хакер #30Cпец Хакер #31Cпец Хакер #32Cпец Хакер #33Cпец Хакер #34Cпец Хакер #35Cпец Хакер #36Cпец Хакер #37Cпец Хакер #38Cпец Хакер #39Cпец Хакер #40Cпец Хакер #41Cпец Хакер #42Cпец Хакер #43Cпец Хакер #44Cпец Хакер #45Cпец Хакер #46Cпец Хакер #47Cпец Хакер #48Cпец Хакер #49Cпец Хакер #50Cпец Хакер #51Cпец Хакер #52Cпец Хакер #53Cпец Хакер #54Cпец Хакер #55Cпец Хакер #56Cпец Хакер #57Cпец Хакер #58Cпец Хакер #59Cпец Хакер #60Cпец Хакер #61Cпец Хакер #62Cпец Хакер #63Cпец Хакер #64Cпец Хакер #65Cпец Хакер #66Cпец Хакер #67Cпец Хакер #68Cпец Хакер #69Cпец Хакер #70Cпец Хакер #71Cпец Хакер #72Cпец Хакер #73Cпец Хакер #74Cпец Хакер #75