Язык программирования delphi для чего

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

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

Delphi — (Де́лфи, произносится ˈdɛlˌfi:) — императивный, структурированный, объектно-ориентированный язык программирования со строгой статической типизацией переменных. Основная область использования — написание прикладного программного обеспечения. Первоначально носил название Object Pascal и исторически восходит к одноимённому диалекту языка, разработанному в фирме Apple в 1986 году группой Ларри Теслера. Однако в настоящее время термин Object Pascal чаще всего употребляется в значении языка среды программирования Delphi. Начиная с Delphi 7, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.

Содержание

История развития языка

Основой языка Delphi послужил язык Паскаль, разработанный профессором Н.Виртом в конце 60-х годов специально для обучения студентов программированию. Паскаль был полностью процедурным языком, объектно-ориентированная парадигма была добавлена в Turbo Pascal. Object Pascal (диалектом которого является Delphi), является функциональным расширением языка Turbo Pascal.

Синтаксис

Операторы

Типы данных

Строки Строкой называется последовательность символов, заключённая в одиночные кавычки: ‘это текстовая строка’. Логический тип Тип Boolean обеспечивает перечисление логических True и False значений.

Структура программы

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

Компиляторы

Free Pascal (FPC) — бесплатный компилятор Оbject Pascal, который поддерживает различные диалекты Паскаля, включая Turbo Pascal, Delphi и собственные диалекты. На текущий момент, FPC может генерировать код для x86, x86-64, PowerPC, SPARC и процессоров ARM, а также для различных операционных систем, в том числе для Microsoft Windows, Linux, FreeBSD, Mac OS. Существует несколько сред разработки программного обеспечения для FPC (один из самых известных представителей — Lazarus).

MIDletPascal — компилятор, преобразующий исходный код в компактный и быстрый байт-код Java.

Virtual Pascal — Бесплатный компилятор для Win32, OS/2 и Linux. На тот момент очень быстрый и весьма совместимый (частично поддерживаются конструкции Delphi 5). Разработка окончилась в 2004 году, исходники открыты не были. С тех пор FPC ушёл намного вперед и в целом для программирования лучше он.

Инструменты разработки

Delphi 4. Еще одна ключевая веха развития. В этой версии было введено много нового и полезного для упрощения разработки приложений, включая новую среду с динамическими подсказками и т.д. Была усовершенствована модель работы с компонентами (VCL), появилась возможность быстрого использования таких технологий, как MIDAS, DCOM и CORBA. В этой версии так же был усовершенствован язык Object Pascal: появились новые черты, свойственные современному ООП, были введены новые типы данных, включая 64-битные.

Delphi 2005. Менее чем через год после выхода Delphi 8, появилась новая версия, в которой вернули возможность работать в классическом стиле IDE при разработке приложений для Windows. Вместе с тем, Delphi 2005, в случае разработки приложений специально для платформы NET, позволяет работать не только с языком Delphi, но и с C#. При этом в сам язык Delphi были введены такие новшества, как оператор for…in и встраиваемые процедуры и функции.

Delphi 2007. Версия, выпущенная CodeGear. Добавлена поддержка интерфейса Aero для Windows Vista.

Delphi 2009. Версия, выпущенная Embarcodero. Реализована поддержка Unicode в VCL и RTL, заменены обращения к о всем функциям Windows API на аналоги в Unicode, добавлены обобщенные типы и анонимные методы.

Delphi 2010. Поддержка Windows 7, компоненты для работы с касаниями и жестами, компоненты dbExpress теперь официально поддерживает Firebird.

Delphi XE (Delphi 2011). Добавлена поддержка для облачных вычислений.

Особенности языка

Изначально, язык ставил во главу стройность и высокую читаемость, поскольку был предназначен для обучения дисциплине программирования. Эта изначальная стройность, в дальнейшем, как по мере роста аппаратных мощностей, так и в результате появления новых парадигм, упростила расширение языка новыми конструкциями. Так, сложность объектного C++, по сравнению с C, выросла весьма существенно и затруднила его изучение в качестве первого языка программирования, чего нельзя сказать об Object Pascal относительно Pascal.

В Delphi формальное начало любой программы четко отличается от других участков кода и должно располагаться в определенном, единственном в рамках проекта, исходном файле с расширением dpr (тогда как другие файлы исходных текстов программы имеют расширение pas). В С-подобных языках программирования в качестве входа обычно используется глобальная функция или статический метод с именем main и определенным списком параметров, причём такая функция может быть расположена в любом из файлов исходного текста проекта.

В Delphi идентификаторы типов, переменных, а равно и ключевые слова читаются независимо от регистра: например идентификатор SomeVar полностью эквивалентен somevar.

В исходных файлах pas (которые, как правило, и содержат основное тело программы) на уровне языковых средств введено строгое разделение на интерфейсный раздел и раздел реализации. В интерфейсной части содержатся лишь объявления типов и методов, тогда как код реализации в интерфейсной части не допускается на уровне компиляции. Подобное разделение свойственно также языкам C/C++, где вводится разделение на заголовочные и собственно файлы реализации, но подобное разделение не обеспечивается на уровне языка или компилятора.

