Серия «Программирование без кода»

2

Предпосылки No-code конструктора с предельной унификацией данных

В далекие 70-е годы всё программное обеспечение (ПО) разрабатывалось с нуля, а вычислительные мощности не позволяли создать визуальный конструктор без кода (No-code): он требовал бы на 2-3 порядка больше ресурсов. В 1000 раз больше ресурсов.

Далее, в 80-е, программисты использовали свои же, ранее написанные библиотеки программ. Библиотеки требовали в разы больше ресурсов на единицу полезного вычисления, чем написанный с нуля код. Зато этот подход ускорял разработку также в разы. Конструктор всё ещё требовал бы в 100 раз больше ресурсов, что было непозволительной роскошью.

Затем, в 90-е, программисты стали использовать также и сторонние библиотеки и инструменты разработки. Чужой инструментарий часто был закрыт, решения работали медленнее, страдала совместимость. Тем не менее, использование библиотек ускоряло разработку на порядок-два. Вычислительные мощности росли, поэтому все легко мирились с тем, что их требуется также на 2 порядка больше. Теоретически, конструктор требовал бы в 10 раз больше ресурсов.

В 90-х были последние известные попытки создать унифицированную структуру данных, после чего идея, которая далеко не нова, была признана неработоспособной. Вот один из ярчайших эпизодов тех времен. Причина неудач: разработчик не опускался до деталей низкого уровня, по привычке 80-90-х годов таща за собой библиотеки и стереотипы разработки. Вместо фундаментальной проработки ядра ставка делалась на новейшие технологии.

В 2000-х мы наблюдали прежние темпы роста вычислительной мощности. Библиотеки программ стали шире, мощнее и устойчивее. Скорость разработки уже не росла пропорционально накладным вычислительным расходам, как это было в 70-90-е годы, она так и застыла на уровне 90-х годов.

Расчетная эффективность No-code и традиционной разработки сравнялась в нулевых годах

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

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

No-code уже прочно занял нишу среди тех потребителей, кто недосягаем IT-гигантам из-за низкого бюджета, но потенциально составляет более 80% численности пользователей IT-услуг: весь малый и средний бизнес, ИП и самозанятые. Более того, почти все крупные IT-компании в том или ином виде тестируют и применяют решения без кода, что видно даже по рынку труда.

Рынок No-code разработки растет взрывными темпами и кормит своих адептов

Начиная с 2015 года я использую в своих проектах только Low-code, временами применяя конструкторы страниц Tilda, GrapesJS и Webflow для проработки визуальной части: эта связка даёт максимально возможную скорость разработки приложений. Любой может повторить простой путь создания приложения за 15 минут в любой другой платформе или их комбинации.

Хотите попробовать научиться программировать без кода? Регистрируйтесь в 1 клик и пройдите 5 интерактивных уроков по системе (это займет 60-90 минут).

Спасибо!

Показать полностью
8

Конструктор финансовых моделей

Приветствую всех! Если кто решил провести выходные в обнимку с финансовым моделированием и экселем, то вот вам пост в сочувствие.

Конструктор финансовых моделей Гайд, Программа, Длиннопост

Архитектура

Идеология: Конструктор нацелен на максимальную свободу построения и расчета модели, подобно MS Excel. В дополнение к возможностям Excel здесь реализована возможность интеллектуальной настройки расчета элементов модели.

Интеграм – низкоуровневый конструктор баз данных и веб-приложений, на котором сконфигурирован данный прикладной конструктор моделей, все настройки и данные хранятся в таблицах Интеграма

Модель хранится в таблице Финмодель, у которой есть подчиненные таблицы: листы модели, панели (таблицы) на листах, строки (статьи) в панелях.

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

Служебные запросы собирают данные по модели и основным исходным данным.

Пользовательские запросы собирают дополнительные исходные данные, выдавая их в формате, понятном модели.

Расчетные группы – основной элемент построения модели, из которого строятся её таблицы: строки и колонки. Расчетная группа задает правило формирования колонок таблиц.

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

Термины:

  • Старт – дата начала для расчета модели

  • Финиш – дата окончания расчета

  • Период – регулярность расчета показателей модели/листа/таблицы

  • Единица измерения – задается на уровне строки или значения

Общие сведения

Модель максимально близко повторяет типичный подход, применяемый пользователями в MS Excel и других электронных таблицах: листы с данными и связующие формулы.

Конструктор финансовых моделей Гайд, Программа, Длиннопост

Модель хранится в виде настроек в таблицах Интеграма.

Конструктор финансовых моделей Гайд, Программа, Длиннопост

На листе может быть несколько панелей, каждая из которых – это таблица с заданным строками:

Конструктор финансовых моделей Гайд, Программа, Длиннопост

