Dmitry Astapov (камлатель на ocaml) метко написал на DOU.ua
По моему опыту, проблемы low-code/no-code решений стоят на четырёх китах, которые в свою очередь стоят на черепахе.
Черепаха называется «все-таки, как его не назови, это программирование».
А киты соответственно получаются такие :
Кит первый : composability. С ним обычно все где-то между «нет вообще» и «плохо». Либо нет возможности вынести кусок функциональности в отдельную переиспользуемую сущность. Либо reusable components можно писать исключительно на каком-то «настоящем» языке.
Или какая-то беда с параметрами: параметры «нельзя», либо максимум один, либо передавать только константы, или ещё что-то в этом роде.
Отсюда мы плавно переходим к Киту номер два: беда с моделирование данных. Могут быть проблемы с тем, чтобы в рамках процесса что-то посчитать и сохранить результат (чтобы использовать его два раза). Либо такой возможности нет вообще. Либо из типов данных у тебя только строки. Может быть так, что все данные представлены в виде global или local key-value map, и это единственная структура данных, и начинаются пляски с магическим именами ключей, которые ожидаются в той или иной точке процесса.
Отсюда переходим к Киту номер три: discoverability and namespaces. Имена, создаваемых пользователем(имена процессов, переменных, ключей в key value map) , могут жить в одном глобальном плоском неймспейсе, который со временем превращается в помойку. Если вам дают поиск, то он может быть только по имени (которое вы уже должны знать). Если и есть поиск по телу/атрибутам/чему-то подобному, то он может быть странным, так показать контекст, в котором нашлось искомое, тяжело — это ж не текст, из которого можно вырезать сниппет
Отсюда переходим к Киту номер четыре: редактирование. Если нет нормального поиска — не будет и поиска с заменой. Если нет поиска с заменой — плохо придуманные имена сущностей рискую быть с вами навсегда. Контроль версий может быть, а вот сравнение разных версий или что-то типа diff-а — уже нет. Два человека, которые правят одно и то же, либо ограничены каким-то глобальным mutex-ом, либо рискуют затирать правки друг друга.
Я, честно признаться, уже давненько не брал в руки шашки, но вот я открываю упомянутый в комментариях corezoid и вижу там в tutorial вещи, Киту намекаю, что «все как всегда». Передаём json/kv map, можно интерполировать значения оттуда в строки (если я правильно понял), есть галочка «отослать все наши данные в вызываемый процесс» (привет, магические имена keys?)…
Скажите мне, что я застрял в прошлом, прогресс шагнул далеко вперёд, и state of the art выглядит совсем не так
Программирование без программистов и что мешает ему развиваться