уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

prism-256h

Это, наверное, единственный пост на тему Delphi Prism, который читатели DelphiFeeds.ru, да и вообще те, кто подписан на RSS-канал блога могут увидеть в подписке. Не потому, что я жадный или ещё что-то в таком духе. Просто тема работы с Delphi Prism (во всяком случае в моем понимании) никак не согласуется с разработкой программ в Delphi for Win32, есть, конечно много чего общего в плане синтаксиса, реализации некоторых возможностей, но всё-таки суть несколько разная. Да и пока особенно не стремлюсь в .NET, скорее просто расширяю свой кругозор по этой теме, смотрю, что есть, чего нет, какой язык больше понравится, если вдруг когда-нибудь придётся выбирать (вряд ли, конечно), следовательно раздел, скорее всего будет мелким и содержать небольшие заметки, мысли по сабжу, может сравнения возможностей и т.д. Поэтому, чтобы не напрягать ленту нашего Delphi-аггрегатора я вынесу категорию Delphi Prism за пределы RSS-ленты сразу после публикации этого поста (по другому нельзя), но оставлю возможность вывода постов из этой категории на главную страницу блога. Если тема Вам будет интересна – заходите, читайте, обсуждайте. Сегодня будет немного рассуждений на тему использования Prism.

Delphi Prism – что за зверь?

Delphi Prism — среда разработки под .NET и Mono Framework на языке Oxygene, который, в свою очередь, разрабатывался на основе языка Object Pascal. Кому интересно узнать более подробные сведения – ссылка на wiki.

Если теперь посмотреть в wiki Delphi Prism, то увидим следующее:

Delphi Prism — это язык для .NET. Когда вы пишете программу в Delphi Prism, вы пишете .NET-программу. Delphi Prism предлагает все возможности .NET Framework…

Кому верить? По мне так особенно и без разницы – главное, чтобы было удобно, а разбираться в том, что это “язык” или “среда” оставим на откуп маркетологам, PR-щикам и просто любителям покопаться в понятиях.

Delphi Prism устанавливается как аддон в Visual Studio и использует все возможности этой IDE. Кстати, про возможности, думаю, немного расскажу, но позднее.

Считать такое действие (установку в качестве аддона) плюсом или минусом? Не важно, что я скажу по этому поводу, т.к. это будет чисто субъективное мнение, основанное на личном использовании той или иной IDE. Хоть и есть небольшой опыт использования и VS и более обширный — RAD Studio. Здесь каждый решает сам, например, мне очень понравился в VS процесс отладки программ – как все устроено, но не нравится как распределены горячие клавиши, как располагаются окна (даже, если их настраивать) и т.д. – приходится сразу настраивать IDE “под себя”. Вот такие пока “тараканы” в отношении выбора IDE. Все эти мелочи вполне решаемы – можно настроить IDE, можно просто привыкнуть и все, но по поводу этих мелочей можно спорить сколько угодно и при этом не прийти ни к какому выводу, т.к. все эти мнения субъективны.

А вот с чем не поспоришь, так это с цифрами.

Популярность Delphi Prism.

Надо сказать (и это не будет ни для кого секретом), что ни Delphi Prism ни язык Oxygene не являются популярными среди разработчиков. И об этом свидетельствуют все – простые разработчики в обсуждениях на форумах, популярные рейтинги типа TIOBE, просто статистика запросов в Сети.

Пример: запрос “Delphi Prism” задавался в Яндекс за прошедший месяц всего 802 раза:

prism_stat

В то время как запросы просто по Delphi и C# исчисляются сотнями тысяч и даже миллионами. Собственно, числа более, чем говорящие – Delphi Prism не популярен. Зачем же я полез в то, что никому не надо? Интерес, простой интерес и, возможно, когда-нибудь мой интерес окажется мне на пользу. Посмотрим.

После столь обширного введения приступим, наконец-то, к непосредственному знакомству.

Hello, Delphi Prism!

Начнем знакомство с привычного для всех начинающих приложения, которое выведет нам на экран приветствие.

Для начала, скачиваем дистрибутив Delphi Prism с официального сайта разработчика (30-ти дневный триал).

Так как для работы нам необходима IDE Visual Studio, то идем в гости к Microsoft и скачиваем дистрибутив, скажем 90-та дневный триал Visual Studo 2010.

Вначале устанавливаем Visual Studio 2010, после этого – Delphi Prism.

Теперь, когда все готово для начала работы, открываем VS 2010 и в главном меню выбираем:

Файл – Создать – Проект:

vs

В открывшемся окне выбираем раздел “Delphi Prism – Windows” и тип проекта “Console Application

vs2

Также в этом окне можно выбрать версию .NET Framework, задать название и расположение нашего проекта. Жмем “Ok” и для нас будет создан простой шаблон консольного приложения, который уже фактически содержит всё, что нам на данном этапе необходимо:

test_prism

Всё, что нам теперь осталось – это изменить строку “Hello, World” на “Hello, Delphi Prism” и задача решена. Не интересно? Да, реализация элементарная – мы не написали ничего, кроме строки для вывода на экран, но этот пример показателен именно своим содержимым, особенно тем, кто до этого имел дело с Delphi.

Вроде бы и выглядит весь код до боли знакомо и, даже понятно с первого взгляда, но всё же что-то не то и не так. Давайте разберемся прямо по строкам, что “то”, а что “не то”.

Первая строка:

  namespace HelloPrism;

 

Определяет новое пространство имен для проекта. До сих пор мы привыкли оперировать такими понятиями, как «модуль» и «файл», а «пространство имен» — это для нас пока внове.

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

Одно и то же пространство имен может встречаться в разных файлах проекта и это не будет ошибкой. Например, используя наш проект, выберите в Обозревателе решений его название, кликните правой кнопкой мыши и в контекстном меню выберите “Добавить элемент…”. Добавьте в решение новый класс и получите следующую заготовку для нового класса:

namespace HelloPrism;
 
interface
 
uses
  System.Collections.Generic,
  System.Text;
 
type
  Class1 = public class
  private
  protected
  public
  end;
 
implementation
 
end.

 

То есть, если вы решите использовать в работе .NET (не важно, на чем при этом будете писать) придётся привыкнуть к тому, что вместо понятия «модуль» используется «пространство имен». Всегда, кстати, существует хотя бы одно пространство имен для решения — корневое пространство имен, название которого соответствует названию проекта, например, как в нашем случае, HelloPrism. Если потребуется, мы можно определить сколь угодно много пространств имен внутри нашего решения. Если ключевое слово namespase для вас непривычно — в Delphi Prism можно пользоваться и более привычным словом unit — так тоже можно определить пространство имен.

Далее в нашем примере определяется новый класс ConsoleApp. Определение класса выглядит аналогично тому, к которому мы привыкли. Различия же видны в определении методов.

Во-первых, в проекте всегда присутствует хотя бы один метод он же – главный метод.

Главный метод по сути является той точкой входа с которой начинается выполнение программы. Этот метод должен:

  1. Быть статичным (именно поэтому он определен как class method)
  2. Всегда иметь название Main

Главный метод может:

  1. Принимать в качестве аргументов: строку или массив строк. Или не принимать аргументы вообще. Строки используются, если необходимо запустить программу с параметрами командной строки.
  2. Не возвращать никаких результатов, либо возвращать целое число, например код выхода из программы.

Что будет, если мы объявим в двух классах метод Main? Судя по информации в той же wiki в этом случае в настройках проекта необходимо указать какой из классов будет выступать в роли регулярного (указать свойство Sturtup Object) и именно метод из этого класса и станет главным. Но попробовал применить этот прием на практике – VS заругалась на то, что не может определить главный метод. Так что этот момент отпишем на потом в силу моей неопытности.

Что ещё остается сказать про методы в Delphi Prism?

Как Вы могли заметить в Delphi Prism нет таких понятий как функция или процедура – здесь всё просто методы. Есть методы, которые возвращают результат, а ест методы, которые не возвращают результат. Соответственно, для их определения используется одно ключевое слово – method.

Но, если уж Вам опять же тяжко свыкнутся с мыслью о том, что теперь придётся иметь дело только с method, то не расстраивайтесь – Prism прекрасно понимает и такие ключевые слова как procedure и function. Такой код нормально скомпилируется:

namespace HelloPrism;
 
interface
 
type
  ConsoleApp = class
  public
    class procedure Main(args: array of string);
  end;
 
implementation
 
class procedure ConsoleApp.Main(args: array of string);
begin
  // add your own code here
  Console.WriteLine('Hello World.');
  Console.ReadKey;
end;
 
end.

Вот, пожалуй пока все, что могу сказать после первого знакомства с Delphi Prism. Есть ещё всякого рода «фичи», «плюшки» для Delphi-программистов, с которыми я вкратце ознакомился, но пока ещё не собрал в кучу, чтобы выложить в блоге. Поэтому на сегодня все. Если тема Delphi Prism Вам интересна — следите за одновлениями в блоге.

0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
4 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Andrey53
08/06/2011 00:58

Я кстати тоже начал двигаться в данном направлении, но пока до статей дело не дошло, так что буду рад еще почитать

Andrey53
08/06/2011 01:15

сори за оверпост, что касается популярности Delphi Prism, то если бы он появился вместе с С#, то может бы конкурировал немного, а сейчас он будет интересен только Delphi-программистам, которые хотят попробовать себя в .NET, тем более не имеет своего компилятора, кроме покупки самой Prism, надо покупать еще VS
Лично мое мнение

Deksden
Deksden
08/06/2011 01:22

Несколько замечаний. Первое — oxygen не только в .net работает. Благодаря проекту cooper от RemObjects мы получим oxygen for java (android). Второе- oxygen интегрируется также в monodevelop. Соответственно, prism поддерживает также разработку под mono, monoTouch, monoDroid.