Визуальное программирование vs DSL
В последнее время набирают популярность low-code и no-code платформы. В них для разработки приложений предлагается использовать визуальное программирование. При таком подходе, разработчики, в качестве которых выступают обычные бизнес-пользователи, вместо написания программного кода создают приложение при помощи мыши в графическом интерфейсе. Также визуальное программирование в некотором виде используется, например, в Конфигураторе 1С.
Однако, возникает вопрос. Какие преимущества дает визуальное программирование по сравнению с Domain Specific Language ? Безусловно это зависит от области применения. С одной стороны, в классических языках визуальное программирование практически не используется. В то же время при разработке графического интерфейса такой подход конечно же имеет много преимуществ. Однако, при создании интерфейсов, например, с помощью популярной библиотеки React все-таки больше используется плоский код.
Плюсы и минусы
В использовании DSL я вижу следующие плюсы :
- Поддержка системы контроля версий. В визуальном программировании значительно менее удобно следить за изменениями в логике программы и решать конфликты в коммитах.
- Возможность копирования/вставки, поиска и замены по текстовым значениям, генерации кода.
В визуальном программировании к плюсам можно отнести следующее :
- Более низкий порог входа. Большинство пользователей умеют нажимать на кнопки, вводить значения в поля и перетаскивать объекты на формах.
- Лучшая наглядность при создании пользовательского интерфейса.
Следует отметить, что DSL и визуальное программирование не являются альтернативами друг друга. При правильном подходе визуальный конструктор может и должен генерировать DSL. В качестве такого языка часто используется XML. Однако, читабельность XML оставляет желать лучшего.
Сфера применения
Одним из главных недостатков визуального программирования все-таки является слишком ограниченная сфера его применения. Да, для создания простых CRUD приложений оно подходит достаточно неплохо. Однако, когда требуется некоторое усложнение логики, то все равно приходится возвращаться к программному коду. Тем самым создается определенный семантический разрыв, когда часть логики создана визуально, а часть при помощи классического кода.
Использование DSL, в свою очередь, позволяет создавать достаточно сложные приложения со значительно меньшими усилиями. Написание кода на специализированным языке может казаться для пользователей сложной задачей. Однако, не стоит забывать, что язык SQL создавался именно для обычных пользователей, и до сих пор используется не только программистами. И если DSL является таким же высокоуровневым как SQL, использует обычные слова вместо специальных символов, то порог вхождения значительно снижается (вот пример одного из таких языков).
Безусловно, для управления “динамическими” системами графический интерфейс подходит значительно лучше, чем текстовый. Например, большинство пользователей все-таки используют графическую оболочку операционных систем, а не командную консоль (хотя для управления серверами, на мой взгляд, консоль местами удобнее). Однако, программы являются более статическими системами. Как правило, изменение работы программ осуществляется регламентно, достаточно редко и могут приводить к другим значительным изменениям (например, миграции данных). И в этом случае значительно повышается важность проверки сделанных изменений, что значительно проще делать именно с плоским программным кодом.
IDE
Одной из отличительных особенностей визуального программирования является то, что разработчик сразу видит все возможности среды разработки. Тем самым ему значительно реже приходится обращаться к документации. С другой стороны, это создает визуальную сложность, тем самым “размывая внимание”. Разработчику сложнее понять, какие именно настройки он изменил, а какие установлены по умолчанию. В плоских файлах все изменения можно легко увидеть при помощи системы контроля версий.
В целом же, использование DSL позволяет создавать значительное более мощные IDE за счет того, что все современные IDE имеют мощные механизмы по разработке плагинов под кастомные языки. Поэтому можно легко создать мощную IDE, значительно более удобную в использовании, чем написанных с нуля IDE для визуальной разработки. Что мы собственно говоря и сделали, получив при этом IDE значительно превосходящую по возможностям тот же Конфигуратор 1С.
Заключение
Разработка стоящего решения на самом деле является самой сложной частью процесса разработки программного обеспечения. Low-code платформы, концентрируясь именно на визуальном программировании, преувеличивают, утверждая, что написание кода — это самое сложное. На самом деле ни одна платформа low-code не избавит вас от необходимости тратить время на правильное проектирование вашего пользовательского программного обеспечения или от последствий, которые вы получите, если будете строить решения на основе плохой архитектуры.
Человек, который сможет более-менее нормально проектировать решения с использованием визуального программирования, без проблем сможет освоить и DSL. При этом, в сложной разработке, плоский код будет ему значительно удобнее по той же причине, почему и в классическом программирование используется именно язык вместо визуального программирования (возможность Copy/Paste, Find/Replace, VCS и т.д.).
В конце хотелось бы упомянуть еще один важный плюс DSL. Скорее всего, в ближайшем будущем, такие языки увеличат популярность по отношению к визуальному программированию, по мере развития технологий AI. Мы пытались обучать ChatGPT своему абсолютно новому языку, и результаты были весьма интересными и перспективными. Вполне возможно, спустя некоторое время, DSL можно будет использовать для автоматической генерации программ на основе требований на естественном языке. Шансов на это значительно больше, чем с классическими языками программирования.
Преимущества систем визуального программирования
ОПТИМАЛЬНАЯ (ИЛИ ОПТИМИЗАЦИОННАЯ) ЗАДАЧА [optimization problem] — экономико-математическая задача, цель которой состоит в нахождении наилучшего (с точки зрения какого-то критерия) распределения наличных ресурсов. (Иногда то же: Экстремальная задача.) Решается с помощью оптимальной модели методами математического программирования, т. е. путем поиска максимума или минимума некоторых функций или функционалов при заданных ограничениях (условная оптимизация) и без ограничений (безусловная оптимизация).
Решение О. з. называется оптимальным решением, оптимальным планом, оптимальной точкой
Система программирования — программная система, предназначенная для разработки программ на конкретном языке программирования. Система программирования предоставляет пользователю специальные средства разработки программ: транслятор, (специальный) редактор текстов программ, библиотеки стандартных подпрограмм, программную документацию, отладчик и др.
Это набор взаимосвязанных методов, необходимых для решении какой то задачи.
Основной функцией явл. Формализовать задачу, что бы ее поняло средство автоматизации. Найти оптимальный способ, позвроляющий с оптимальными затратами автоматизировать тот или иной процесс для средств вычислительной техники.
2. Ускорение обработки данных
3. Ускорение разработки новых прилжений и решения новых задач
4. Оптимизация использ. Выч. И др. тежники для реш задач(по мин)
Визуализация — это процесс графического отображения сложных процессов (в данном случае построения) на экране компьютера в виде графических примитивов (графических фигур). Визуализировать можно абсолютно любые процессы: управления, построения, рисования и т.д.
Средства визуального программирования обычно решают задачи построения пользовательского интерфейса и упрощения разработки приложения путем замены метода ‘написания программы на метод конструирования.
Визуальное программирование бесспорно обладает достоинством наглядного представления информации и гораздо лучше соответствует природе человеческого восприятия, чем методы традиционного, текстового программирования.
Однако практически все визуальные средства нуждаются в дополнении функциями, которые не могут быть представлены в виде графических конструкций и требуют текстового выражения. Визуальные средства дополняются специальными скриптами, написанными на различных языках программирования
При этом средства визуального программирования могут быть использованы по разному. Просто для визуального определения пользовательского интерфейса, который затем встраивается в традиционную программную среду. Более глубоко, для визуального задания и интерфейса и контролирующих интерфейс объектов с одновременным программированием бизнес-логики традиционными методами. Наконец, для полного визуального построения приложения.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями: