Delphi (язык программирования)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Delphi
Внешний вид Delphi 7
Класс языка:

императивный, структурированный, объектно-ориентированный

Появился в:

1995; посл. выпуск 2011

Автор(ы):

Андерс Хейлсберг

Расширение файлов:

.pas,.dpr,.dpk,.pp

Релиз:

Delphi XE2 (2011)

Типизация данных:

статическая, сильная, безопасная (англ. Type safety)

Основные реализации:

Borland/Inprise/Codegear/Embarcadero Delphi; Borland Kylix; FreePascal

Испытал влияние:

Object Pascal, C++

Сайт:

Официальный сайт

Delphi (Де́лфи, произносится /ˈdɛlˌfi:/[1]) — императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal.[2] Начиная со среды разработки Delphi 7.0[3], в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения, связанные с современными тенденциями (например, с развитием платформы .NET) развития языков программирования: появились class helpers, перегрузки операторов и другое.

Содержание

[править] Целевая платформа

Изначально среда разработки была предназначена исключительно для разработки приложений Microsoft Windows, затем был реализован также для платформ Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и, вскоре после этого, было объявлено о поддержке Microsoft .NET.

Реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.

Также предпринимались попытки использования языка в проектах GNU (например, Notepad GNU) и написания компилятора[источник не указан 972 дня] для GCC.

[править] История языка

Object Pascal — результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные свойства, а в Object Pascal — динамическую идентификацию типа данных с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией — данная технология получила обозначение RTTI. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, после чего воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекцию.

Также отличительным свойством Object Pascal от С++ является то, что объекты по умолчанию располагаются в динамической памяти. Однако можно переопределить виртуальные методы NewInstance и FreeInstance класса TObject. Таким образом, абсолютно любой класс может осуществить «желание» «где хочу — там и буду лежать». Соответственно организуется и «многокучность».

Object Pascal (Delphi) является результатом функционального расширения Turbo Pascal.[4]

Delphi оказал огромное влияние на создание концепции языка C# для платформы .NET. Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Дельфи, из компании Borland Ltd. в Microsoft Corp.

  • Версия 8 способна генерировать байт-код исключительно для платформы .NET. Это первая среда, ориентированная на разработку мультиязычных приложений (лишь для платформы .NET);
  • Последующие версии (обозначаемые годами выхода, а не порядковыми номерами, как это было ранее) могут создавать как приложения Win32, так и байт-код для платформы .NET.

Delphi for .NET — среда разработки Delphi, а также язык Delphi (Object Pascal), ориентированные на разработку приложений для .NET.

Первая версия полноценной среды разработки Delphi для .NET — Delphi 8. Она позволяла писать приложения только для .NET. Delphi 2006 поддерживает технологию MDA с помощью ECO (Enterprise Core Objects) версии 3.0.

В марте 2006 года компания Borland приняла решение о прекращении дальнейшего совершенствования интегрированных сред разработки JBuilder, Delphi и C++ Builder по причине убыточности этого направления. Планировалась продажа IDE-сектора компании. Группа сторонников свободного программного обеспечения организовала сбор средств для покупки у Borland прав на среду разработки и компилятор.[5]

Однако в ноябре того же года было принято решение отказаться от продажи IDE бизнеса. Тем не менее, разработкой IDE продуктов теперь будет заниматься новая компания — CodeGear, которая будет финансово полностью подконтрольна Borland.

В августе 2006 года Borland выпустил облегченную версию RAD Studio под именем Turbo: Turbo Delphi (для Win32 и .NET), Turbo C#, Turbo C++.

В марте 2008 года было объявлено о прекращении развития этой линейки продуктов.

В марте 2007 года CodeGear порадовала пользователей обновленной линейкой продуктов Delphi 2007 for Win32 и выходом совершенно нового продукта Delphi 2007 for PHP.

В июне 2007 года CodeGear представила свои планы на будущее, то есть опубликовала так называемый roadmap.[6]

Embarcadero RAD Studio 2010

25 августа 2008 года компания Embarcadero, новый хозяин CodeGear, опубликовала пресс-релиз на Delphi for Win32 2009.[7] Версия привнесла множество нововведений в язык, как то[8]:

  • По умолчанию полная поддержка Юникода во всех частях языка, VCL и RTL; замена обращений ко всем функциям Windows API на юникодные аналоги (то есть MessageBox вызывает MessageBoxW, а не MessageBoxA).
  • Обобщённые типы, они же generics.
  • Анонимные методы.
  • Новая директива компилятора $POINTERMATH [ON|OFF].
  • Функция Exit теперь может принимать параметры в соответствии с типом функции.

