Программист 1С

17 дней назад с
Консультант-программист 1С
день назад с
Java-разработчик (middle middle+)
2 дня назад с
Руководитель группы java разработчиков
217 750
326 625
11 дней назад с
217 750
326 625
Python-разработчик
23 дня назад с
Выбери — как получать новые вакансии по запросу «программист delphi»
Мы отправили на твою почту ссылку для активации
Письмо активации не пришло — проверь «Спам».
Пожалуйста, добавь наш Email-адрес в список контактов, чтобы мы больше не терялись
Вопросы и ответы
✉️ Как связаться с работодателем по вакансии программист delphi?
Открой вакансию и нажми на кнопку «Откликнуться» под заголовком выбранной вакансии — заполни форму быстрого отклика или выбери резюме из списка и отправь работодателю.
Чтобы откликнуться с резюме — его сначала нужно создать на нашем сайте и выбрать режим видимости «Доступно всем» или «Доступно только зарегистрированным работодателям».
📞 Не могу найти контакты работодателя — где искать?
Чтобы увидеть контакты работодателя — нажми кнопку «Показать телефон» под заголовком вакансии.
Пожалуйста, обрати внимание на источник вакансии. Если хочешь оставить отклик на объявление нашего партнёра (например, hh.ru), сначала зарегистрируйся на сайте источника.
✍ Как разместить вакансию?
Чтобы разместить новую вакансию программистом delphi — нажми кнопку «Разместить вакансию» на главной странице
или перейди по ссылке. Это абсолютно бесплатно.
💼 Как создать резюме в России?
Чтобы создать резюме для поиска работы — нажми кнопку «Создать резюме» на главной странице или перейди по
ссылке.
📈 Как получать свежие вакансии для работы программистом delphi?
Сколько зарабатывает Программист Delphi в России?
По данным ГородРабот.ру, средняя зарплата Программиста Delphi в России за 2023 год ‒ 114 274 рубля. За месяц заработная плата не изменилась и составляет 114 274 рубля. А чаще всего в вакансиях встречается зарплата 100 000 рублей (модальная).
Как мы считали?
Мы считаем среднюю, медианную и модальную зарплаты на основе российских вакансий. Наша статистика показывает предложения работодателей, а не реальные зарплаты, которые получают работники с учётом премий, надбавок и переработок. Мы включаем в расчёты все вакансии с любым типом занятости: стажировка, вахта, временная работа, полная занятость.
Зарплата
для профессии «Программист Delphi» в России
- Средняя заработная плата в России — 114 274 рубля
Средний показатель всех зарплат в вакансиях сайта - Медианная заработная плата в России — 77 500 рублей
Средний показатель без учёта самых высоких и самых низких зарплат - Модальная заработная плата в России — 100 000 рублей
Самая частая сумма зарплаты в вакансиях сайта
Топ-10 городов по количеству вакансий
Лидеры по количеству вакансий Программиста Delphi в России: Москва, Санкт-Петербург, Самара.
Вам может быть интересно

22 часа назад с
zarplata.ru (зарплата ру)
Разработчик баз данных / программист Delphi
3 дня назад с
hh.ru (ООО “Хэдхантер”)
Программист-Разработчик Delphi / Oracle / Разработчик CRM
4 дня назад с
hh.ru (ООО “Хэдхантер”)
Программист 1С (ОЦО)
Найдено резюме в открытом доступеВсего в базе . Чтобы увидеть все резюме и фото соискателей — зарегистрируйтесь
61 годстаж 22 года и 10 месяцев
Английский язык — технический
Июль 2020 – февраль 2023 (2 года и 8 месяцев)
Ведущий инженер-. управление заказных работ департамента решения bi и отчетность центрального офисаОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ “ДИАСОФТ СИСТЕМЫ”
57 летстаж 22 года и 11 месяцев
Английский язык — разговорный
Октябрь 2021 – август 2022
ООО “СК “Согласие”
Москва, готов к переезду: , и ещё 3 города
Январь 2010 – работает сейчас (13 лет и 2 месяца)
43 годастаж 18 лет и 6 месяцев
Сентябрь 2004 – работает сейчас (18 лет и 6 месяцев)
40 летстаж 9 лет и 5 месяцев
Май 2012 – сентябрь 2021 (9 лет и 5 месяцев)
Киви банк (АО)
32 годастаж 11 лет и 8 месяцев
Июль 2011 – работает сейчас (11 лет и 8 месяцев)
Апрель 2021 – март 2022
Английский язык — базовый
56 летстаж 15 лет и 8 месяцев
Июль 2007 – работает сейчас (15 лет и 8 месяцев)
Вакцинирован(а). Есть сертификат
Обновлено 22 декабря 2022
36 летстаж 17 лет и 1 месяц
Английский язык — cвободное владение и
Май 2013 – работает сейчас (9 лет и 10 месяцев)
У соискателя еще 5 резюме, показать
Обновлено 12 декабря 2022
52 годастаж 4 года и 6 месяцев
Октябрь 2014 – февраль 2017 (2 года и 5 месяцев)
52 консультативно-диагностический центр Минобороны России, http://www.52kdc.ru/
У соискателя еще 1 резюме, показать
42 годастаж 20 лет и 1 месяц
Москва, готов к переезду: , и ещё 5 городов
Март 2021 – работает сейчас
global printing systems
46 летстаж 21 год и 5 месяцев
Сентябрь 2020 – работает сейчас (2 года и 6 месяцев)
Ведущий баз данныхООО “АВТОМАТИКА плюс”
59 летстаж 30 лет и 4 месяца
Январь 2018 – апрель 2018
Банковский производственный центр (BPC)
Готов(а) к вакцинации
62 годастаж 31 год и 5 месяцев
Сентябрь 2006 – работает сейчас (16 лет и 6 месяцев)
Oracle, , переводчик
55 летстаж 22 года и 1 месяц
Февраль 2001 – работает сейчас (22 года и 1 месяц)
Обновлено 17 октября 2022
27 летстаж 2 года и 8 месяцев
Март 2019 – май 2021 (2 года и 3 месяца)
НПО Бизнес системы
Обновлено 13 октября 2022
Май 2019 – работает сейчас (3 года и 10 месяцев)
Октябрь 2021 – работает сейчас (1 год и 5 месяцев)
ООО “КУБ ТРИ”
Обновлено 15 сентября 2022
38 летстаж 17 лет и 3 месяца
Сентябрь 2019 – март 2022 (2 года и 7 месяцев)
Обновлено 5 сентября 2022
45 летстаж 26 лет и 9 месяцев
Декабрь 2019 – работает сейчас (3 года и 3 месяца)
Главный инженер по разработке
Обновлено 1 сентября 2022
61 годстаж 35 лет и 6 месяцев
Тольятти, готова к переезду: , и ещё 4 города
Март 2014 – работает сейчас
Тольяттинский государственный университет
53 годастаж 35 лет и 8 месяцев
Английский язык — базовый и
Январь 2020 – работает сейчас (3 года и 2 месяца)
Обновлено 11 октября 2022
60 летстаж 24 года и 8 месяцев
Декабрь 2017 – работает сейчас (5 лет и 3 месяца)
Москва, и
Январь 2022 – работает сейчас (1 год и 2 месяца)
41 годстаж 13 лет и 2 месяца
Рыбинск, готов к переезду: , и ещё 3 города
Март 2019 – май 2022 (3 года и 3 месяца)
Ведущий инженер-электроник группы по корпоративной защитеООО “Газпром межрегионгаз Ярославль”
31 годстаж 4 года и 5 месяцев
Воронеж, готов к переезду: , и ещё 5 городов
Июнь 2022 – работает сейчас
Full stack PHP ООО АЙТИ ПРО
35 летстаж 2 года и 4 месяца
Август 2016 – ноябрь 2016
Балашихинский литейно-механический завод
У соискателя еще 4 резюме, показать
- Работа для студентов
- Cписок компаний по индустриям
- Зарплаты по профессиям
- Каталог кадровых агентств
Мы используем cookies, чтобы улучшить сайт для вас.
Когда-то давно мы рассказывали о том, почему в школе до сих пор иногда преподают Паскаль, которому уже почти 40 лет. А сегодня будет рассказ про Delphi — язык, который родился из Паскаля и который развивается так же быстро, как эта серия статей.
Что такое Delphi
Delphi — это современное продолжение языка Turbo Pascal. На Delphi можно писать программы для всех операционных систем, включая мобильные, а также для всех популярных типов процессоров — x86 и ARM.
Чтобы оценить прогресс в развитии языка, сравните среду разработки Turbo Pascal и Delphi:


Типизация и переменные
Delphi — это высокоуровневый язык программирования со строгой статической типизацией и объектно-ориентированным подходом:
- Высокоуровневый — это значит, что в нём используется не машинный код, а команды, удобные для программиста.
- Строгая типизация означает, что в Delphi не получится присвоить строке числовую переменную, как в JavaScript. Получить число из строки тоже не выйдет — нужно будет использовать команды приведения типов.
- Статичная типизация: если программист объявил переменную X как число, то работать с этой переменной можно будет только как с числом на протяжении всей программы. Это надёжнее, чем когда в языке есть возможность менять типы по ходу работы.
- Объектно-ориентированный — то есть язык поддерживает объекты и даёт возможность использовать все их свойства: инкапсуляцию, наследование и полиморфизм. Читайте об этом в нашем цикле про ООП.
Визуальная среда разработки
Главная мощь Delphi — интегрированная среда разработки. Это похоже на конструктор сайтов, когда мы выбираем подходящие элементы и перетаскиваем их на страницу. В Delphi всё работает точно так же: есть панель компонентов, сгруппированных по типам и возможностям, а программист перетаскивает их на интерфейс программы.
У каждого компонента есть свойства и события — разработчик их настраивает в отдельной панели или прямо в коде. Например, можно сделать так:
- Найти на панели компонент «Кнопка».
- Перетащить его в нужное место в интерфейсе будущей программы.
- В панели свойств поменять название, цвет кнопки, шрифт надписи и размеры.
- В той же панели привязать к кнопке событие onClick, которое сработает при нажатии мыши на кнопку.
- Прописать в коде, что будет выполняться внутри этого события, например, появление окна справки или вызов другой функции.
Пример кода
Если вы знаете Паскаль, то легко разберётесь в том, что происходит в этом коде. А если нет, но знаете любой другой язык программирования, — то тоже разберётесь, потому что синтаксис Delphi максимально простой и понятный:
// пишем обработчик события, происходящего при создании формы MainForm
procedure TMainForm.FormCreate(Sender: TObject);
// раздел объявления переменных
var
// создаём переменную строкового типа
Strings: TStrings;
// основной код обработчика
begin
// создаём объект типа TStringList.
Strings := TStringList.Create;
// оборачиваем код в обработчик исключений, на случай, если что-то пойдёт не так
try
// добавляем строку
Strings.Add(‘Добавляемая строка.’);
// сохраняем строки в файл
Strings.SaveToFile(‘C:Strings.txt’);
// если всё прошло штатно
finally
// освобождаем память, занятую нашей переменной
FreeAndNil(Strings);
// закончился блок try
end;
// закончился код обработчика
end;
Плюсы и минусы языка
Так как в основе Delphi лежит простой Паскаль, то изучить Delphi с нуля новичку гораздо проще, чем Java или C#. Освоиться в языке можно за пару дней, а уже через неделю можно сделать полноценное приложение.
Ещё Delphi — это кроссплатформенный язык. Это значит, что один и тот же код можно использовать для создания программ, например, на Windows, Linux и MacOS. Такой подход ускоряет разработку и делает её дешевле, но повышает требования к квалификации программистов.
Минусы у Delphi тоже есть:
- Из-за поддержки полной обратной совместимости в Delphi много легаси-компонентов и решений. Они иногда затрудняют разработку и усложняют код.
- Сложно разобраться во всех доступных компонентах — по умолчанию их доступно около 200, и хорошо бы знать, за что они отвечают и как работают.
Что сейчас пишут на Delphi
Сейчас программами на Delphi пользуются в основном банки, бухгалтерский сектор, организации систем учёта и госкомпании. Это связано с тем, что в Delphi легко создать простой интерфейс для работы с большим количеством данных — он будет выглядеть примерно как интерфейс старого 1С, но гарантированно будет работать в любых условиях.
Большинство вакансий разработчиков Delphi — это как раз поддержка и оптимизация старого кода. Такого кода и таких компаний много, переписать всё с нуля дорого, поэтому спрос на Delphi-программистов будет ещё долго. Но в количественном отношении программистов на JavaScript, C или Python требуется гораздо больше, чем на Delphi.
С другой стороны, современные возможности Delphi позволяют ей пользоваться как основной системой для разработки программ для любой архитектуры и ОС. Вот несколько примеров известных программ, написанных на Delphi:
- Skype (до того, как его купила Microsoft);
- почтовая программа The Bat!
- Guitar Pro (до шестой версии);
- AIMP — популярный медиаплеер для Windows;
- Inno Setup — программа-установщик для Windows, один из самых популярных сейчас установщиков.
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 8 марта 2020 года; проверки требуют 36 правок.
У этого термина существуют и другие значения, см. Delphi.
НазначениеПравить
Среда предназначена для быстрой (RAD) разработки прикладного ПО для операционных систем Windows, Linux, Mac OS X, а также iOS и Android. Благодаря уникальной совокупности простоты языка и генерации машинного кода позволяет непосредственно, и, при желании, достаточно низкоуровнево взаимодействовать с операционной системой, а также с библиотеками, написанными на C/C++. Созданные программы независимы от стороннего ПО, как Microsoft .NET Framework или Java Virtual Machine. Выделение и освобождение памяти управляется в основном пользовательским кодом, что, с одной стороны, ужесточает требования к качеству кода, а с другой — делает возможным создание сложных приложений с высокими требованиями к отзывчивости (работа в реальном времени). До версии 10.4 в кросс-компиляторах для мобильных платформ предусмотрен автоматический подсчёт ссылок на объекты, облегчающий задачу управления их временем жизни.
ПроизношениеПравить
В марте 2007 года CodeGear выпустила среду разработки Delphi for PHP, предназначенную для разработки веб-приложений на языке программирования PHP. Теперь среда Delphi ориентирована не только на язык Delphi. Были выпущены 1-я и 2-я версии, после чего Delphi for PHP была переименована в RadPHP XE (по сути 3-я версия), затем RadPHP XE2, и с выпуском Delphi XE3 этот продукт сильно переработан и назван HTML5 Builder.
Delphi for. NETПравить
Delphi for .NET — среда разработки Delphi, а также язык Delphi, ориентированные на разработку приложений для .NET.
Первая версия полноценной среды Delphi для .NET — Delphi 8. Среда позволяет писать приложения только для .NET.
В Delphi 2005 можно писать приложения для .NET, используя стандартную библиотеку классов .NET и VCL для .NET. Среда позволяет писать .NET-приложения на C#. Delphi 2005 также позволяет писать обычные приложения с использованием библиотек VCL и CLX.
Delphi 8, 2005, 2006 используют .NET Framework версии 1.1. Delphi for .NET 2007, включённая в состав CodeGear RAD Studio 2007, разработана для .NET Framework 2.0.
Delphi PrismПравить
Delphi Prism — среда разработки под .NET и Mono на языке Oxygene, использующая Visual Studio Shell (с возможностью интеграции в Visual Studio).
Сайты и ресурсы
- Линия продуктов Delphi (рус.) на сайте Embarcadero
- Torry’s Delphi Pages — сборник компонент для Delphi (англ.)
- Справочник «Основы Delphi» (рус.)
- Мастера DELPHI (рус.)
- DelphiFeeds.ru — все русскоязычные Delphi-блоги (рус.)
- DelphiFeeds.com — все англоязычные Delphi-блоги (англ.)
- Delphi Sources — программирование на Delphi, более 800 примеров, статьи, форум, FAQ (рус.)
- DRKB — русская база знаний по Delphi (рус.)
- Что нового в Delphi — список изменений в текущей версии (рус.)
- Почему название «Delphi»? (англ.)
- Delphi 2010 — обзорная статья (рус.)
Эта статья — о языке программирования. Об интегрированной среде разработки см. Delphi (среда разработки).
Целевая платформаПравить
Изначально среда разработки Delphi была предназначена исключительно для разработки приложений Microsoft Windows, затем был реализован вариант для платформ Linux (под торговой маркой Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и вскоре было объявлено о поддержке Microsoft .NET, которая, в свою очередь, была прекращена с выходом Delphi 2007.
Независимая, сторонняя реализация среды разработки проектом Lazarus (Free Pascal, в случае компиляции в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, macOS и Windows CE.
Также предпринимались попытки использования языка в проектах GNU (например, Notepad GNU) и написания компилятора для GCC (GNU Pascal).
Используется для написания интернет сервисов IIS.
Философия и отличия от популярных прикладных языков программированияПравить
При создании языка (и здесь качественное отличие от языка C) не ставилось задачи обеспечить максимальную производительность исполняемого кода или лаконичность исходного кода для экономии оперативной памяти. Изначально язык ставил во главу угла стройность и высокую читаемость, поскольку был предназначен для обучения дисциплине программирования. Эта изначальная стройность в дальнейшем, как по мере роста аппаратных мощностей, так и в результате появления новых парадигм, упростила расширение языка новыми конструкциями.
Так, сложность объектного C++, по сравнению с C, выросла весьма существенно и затруднила его изучение в качестве первого языка программирования, чего нельзя сказать об Object Pascal относительно Pascal.
Ниже перечислены некоторые отличия синтаксических конструкций Delphi от семейства C-подобных языков (C/C++/Java/C#):
В С-подобных языках программирования в качестве входа обычно используется глобальная функция или статический метод с именем main и определённым списком параметров, причём такая функция может быть расположена в любом из файлов исходного текста проекта.
И хотя к настоящему времени обе эти практики − использование нескольких идентификаторов, различающихся лишь регистром, равно как и чрезмерная их лаконичность, осуждены и не рекомендованы к применению, практически все унаследованные от С языки − C++, Java, C# − являются регистро-зависимыми, что, с одной стороны, требует достаточно большой внимательности к объявлению и использованию идентификаторов, а с другой — принуждает писать более строгий код, когда каждая переменная имеет чётко определённое имя (вариации регистра могут вызвать путаницу и ошибки).
В C# и Java такое разделение утрачено вовсе − реализация метода, как правило, следует сразу же после его объявления. Инкапсуляция обеспечивается лишь принадлежностью метода к той или иной области видимости. Для просмотра одной только интерфейсной части модуля исходного кода используются специальные средства.
Тем сложнее в C#/C++ выглядят такие конструкции, как объявление типа «указатель на метод»: //C++: объявление типа pCalc, указателя на функцию-член, принимающую два целочисленных параметра и возвращающую целочисленный результатВ вышеуказанном примере объявление типа отличается от объявления переменной ключевым словом typedef, имя типа, pCalc, указывается в середине выражения, в скобках. //C#: объявление типа pCalc, указателя на функцию-член, принимающую два целочисленных параметра и возвращающую целочисленный результатВ вышеуказанном примере объявление типа отличается от объявления переменной специальным ключевым словом delegate, имя типа указывается в середине выражения.
В вышеуказанном примере объявление типа отличается от объявления переменной специальным ключевым словом type, применением знака равенства (в случае переменной используется двоеточие), имя типа идёт сразу после ключевого слова.
В вышеуказанном примере фигурные скобки обозначают составную инструкцию, то есть блок инструкций. Поскольку в команде ветвления для одной инструкции допускается выражение без фигурных скобок, то для условного выражения круглые скобки обязательны. В сложных условных выражениях количество вложенных скобочных конструкций может быть велико.
// код, состоящий из нескольких инструкций
(* код, состоящий из одной инструкции *)
В Delphi условное выражение всегда отделяется от следующей инструкции ключевым словом then, что избавляет от необходимости заключать условие в круглые скобки.
В Delphi циклы с предусловием и постусловием различаются сильнее: конец цикла с постусловием труднее принять за начало цикла с предусловием. Но порой такое различие может вызвать путаницу (необходимо помнить, что в цикле until указывается условие выхода). //условием продолжения цикла является истинность выражения, следующего за словом while, как C/C#
//начало цикла с постусловием
//истинность выражения, следующего за словом until – это условие ВЫХОДА из цикла, в отличие от C/C#
В Delphi подобная ошибка невозможна хотя бы уже потому, что присваивание в этом языке — операция, не возвращающая значения.
Язык C# принудительно объектен. Глобальные, без привязки к классу, функции запрещены. Value-типы, наподобие структур struct, унаследованы от общего типа C#, несмотря на то, что сами по себе они не могут быть унаследованы (то есть, наследование структур в C# запрещено). Вместе с тем, экземпляры классов C# являются неявно-ссылочными типами, как и в Delphi.
Поскольку системные вызовы в Windows (как, впрочем, и в POSIX-системах наподобие Linux, Mac OS) формально необъектны, взаимодействие C#-кода с ними затруднено даже без учёта разной парадигмы управления временем жизни переменных в памяти. Delphi не имеет подобных ограничений.
Несмотря на такую акцентированную на объектность парадигму, в C# отсутствует понятие виртуального конструктора, то есть создания экземпляра класса, точный тип которого на этапе компиляции неизвестен, а известен лишь базовый класс этого экземпляра. Отчасти этот недостаток может быть скомпенсирован посредством интерфейсов или reflection, однако подобные решения не являются стандартными для языка.
// возвращает биологический вид животного
// метакласс, могущий ссылаться на любой класс, унаследованный от TAnimal
// функция не знает, животное какого именно вида будет создано, хотя “кличка” известна. Конкретная реализация вида скрыта.
Кроме того, в отличие от C# и C++, где вызов конструктора базового класса непременно осуществляется ещё до входа в тело конструктора унаследованного класса, в Delphi этот вызов делается явно. Таким образом, его можно отложить или вовсе опустить в специальных целях. Очевидно, в отличие от C#, возможен контроль над исключениями в базовых конструкторах.
Таким образом, для динамического вызова из класса D метода класса A, переопределённого в B, потребуется выполнить поиск в таблицах методов классов D, A и B.
Подобная оптимизация имеет своей целью уменьшение размера статической памяти, занимаемой под таблицы методов. Экономия может быть существенна для длинных иерархий классов с очень большим количеством виртуальных методов. В C-подобных языках динамические полиморфные вызовы не применяются.
Также Delphi допускает перекрытие любого конкретного виртуального метода базового класса абстрактным в классе-потомке:
// метод A имеет реализованное тело в разделе implementation
// метод перекрыт как абстрактный, тела не имеет,
// и при этом перекрывает (скрывает) реализованный в базовом классе
// мы создали класс с абстрактным методом
// вызов A полиморфный, и мы получаем исключение типа EAbstractError, пытаясь выполнить абстрактный метод
Метод доступа в C# всегда относится к одному, и только к одному свойству, тогда как для Delphi это утверждение, вообще говоря, неверно. Более того, один и тот же метод может быть использован для реализации доступа к существенно различным свойствам:
Как Delphi, так и C# допускают использование индексируемых свойств: в этом случае синтаксис доступа к такому свойству аналогичен доступу к элементу массива. Однако, если в Delphi число индексируемых свойств, равно как и число индексаторов, может быть произвольным, в C# индексатор применим лишь к специальному свойству по умолчанию. Кроме того, в Delphi свойство по умолчанию не только может быть индексируемым, также оно может быть перегружено по типу индексатора:
Преимущества и недостатки сборки мусора
Платформы .NET и Java значительно упростили разработку программ за счёт введения «сборщика мусора», который разрешает программисту не заботиться о высвобождении памяти, занимаемой объектами, которые вышли из области видимости работающего кода программы. Это, с одной стороны, значительно уменьшило проблему так называемых «утечек памяти» (когда уже ненужные, — и недостижимые по причине утраты адреса данные занимают оперативную память), но, с другой стороны, потребовало от платформы реализовать сложный и ресурсоёмкий алгоритм «сборки мусора» — который традиционно реализован как нахождение достижимых объектов и высвобождение остальных. На практике, чтобы выполнить исчерпывающий анализ достижимости объектов, сборщик мусора в некоторые моменты времени приостанавливает работу программы (всех её потоков), что приводит к кратковременной потере отзывчивости. Частота и длительность таких остановок напрямую зависит от объёма доступной оперативной памяти (пока есть свободная память, сборщик мусора старается не проводить блокирующий анализ), а также от числа задействованных в программе объектов (таким образом, лучше иметь несколько «больших» объектов, чем много — маленьких).
Ситуация ухудшается по мере роста количества задействованных в программе потоков — ведь исчерпывающий анализ достижимости требует полного останова. Таким образом, явная выгода — решение проблемы «утечек памяти» и, в целом, автоматическое управление временем жизни объектов — породила неявную проблему масштабирования и «провалов» производительности. Эта проблема малозаметна в простых программах, но по мере роста сложности и объёма кодовой базы становится всё более острой — то есть на финальном этапе разработки. Сложные программные комплексы, как правило, имеют привязку к реальному времени, так и требования к отзывчивости.
Точнее, когда у сборщика мусора есть в 5 раз больше памяти, чем требуется, его производительность совпадает или слегка превосходит прямое управление памятью. Однако, производительность сборщика мусора быстро деградирует, когда ему требуется работать с небольшими хипами. С 3 размерами требуемой памяти он, в среднем, работает на 17 % медленнее, а с двумя размерами — на 70 % медленнее. Также сборщик мусора более подвержен пейджингу, если память дефрагментирована. В подобных условиях, все протестированные нами сборщики мусора работают на порядок медленнее прямого управления памятью.Drew Crawford — Почему веб-приложения на мобильных платформах работают медленно
В Delphi не существует автоматического управления памятью: (в классических компиляторах языка) экземпляры классов создаются и удаляются вручную, тогда как для некоторых типов — интерфейсов, строк и динамических массивов задействован механизм подсчёта ссылок. Ни один из этих подходов, вообще говоря, не гарантирует отсутствия утечек памяти, но, с другой стороны, проблема отзывчивости не актуальна, временные издержки управления памяти малы, и, что важнее, очевидны. Также, при отсутствии утечек, общий объём задействованной оперативной памяти существенно меньше, чем у аналогичных приложений, полагающихся на сборщик мусора.
История языкаПравить
Object Pascal — результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные свойства, а в Object Pascal — динамическую идентификацию типа данных с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемую интроспекцией — данная технология получила обозначение RTTI. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, после чего воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекцию.
Также отличительным свойством Object Pascal от C++ является то, что объекты по умолчанию располагаются в динамической памяти. Однако можно переопределить виртуальные методы NewInstance и FreeInstance класса TObject. Таким образом, абсолютно любой класс может осуществить «желание» «где хочу — там и буду лежать». Соответственно организуется и «многокучность».
- Версия 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.
Однако в ноябре того же года было принято решение отказаться от продажи 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.
- По умолчанию полная поддержка Юникода во всех частях языка, VCL и RTL; замена обращений ко всем функциям Windows API на юникодные аналоги (то есть MessageBox вызывает MessageBoxW, а не MessageBoxA).
- Обобщённые типы, они же generics.
- Анонимные методы.
- Функция Exit теперь может принимать параметры в соответствии с типом функции.
Вышедшая в 2011 году версия Delphi XE2 добавила компилятор Win64 и кросс-компиляцию для операционных систем фирмы Apple (MacOS X, iOS).
Вышедшая в 2013 году версия Delphi XE5 обеспечила кросс-компиляцию приложений для устройств на платформе ARM/Android.