В Delphi метод или функция четко определяются зарезервированными для этого ключевыми словами procedure или function, тогда как в C-подобных языках различие обуславливается ключевым словом, определяющим тип возвращаемого значения.

Начало и конец программного блока выделяются ключевыми словами begin и end, тогда как в C-подобных языках программирования для этих целей используются фигурные скобки: <>. Таким образом, в Delphi достигается лучшая читаемость кода.

Источник

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

Delphi (Де́лфи, произносится /ˈdɘlˌfi:/ [1] ) — императивный структурированный объектно-ориентированный язык программирования со строгой статической типизацией переменных. Основная область использования — написание прикладного программного обеспечения.

Содержание

Целевая платформа

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

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

Философия и отличия от популярных прикладных языков программирования

При создании языка (и здесь качественное отличие от языка C) не ставилась задача обеспечить максимальную производительность исполняемого кода или лаконичность исходного кода для экономии оперативной памяти. Изначально, язык ставил во главу угла стройность и высокую читаемость, поскольку был предназначен для обучения дисциплине программирования. Эта изначальная стройность, в дальнейшем, как по мере роста аппаратных мощностей, так и в результате появления новых парадигм, упростила расширение языка новыми конструкциями.

Так, сложность объектного C++, по сравнению с C, выросла весьма существенно и затруднила его изучение в качестве первого языка программирования, чего нельзя сказать об Object Pascal относительно Pascal.