Вышедшая в 2011 году версия Delphi XE2 добавила компилятор Win64 и кросс-компиляцию для операционных систем фирмы Apple.

[править] Компиляторы

  • Embarcadero Delphi (ранее наз. CodeGear Delphi и Borland Delphi) — наверное, самый известный компилятор, который является последователем Borland Pascal и Turbo Pascal. Используется Win16 (Delphi 1), Win32 (Delphi 2 и позже), Win64 (Delphi 16 (XE2) и позже), а также .NET 1.x, 2.0 (Delphi 8, Delphi 2005-Delphi 2007). Поддержка .NET, впоследствии выделена в отдельный продукт, известный как Oxygene.
  • Free Pascal (FPC) — свободный компилятор Оbject Pascal, который поддерживает различные диалекты Паскаля, включая Turbo Pascal, Delphi и собственные диалекты. На текущий момент, FPC может генерировать код для x86, x86-64, PowerPC, SPARC и процессоров ARM, а также для различных операционных систем, в том числе для Microsoft Windows, Linux, FreeBSD, Mac OS. Существует несколько сред разработки программного обеспечения для FPC (один из самых известных представителей — Lazarus).
  • GNU Pascal (отдельно разработанная версия из GCC). Не ставит целью продолжение серии диалектов Delphi, как составляющей Паскаля, но тем не менее содержит режим совместимости Borland Pascal, и очень медленно приспосабливает компоненты языка Delphi. Не подходит для компиляции больших проектов, содержащих код Delphi, но стоит отметить, что его поддерживают большинство операционных систем и архитектур.
  • Oxygene (ранее известен как Chrome) — компилятор Object Pascal, который интегрирован в Microsoft Visual Studio. Также доступный в виде компилятора с вольной командной строкой CLI. Использует .NET и моно платформы. В настоящий момент продаётся под маркой Embarcadero Delphi Prism.
  • MIDletPascal — язык программирования с Delphi-подобным синтаксисом, и одноименный компилятор, который преобразует исходный код в компактный и быстрый Java байт-код.
  • PocketStudio — основанная на Паскале, IDE для Palm OS.
  • Virtual Pascal — Бесплатный компилятор и текстовая IDE для Win32, OS/2 и Линукса. На тот момент очень быстрый и весьма совместимый (частично поддерживаются конструкции Delphi 5). Внешне очень похож на текстовую среду Borland Pascal 7, хотя отсутствует совместимая с ним графика, например. Однако разработка окончилась в 2004 году, а исходники открыты не были. С тех пор FPC ушёл намного вперед и в целом для программирования лучше он. Тем не менее, VP остаётся очень неплохим вариантом быстрой замены ещё более устаревших версий Borland Pascal для школы/института, учитывая родную работу в Win32 без проблем с русскими кодировками.

[править] Синтаксис языка

[править] Операторы

Cписок операторов через пробел: := + — * / div mod not and or with xor shl shr if (условие) then (Действие) else (В противном случае действие) ^ = <> >= <= < > @ in is as

[править] Выражения

Выражения в Object Pascal(Delphi) бывают арифметическими, логическими и строковыми.

Основные логические выражения:
Логические выражения в основном употребляются в условных операторах. К логическим выражениям относятся такие операции как:
not — «НЕ», отрицание логического выражения (NOT <логическое_выражение>)
and — «И», умножение (пересечение) логических выражений (<логическое_выражение1> AND <логическое_выражение2>)
or — «ИЛИ», объединение логических выражений (<логическое_выражение1> OR <логическое_выражение2>)
xor — «Исключающее ИЛИ», отрицание ИЛИ, все что не попадает под ИЛИ (<логическое_выражение1> XOR <логическое_выражение2>)


[править] Типы данных

Обрабатываемые в программе данные подразделяются на переменные, константы и литералы. Константы представляют собой данные, значения которых установлены в разделе объявления констант и не изменяются в процессе выполнения программы.

[править] Объекты

Объекты как экземпляры класса объявляются в программе в разделе var как обычные переменные. Например:

var
  CCircle1: TColorCircle;
  CircleA: TCircle;

Как и в случае записей, для обращения к конкретному элементу объекта (полю, свойству или методу) указывается имя объекта и имя элемента, разделенные точкой, то есть имя элемента является составным.

[править] Классы

В языке Object Pascal классы — это специальные типы данных, используемые для описания объектов. Соответственно объект, имеющий тип какого-либо класса, является экземпляром (instance) этого класса или переменной этого типа.

Класс представляет собой особый тип, имеющий в своем составе такие элементы (члены, member), как поля, свойства и методы. Поля класса аналогичны полям записи и служат для хранения информации об объекте. Методами называются процедуры и функции, предназначенные как правило для обработки полей. Свойства занимают промежуточное положение между полями и методами.

