Pull to refresh
28
0
Геннадий Малинин @HemulGM

Программист Delphi

Send message

Самая актуальная версия Делфи - это вышедшая в этом году 12.3. И выходит каждые пол года. Обновляют и язык и среду и фреймворки, которых из коробки теперь 2: старый добрый vcl и кроссплатформенный fmx.

Визуальное программирование (Delphi, VB): ускорило разработку форм, но не заменило код.

Delphi никогда не был про визуальное программирование. В нем нет визуального программирования. Никогда нельзя было описать логику визуально и сейчас тоже нельзя. Да, есть редактор форм, есть визуальные биндинги, есть UML (устарело, выпилено и в вообще основном ридонли был), есть невизуальные компоненты, есть редактор стилей, но визуального программирования нет и никогда не было.

Delphi позволяет сократить спагетти код, который вы вынуждены сейчас писать в Питоне для GUI, хотя и для этой проблемы есть инструменты, например, Qt Designer для pyqt и других qt биндов. К слову, существуют бинды (официальные) для Питона и для совместной работы с Делфи редактором и фреймворками VCL и FMX.

Delphi - это про rapid разработку. И инструменты в нем именно для этого, а не для визуального программирования. Ты можешь создать и оформить окно быстро и наглядно, настроить какие-то компоненты. Но без кода работать будут только простые вещи, которые решаются и так одной строкой. Т.е. просто избавить себя от рутины и совершения опечаток в коде.

А в чем проблема? По какой причине не нужно писать именно на Паскаль?

HaoZip, под Винду очень удобен. И с rar работает и вообще полностью с него слизан

Ведь Delphi-то в облако не засунешь

Без проблем засовывается, хоть через докер

Её и запустили без доработок по сути. Выпилили только код, который мог работать только на 16 бит

Всё что я показал на скринах, сделано штатными средствами. Без каких-либо сторонних компонентов. И без переписывания чего-либо.

Среда разработки платная как и VS, и такая же бесплатная как и VS. Т.е. для коммерческой и не коммерческой разработки есть версии.

Нет, стили в FMX это не аналог CSS, просто приведен как быстрый способ понять, что такое стили и что стили - это не "шкурки". В FMX просто применяется принцип разделения данных от представления. Работают иначе, возможности другие. Например, стили НЕ влияют на поведение контрола и НЕ виляют на его положение, они влияют лишь на его вид. В CSS/HTML всё в перемешку. Где-то там задано расположение, где-то там.

Ну и эта IDE и её возможности появились задолго до Qt Creator, в том числе дизайнер фреймворка FMX. Так что это не RAD Studio похожа на Qt Creator, а Qt Creator ооочень похож на RAD Studio

И как я уже сказал, стили в FMX создаются тоже через дизайнер, а не кодом. Статью даже недавно писал. https://habr.com/ru/articles/833804/

Используется частичная перерисовка. Например, если контрол изменился, он отправляет InvalidateRect(BoundsRect). И при перерисовке окна будет задета только эта часть. Тень и другие эффекты кешируются в bitmap. Между кадрами набирается кучка прямоугольников для отрисовки, объединяется в регион и перерисовывается.

Но если интересует производительность, то касаемо её есть пока проблемы. Проблемы связаны с тем, как рассчитывается "видимость" контрола. К сожалению, сейчас родительский контрол имеет приоритет при расчете, это значит, что если у нас в скроллбоксе находится, например, большой слой с контролами, то весь слой целиком будет перерисовываться внутри скрола, если даже всего часть контролов в слое видна. По этому стоит в скролл добавлять небольшие элементы (дробить).

Ещё есть просадка производительности при отрисовке Emoji в тексте, с чем связано - пока не выяснял. Но это зависит от графического бэкенда (их много).

Главная мысль была всё же именно в том, что выглядеть красиво могут приложения и без веба. Но я отвечу и на ваши вопросы.

готов посмотреть исходники этих проектов

А собственно в этом и есть скорость создания UI. Тут нет исходников, точнее есть разметка, которая получена в результате дизайна, но генерируемая автоматически. Т.е. в примере приложения Strato (это музыкальный плеер, который организует и воспроизводит музыку с вашего Google Drive, при чем не требует ввода пароля, а использует внешний пользовательский браузер для OAuth2), я не написал ни строчки кода связанного с GUI.

Кода нет

Ссылка на коммит этого приложения, UI которого выглядит как на скрине в прошлом комментарии.

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

Тратить время нужно на любой инструмент, в особенности на новый. Т.к. я владею языком, где этот фреймворк идет по умолчанию, мне не составило большого труда его изучить. Я не буду вам втюхивать Delphi, т.к. мой комментарий всё же был именно о конечном результате, а вы вряд ли будете рассматривать его использование. Но если в кратце, то здесь используется кроссплатформенный фреймворк FMX, который имеет дизайнер окна и дизайнер стиля (что-то вроде CSS). И алгоритм такой:
1. Создаем окно
2. Добавляем элемент (например кнопку)
3. Открываем дизайнер стилей и создаем представление этой кнопки (с помощью примитивов (фигуры, svg, path, картинки), шейдеры, анимации, триггеры или другие контролы)
4. Назначаем кнопке созданный стиль
Готово. Всё это визуально, в реалтайме. В стиле могут быть другие контролы со своим стилем. Функционал контрола остается за самим контролом. Набор стилей может быть общим между окнами, между проектами и вообще может быть загружен/заменен/изменен динамически.

Ещё есть пример плавной смены стиля на другой.

Ну GUI приложения без современного веба выгледят как приложения для windows xp в 2004м

Это заблуждение.

Приложение без веба. Кроссплатформенное. 1
Приложение без веба. Кроссплатформенное. 2
Приложение без веба. Кроссплатформенное. 3
Приложение без веба. Кроссплатформенное. 4
Приложение без веба. Кроссплатформенное. 5
Приложение без веба. Кроссплатформенное. 6

И это только мои примеры.

Здесь всё векторное, что означает, что качество картинки будет только улучшаться с увеличением DPI. Все примеры кроссплатформенные. В примерах нет никакого WebView или даже намека на HTML/CSS или QML. И всё это (визуал) создается буквально за день

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

Освобождение памяти в каких-то случаях тоже выполняется автоматом, но уж не помню, в каких

Освобождаются объекты только если они интерфейсные объекты, т.е. работают через RefCount.

Сильно ограничены возможности переопределения операций по сравнению с це++

Есть такая возможность. И не только переопределить, но и перегрузить.(док)

Про шаблоны действительно не стоит говорить, потому что шаблоны - это шаблоны, а дженерики - это дженерики. Шаблонов нет и не стоит их даже добавлять. А вот дженерики отлично вписались в синтаксис.

Реализация строк в Delphi такая, что я не задумываюсь он ней. И для всех строк использую string. В любых ситуациях, с любыми кодировками и т.д.

По-моему язык развивается так как нужно. И Джавы в нем я не наблюдаю. Что именно по-вашему там не так?

Не соглашусь, Pascal 70 года и Object Pascal (86 год) кардинально друг от друга отличаются, сильнее, чем C от C++. Не говоря уже о том, что Object Pascal основан на Clascal (Паскаль для Apple). Т.е. между ними даже отдельная итерация языка есть. Ну а Delphi ещё дальше ушел от Object Pascal. Настолько, что нет даже обратной совместимости. Т.е. старый код вполне может не компилироваться в новых версиях.

Delphi такой же молодой язык как и C#, как минимум моложе Питона (1995 и 1991 год соответственно). Также регулярно обновляется и также позволяет сборку под arm и другие процессоры.

Да собственно для всего. Всё что пишут на других языках пишется и на Delphi. Включая даже возможность создавать фронтенд (pas2js). Только помимо производительности кода мы имеем и полноценный дизайнер окон. Замечу, что и кроссплатформенный GUI софт (Win/Linux/Mac/Android/iOS) тоже можно создавать. Причем для мобильных платформ существует и отдельный фреймворк для нативного GUI.

Что-то типа:

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

"Всегда передавались" - в значении "всегда могли передаваться". Потому что они могут передаваться по ссылке и сейчас.

1
23 ...

Information

Rating
4,147-th
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity

Specialization

Software Developer, Fullstack Developer
Senior
From 180,000 ₽
Delphi
SQL
Database
Git
REST
C#
Python
OOP
MySQL
PHP