Произошло чудо, которое можно по праву считать торжеством разума. У Delphi-разработчиков вместо пасынка Delphi for WinForms появится мощная, современная IDE для создания приложений под .NET и MONO. Имя этого творения – MS Visual Studio. Если научить среду разработки компании Microsoft компилировать программы, написанные на Delphi-подобном языке, то получится Delphi Prism. Приятно, что после перехода CodeGear в Embarcadero разработчики наконец разобрались в терминах, названиях и брендах, и теперь испытанный в боях Object Pascal встанет практически в одну обойму c C#, VB.NET, Managed C++ и J#. Угроза здесь может крыться только в том, что за такой подарок теперь будет отвечать не компания RemObjects, разработчик технологий Oxygene/Chrome (http://www.remobjects.com), а владельцы вновь рожденного Delphi.

В настоящее время самым продвинутым Delphi-подобным ответвлением для программирования под .NET является компилятор Oxygene со своим расширением Chrome для профессионального программирования в среде MS Visual Studio, и потому компания Embarcadero, сделав выбор в пользу именно этого продукта, попала, что называется, в яблочко.

 

Насколько схожи традиционный Delphi и Prism?

 

Первое и важнейшее их различие – поддержка в Prism современной актуальной версии платформы .NET (а заодно и MONO). Проблема постоянного отставания Delphi.NET от самой Framework .NET на целую версию так до сих пор и не решена. Наверняка разработчики из компании RemObjects очень стремятся стать причастными к известному бренду, но на самом деле Prism идеологически ближе к MS Visual Studio, чем к Delphi. Более того, «дельфистам» придется надолго подружиться со средой MS Visual Studio (Prism работает в оболочке Visual Studio Shell) и фактически изучить новый язык программирования (http://prismwiki.codegear.com/en/Language)

 

Трудности перевода

 

Первое, что сразу бросается в глаза, – вместо слов procedure и function пишется method. Хотя, конечно, более важны не различия с традиционным Delphi, а полезные нововведения. Интересно будет попробовать параллельные циклы:

 

for parallel i: Integer := 0 to 10 dofor each parallel elem in SomeCollection do
 
Приятно радует поддержка оператором case типа string. Добавлено что-то похожее на оператор return:

 

if not Assigned(fProject) then exit false;

 

А вот, к примеру, возможность определения правила чтения константы из свойства, как говорится, не отходя от кассы:

 

property Foo: String read 'Bar';

 

Почти на ту же тему – задание свойств объекта сразу при его создании:

 

var b := new Button(Width := 150; Height := 25);

 

Подарок от фирмы

Собственно, чтобы как-то доказать причастность нового продукта к имени Delphi, ему обещана поддержка СУБД Blackfish SQL (на уровне ADO.NET), декларируется возможность создания приложений с использованием гетерогенного доступа к базам благодаря технологии dbExpress, а также упоминается DataSnap. Чтобы более детально познакомиться со всеми этими заманчивыми предложениями, нужно было бы как следует поработать с программой, чего на момент публикации материала сделать пока невозможно.

 

Delphi.NET скорее мертв, чем жив

Никто сейчас прямо не скажет о том, что заканчивается развитие направления Delphi.NET в том виде, в каком мы всегда его знали, но, очевидно, с точки зрения поддержки .NET программа Delphi Prism станет ключевой. По крайней мере, планов по переносу Delphi.NET(VCL) никто не вынашивает.

 

Язык, на котором хочется программировать

Теперь, пожалуй, «дельфистам» уже можно перебраться на .NET, или родные (платформенные) программы им пока еще ближе к телу? Конечно, все зависит от решаемой задачи и глубокой веры в обещанную поддержку 64-разрядной архитектуры для платформенного программирования, но можно с уверенностью сказать, что восприятие языка Delphi наконец сдвинулось с мертвой точки. Теперь стало совершенно очевидно, что проект, совсем недавно называвшийся RemObjects Oxygene, дает «паскальщикам» новый шанс успеть за техническим прогрессом и, самое главное, выбор языка по-прежнему остается делом вкуса. Так что на форумах, как и раньше, можно будет вести религиозные войны,... если, конечно, нет более важных дел.

 

Полный вариант статьи в журнале "Мир ПК" 1/09