[править] Объектно-ориентированные особенности языка

[править] Инкапсуляция

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

[править] Наследование

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

[править] Полиморфизм

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

[править] Примеры

[править] Структура программы

Каждая написанная программа на языке Delphi состоит из заголовка программы (program NewApplication;), поля используемых модулей Uses (к примеру, Uses Windows, Messages, SysUtils и т. д.), который может не входить в саму структуру, а также блоков описания и исполнения (начинаются составным оператором begin и заканчиваются end.).

program Project1;                     // Заголовок программы, с её именем «Project1»
 
uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};       // модули, которые подключены к проекту и используются программой
 
{$R *.res}
 
begin
  Application.Initialize;                // Инициализация приложения
  Application.CreateForm(TForm1, Form1); // Создание формы/окна
  Application.Run;                       // Запуск и исполнение 
end.

[править] Пример № 1

Вывод сообщения «Hello, world!» в консольном приложении Delphi

program Helloworld;          //название программы
{$APPTYPE CONSOLE}           //директива компилятору о создании консольного приложения
begin
  writeln('Hello, world!');    //вывод сообщения Hello, world!
end.                         //конец программы

[править] Пример № 2

Вывод сообщения «Hello, world!» в 32-разрядном GUI приложении Delphi

...
 
procedure TForm1.Button1Click(Sender: TObject); //Обработчик события OnClick, генерируемый автоматически
begin
  ShowMessage('Hello, world!');                  //вывод сообщения Hello, world!
end;                                           //конец процедуры
 
...

[править] Пример № 3

Динамическое создание списка строк и запись его в файл

// Обработчик события, происходящего при создании формы MainForm
procedure TMainForm.FormCreate(Sender: TObject);
var
  // Объявление переменной типа TStrings (список строк).
  Strings: TStrings;
begin
  // Создание (выделение памяти и заполнение её начальными значениями) объекта типа TStringList.
  // TStringList - это потомок TStrings, реализующий его абстрактные методы с целью хранения строк в памяти.
  Strings := TStringList.Create;
  try
    // Добавление строки.
    Strings.Add('Добавляемая строка.');
    // Сохранение всех строк в файл.
    Strings.SaveToFile('C:\Strings.txt');
  finally
    // Освобождение памяти объекта и очистка ссылки на неё для предотвращения непреднамеренного обращения к не выделенной памяти.
    FreeAndNil(Strings);
  end;
end;

[править] Расширения файлов

.pas - исходный код модуля (pascal)
.dpr - исходный код проекта (pascal)
.dproj - исходный код проекта (xml)
.dproj.local - исходный код проекта (xml)
.dfm - исходный код формы
.dpk - скомпилированный пакет
.dcu - скомпилированный модуль
.exe - скомпилированное приложение
.res - ресурсы
.dsk - привязки к файлам
.identcache - кэшированные привязки к файлам

[править] Известное программное обеспечение, созданное на Delphi

Среди многих распространённых программных продуктов, написанных на Delphi, можно найти[9]:

[править] Примечания

  1. В Великобритании доминирует произношение «дел-фи́»: Вариант произношения, характерный для Великобритании  (англ.). Merriam-Webster Online Dictionary. Merriam-Webster. Архивировано из первоисточника 21 августа 2011. Проверено 1 октября 2008.,
    а в США — «де́л-фай»: Вариант произношения, характерный для США  (англ.). Merriam-Webster Online Dictionary. Merriam-Webster. Архивировано из первоисточника 21 августа 2011. Проверено 1 октября 2008.
  2. Под таким названием он был разработан в фирме Apple Computer в 1986 году группой Ларри Теслера.
  3. Delphi Language Overview
  4. Об этом говорят обозначения версий компилятора. Так, в Delphi 7 компилятор имеет номер версии 15.0 (последняя версия Borland Pascal / Turbo Pascal обозначалась 7.0, в Delphi 1 компилятор имеет версию 8.0, в Delphi 2 — 9.0 и т. д. Номер версии 11.0 носит компилятор Pascal, входивший в состав среды C++ Builder).
  5. Default Parallels Plesk Panel Page
  6. Delphi and C++Builder Roadmap
  7. Database Tools and Developer Software | Embarcadero Technologies
  8. Delphi from Embarcadero | RAD Application Development Software
  9. Good Quality Applications Built With Delphi - Delphi Programming  (англ.)[неавторитетный источник?]

[править] Литература

[править] Ссылки

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Участие
Печать/экспорт
Инструменты
На других языках