У модели есть кнопка «ФМ», которая запускает расчет этой модели, в таблице моделей:

Конструктор финансовых моделей Гайд, Программа, Длиннопост

И на форме редактирования модели:

Конструктор финансовых моделей Гайд, Программа, Длиннопост

Строки таблиц модели

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

Конструктор финансовых моделей Гайд, Программа, Длиннопост

Адресация данных

Здесь возможно следующее:

1. Сослаться на одноименное значение в таблице исходных данных

2. Сослаться на произвольное значение в таблице исходных данных

3. Записать формулу для вычисления из других строк

4. Жестко задать значение

5. Сделать ссылку на справочное значение

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

Все эти данные попадут на лист модели, когда мы её откроем:

Конструктор финансовых моделей Гайд, Программа, Длиннопост

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

Конструктор финансовых моделей Гайд, Программа, Длиннопост

Исходные данные

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

Конструктор финансовых моделей Гайд, Программа, Длиннопост

Запрос Капс вернет множество записей актуальных на период, указанный в модели. Через точку после имени запроса указывается имя поля, из которого необходимо брать данные в эту ячейку, например, Капс.влож будет использовать колонку влож из отчета Капс.

Первая колонка запроса – это дата актуальности значения, и модель разнесет все эти значения по соответствующим календарным срезам, просуммировав значения, если их несколько за период.

Повторяющиеся расчетные группы (РГ)

Существуют такие типы групп, и этот набор будет незначительно расширяться:

Конструктор финансовых моделей Гайд, Программа, Длиннопост

Повторяющаяся группа (простая)

Группа (RG) Repeating group повторяется столько раз, сколько периодов расчета укладывается в указанный для модели диапазон расчета. Период расчета (неделя, месяц, квартал, год) задаются на уровне самой модели, а также могут быть указаны для любой её панели:

Конструктор финансовых моделей Гайд, Программа, Длиннопост

В этой панели в колонке RG мы видим 2 повторяющиеся группы, одна из которых – это простая группа:

Конструктор финансовых моделей Гайд, Программа, Длиннопост

В первой колонке (N) указан порядковый номер группы на панели – так их увидит пользователь, а во второй колонке (RG) указан номер по порядку создания группы.

Для заданного периода (Год) в диапазоне модели (01.01.2025 – 31.12.2030) будет выведено 6 повторений группы, по одному на каждый год:

Конструктор финансовых моделей Гайд, Программа, Длиннопост

Группа Единицы измерения

Эта группа представлена единственной колонкой, в которой выводится найденная единица измерения для значения текущей строки. Единица измерения может быть указана на уровне строки модели (она идет с высшим приоритетом):

Конструктор финансовых моделей Гайд, Программа, Длиннопост

Также единицу измерения можно указать в таблице исходных данных:

Конструктор финансовых моделей Гайд, Программа, Длиннопост

Группа значений

Самая простая группа, для которой создается единственная колонка данных, заполняемая данными из самой строки или записанной в строке модели формулы.

Например, такая комбинация строк панели с её повторяющимися группами

Конструктор финансовых моделей Гайд, Программа, Длиннопост

Приведет к такому результату при расчете модели – см. Колонку Значение:

Конструктор финансовых моделей Гайд, Программа, Длиннопост

Произвольная группа

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

Например, если требуется создать матрицу строк выпускаемой продукции (строки таблицы) и отраслей, которые участвуют в её производстве (столбцы), то мы укажем запрос со списком отраслей как источник списка колонок для группы:

Конструктор финансовых моделей Гайд, Программа, Длиннопост

В строках панели при этом указывается список видов продукции:

Конструктор финансовых моделей Гайд, Программа, Длиннопост

В таблице исходных значений следует разместить известные значения для комбинаций отраслей и типов продуктов:

Конструктор финансовых моделей Гайд, Программа, Длиннопост

В результате, в модели мы увидим требуемую межотраслевую матрицу с этими значениями:

Конструктор финансовых моделей Гайд, Программа, Длиннопост

Пользовательские запросы

Для выборки исходных данных для модели пользователь может извлекать данные из любых таблиц системы посредством конструктора запросов.

Первая колонка запроса должна содержать дату актуальности данных, о остальные – сами данные.

Здесь начинается более продвинутая тема, и мы рассмотрим её в следующей статье. Спасибо, если кто вдруг досюда дочитал предыдущие 10 килосимволов.

Показать полностью 21

Предельная унификация данных призвана фокусировать на работе

У вас было такое: смотрите на крутилку в приложении в ожидании, думаете, что, мол, пойду чай заварю, и... Платеж маме не отправлен, ЖКХ не оплачен, пропикабили час. Не бывало?

Отличная работа, все прочитано!