Delphi (язык программирования)
| Класс языка: | |
|---|---|
| Появился в: | |
| Автор(ы): | |
| Расширение файлов: |
.pas,.dpr,.dpk,.pp |
| Релиз: |
Delphi XE2 (2011) |
| Типизация данных: | |
| Основные реализации: |
Borland/Inprise/Codegear/Embarcadero Delphi; Borland Kylix; FreePascal |
| Испытал влияние: | |
| Сайт: | |
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]
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]:
- Продукция Embarcadero: Embarcadero Delphi, Embarcadero C++ Builder, Borland JBuilder 1 и 2 версии.
- Администрирование и разработка баз данных: MySQL Tools, IBExpert.
- Инженерное программное обеспечение: Altium Designer.
- Файловые менеджеры: Total Commander, Frigate.
- Просмотрщики графики: FastStone Image Viewer, FuturixImager.
- Видео- и аудиопроигрыватели: Light Alloy, The KMPlayer, AIMP.
- Программы мгновенного обмена сообщениями: QIP, R&Q, Skype, The Bat!, PopTray, FeedDemon.
- Создание музыки: FL Studio, Guitar Pro (до версии 6.0).
- Разработка программного обеспечения: Dev-C++, DUnit, Game Maker, Inno Setup.
- Веб-разработка: Macromedia HomeSite.
- Текстовые редакторы: SynEdit, BirEdit, Notepad GNU, Bred.
- Бухучёт и налогообложение: «ПАРУС», AVARDA.
- Программы для создания анимаций: Pivot Stickfigure Animator.
- Программы для сжатия данных: ALZip, PowerArchiver, PeaZip.
- Компьютерные игры: Age of wonders, «Космические рейнджеры», Venom. Codename: Outbreak, Space Empires V, «Правда о девятой роте».
[править] Примечания
- ↑ В Великобритании доминирует произношение «дел-фи́»: Вариант произношения, характерный для Великобритании (англ.). Merriam-Webster Online Dictionary. Merriam-Webster. Архивировано из первоисточника 21 августа 2011. Проверено 1 октября 2008.,
а в США — «де́л-фай»: Вариант произношения, характерный для США (англ.). Merriam-Webster Online Dictionary. Merriam-Webster. Архивировано из первоисточника 21 августа 2011. Проверено 1 октября 2008. - ↑ Под таким названием он был разработан в фирме Apple Computer в 1986 году группой Ларри Теслера.
- ↑ Delphi Language Overview
- ↑ Об этом говорят обозначения версий компилятора. Так, в Delphi 7 компилятор имеет номер версии 15.0 (последняя версия Borland Pascal / Turbo Pascal обозначалась 7.0, в Delphi 1 компилятор имеет версию 8.0, в Delphi 2 — 9.0 и т. д. Номер версии 11.0 носит компилятор Pascal, входивший в состав среды C++ Builder).
- ↑ Default Parallels Plesk Panel Page
- ↑ Delphi and C++Builder Roadmap
- ↑ Database Tools and Developer Software | Embarcadero Technologies
- ↑ Delphi from Embarcadero | RAD Application Development Software
- ↑ Good Quality Applications Built With Delphi - Delphi Programming (англ.)[неавторитетный источник?]
[править] Литература
- Нил Дж. Рубенкинг. Язык программирования Delphi для «чайников». Введение в Borland Delphi 2006 = Delphi for Dummies. — М.: Диалектика, 2007. — 336 с. — ISBN 0-7645-0179-8
- Хавьер Пашеку. Программирование в Borland Delphi 2006 для профессионалов = Delphi for .NET Developer’s Guide. — М.: Вильямс, 2006. — 944 с. — ISBN 0-672-32443-X
- А. Н. Вальвачев, К. А. Сурков, Д. А. Сурков, Ю. М. Четырько. Программирование на языке Delphi. Учебное пособие. — 2005.
[править] Ссылки
| Программирование на языке Delphi в Викиверситете? |
- Страница среды программирования на сайте Embarcadero Technologies
|
|
|||||||
|---|---|---|---|---|---|---|---|
| Диалекты |
Clascal • Concurrent Pascal • Delphi • Pascal • Object Pascal • Oxygene • SuperPascal |
||||||
| Компиляторы |
|
||||||
| IDE | |||||||
| Персоны | |||||||
|
|
|
|---|---|
| Используемые в разработке |
Ада • АПЛ • Язык ассемблера • ActionScript • ABAP/4 • AutoIt • AWK • BASIC • C • Кобол • C++ • C# • Cω • Clarion • Clojure • ColdFusion • Common Lisp • D • dBase • Delphi • Eiffel • Erlang • Euphoria • F# • Форт • Фортран • Gambas • Go • Groovy • HAL/S • Haskell • Icon • Java • JavaScript • Limbo • Lua • Object Pascal • Objective-C • OCaml • Oz • Parser • Паскаль • Perl • PHP • PowerBASIC • PureBasic • Python • ПЛ/1 • Пролог • Ruby • Scala • Scheme • Smalltalk • SQL • PL/SQL • Tcl • Vala • Visual Basic • Visual Basic .NET |
| Академические | |
| IEC 61131-3 |
Instruction List • ST • FBD • Ladder Diagram (LD) • SFC |
| Прочие | |
| Эзотерические | |
| Визуального программирования |
|