Ниже перечислены некоторые отличия синтаксических конструкций Delphi от семейства C-подобных языков (C/C++/Java/C#):

Ситуация ухудшается по мере роста количества задействованных в программе потоков — ведь исчерпывающий анализ достижимости требует полного останова. Таким образом, явная выгода — решение проблемы «утечек памяти» и, в целом, автоматическое управление временем жизни объектов — породила неявную проблему масштабирования и «провалов» производительности. Эта проблема малозаметна в простых программах, но по мере роста сложности и объёма кодовой базы становится всё более острой — то есть на финальном этапе разработки. Сложные программные комплексы, как правило, имеют привязку к реальному времени, так и требования к отзывчивости.

Язык программирования delphi для чего. Смотреть фото Язык программирования delphi для чего. Смотреть картинку Язык программирования delphi для чего. Картинка про Язык программирования delphi для чего. Фото Язык программирования delphi для чегоТочнее, когда у сборщика мусора есть в 5 раз больше памяти, чем требуется, его производительность совпадает или слегка превосходит прямое управление памятью. Однако, производительность сборщика мусора быстро деградирует, когда ему требуется работать с небольшими хипами. С 3 размерами требуемой памяти он, в среднем, работает на 17 % медленнее, а с двумя размерами — на 70 % медленнее. Также сборщик мусора более подвержен пейджингу, если память дефрагментирована. В подобных условиях, все протестированные нами сборщики мусора работают на порядок медленнее прямого управления памятью.

Язык программирования delphi для чего. Смотреть фото Язык программирования delphi для чего. Смотреть картинку Язык программирования delphi для чего. Картинка про Язык программирования delphi для чего. Фото Язык программирования delphi для чего

Попытки снизить издержки сборки мусора могут привести к существенному искажению стиля программирования [5] [6]

В Delphi не существует автоматического управления памятью: (в классических компиляторах языка) экземпляры классов создаются и удаляются вручную, тогда как для некоторых типов — интерфейсов, строк и динамических массивов задействован механизм подсчёта ссылок. Ни один из этих подходов, вообще говоря, не гарантирует отсутствия утечек памяти, но, с другой стороны, проблема отзывчивости не актуальна, временные издержки управления памяти малы, и, что важнее, очевидны. Также, при отсутствии утечек, общий объём задействованной оперативной памяти существенно меньше, чем у аналогичных приложений, полагающихся на сборщик памяти

История языка

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

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

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

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

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

Язык программирования delphi для чего. Смотреть фото Язык программирования delphi для чего. Смотреть картинку Язык программирования delphi для чего. Картинка про Язык программирования delphi для чего. Фото Язык программирования delphi для чего

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

Вышедшая в 2013 году версия Delphi XE5 обеспечила кросс-компиляцию приложений для устройств на платформе ARM/Android.

Компиляторы

Синтаксис языка

Система типов

Операторы

Список операторов через пробел: := + — * / div mod not and or with xor shl shr ^ = <> >= @ in is as

Операторы as и is применяются к типам, допускающим полиморфное поведение — экземплярам класса и интерфейсам. Первый приводит безопасное(в смысле невозможности неверной интерпретации) приведение типа, а второй тестирует поддержку экземпляром класса или интерфейсом некоторого класса или интерфейса. Нужно помнить, что в отличие от языка C# неудавшееся приведение типа оператором as возбуждает исключение.

Оператор ^ разыменовывает указатель. Оператор @ выполняет обратное действие, возвращая адрес переменной. Поддерживается простые операции сложения и вычитания над типизированными указателями, с учётом размера типов, на которые они указывают (умная арифметика указателей).

Классы

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

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

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

Инкапсуляция

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

Наследование

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

Полиморфизм

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

Примеры

Структура программы

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

Пример № 1

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

Пример № 2

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

Пример № 3

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

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

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

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

Критика

Критика языка на ранних этапах развития

Хотя пример выше искусственен, он иллюстрирует парадигму локальных переменных в C++(равно как и в унаследованных от него C# и Java), где возможно объявление в рамках блока, причем такое объявление допустимо совместить с инициализацией значением. В более поздних версиях С++ возможно также и выведение типа такой переменной из выражения-инициализатора.

В Delphi объявление локальной переменной всегда предшествует первой инструкции кода функции, причем инициализация локальных(стековых) переменных в месте объявления не допускается. Очевидно, невозможен также и вывод типа.

Нововведения для компиляции на мобильные платформы

Со времен Pascal исторически сложилось, что встроенный строковый тип индексировался с базой в единицу: «нулевой» элемент строки возвращал длину строки. По мере введения новых («длинных» и «юникодных») строковых типов данный порядок индексации сохранялся, обеспечивая почти бесшовный перенос кодовой базы на обновленные версии языка. Однако с введением nextgen-компиляции, парадигма изменилась: в новых компиляторах строки стали индексироваться по нулевой базе, как и в семействе С-подобных языков(C++, C#, Java), при этом в «классических» компиляторах для Windows и Mac OS, парадигма единичной индексации была сохранена.

Исторически, классы и их экземпляры являются неявно-ссылочными структурными типами. Тем не менее, управление временем жизни экземпляра класса изначально выполнялось вручную — посредством явного вызова конструктора и деструктора (либо метода Free() ), и такая особенность сохраняется (по состоянию на 2018 год) в классических версиях компиляторов. Подсчёт ссылок работал лишь для классов, реализующих интерфейсы, и притом, в том только случае, когда манипуляции с такими классами производились посредством переменных интерфейсного типа.

Однако, компиляторы для мобильных платформ ввели подсчёт ссылок для всех экземпляров классов, тем самым в корне изменив парадигму управлением временем жизни объектов, поскольку «ручное» управление практически (за исключением некоторых весьма продвинутых техник) несовместимо с новой парадигмой.

В результате этого, не только была сломана совместимость с обширным багажом унаследованного кода, но и была затруднена разработка единого кода для для всех поддерживаемых платформ. Как уже было указано ранее, для написания «универсального» для обеих парадигм исходного кода с использованием классов требуется глубокое понимание особенностей реализации этих парадигм.

Трудно представить нужду в подобном переходе, не говоря уже о различной трактовке исходного кода в зависимости от выбранной целевой платформы.

Источник

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

Язык программирования delphi для чего. Смотреть фото Язык программирования delphi для чего. Смотреть картинку Язык программирования delphi для чего. Картинка про Язык программирования delphi для чего. Фото Язык программирования delphi для чего

Язык программирования delphi для чего. Смотреть фото Язык программирования delphi для чего. Смотреть картинку Язык программирования delphi для чего. Картинка про Язык программирования delphi для чего. Фото Язык программирования delphi для чего

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

Содержание

Целевая платформа

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

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

История языка

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

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

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

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

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

Язык программирования delphi для чего. Смотреть фото Язык программирования delphi для чего. Смотреть картинку Язык программирования delphi для чего. Картинка про Язык программирования delphi для чего. Фото Язык программирования delphi для чего

Язык программирования delphi для чего. Смотреть фото Язык программирования delphi для чего. Смотреть картинку Язык программирования delphi для чего. Картинка про Язык программирования delphi для чего. Фото Язык программирования delphi для чего

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

Компиляторы

Синтаксис языка

Операторы

Список операторов через пробел: := + — * / div mod not and or with xor shl shr ^ = <> >= @ in is as

Язык программирования delphi для чего. Смотреть фото Язык программирования delphi для чего. Смотреть картинку Язык программирования delphi для чего. Картинка про Язык программирования delphi для чего. Фото Язык программирования delphi для чего

Выражения

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

Основные логические выражения:
Логические выражения в основном употребляются в условных операторах. К логическим выражениям относятся такие операции как:

Язык программирования delphi для чего. Смотреть фото Язык программирования delphi для чего. Смотреть картинку Язык программирования delphi для чего. Картинка про Язык программирования delphi для чего. Фото Язык программирования delphi для чего

Типы данных

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

Объекты

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

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

Классы

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

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

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

Инкапсуляция

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

Наследование

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

Полиморфизм

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

Примеры

Структура программы

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

Пример № 1

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

Пример № 2

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

Пример № 3

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

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

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

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

Примечания

Литература

Ссылки

Clascal • Concurrent Pascal • Delphi • Pascal • Object Pascal • Oxygene • SuperPascal

C/AL • Delphi • Delphi Prism (Oxygene) • FrameworkPascal • HP Pascal • IP Pascal • PocketStudio • Prospero Pascal

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *