Открыть сервис

Formula Language

Formula Language — это формальный язык, используемый для описания и записи математических, логических и алгоритмических выражений, формул и правил преобразования данных. В контексте информационных технологий термин часто обозначает специализированные языки программирования или разметки, предназначенные для работы с электронными таблицами, базами данных, системами компьютерной алгебры и аналитическими платформами. Основная функция Formula Language — обеспечить пользователю возможность задавать вычисления, манипуляции с данными и бизнес-логику без необходимости написания полного кода на универсальных языках программирования.

История

Истоки Formula Language восходят к ранним системам автоматизации вычислений. В 1950-х годах, с появлением первых компьютеров, возникла потребность в формальных средствах записи математических операций. Одним из первых языков такого рода стал FORTRAN (Formula Translation), созданный в 1957 году в IBM под руководством Джона Бэкуса. FORTRAN был предназначен для научных и инженерных расчётов и позволял записывать формулы в виде, близком к математической нотации.

В 1970-х годах, с развитием персональных компьютеров, появились электронные таблицы. Первая коммерческая программа VisiCalc (1979) использовала простой язык формул для вычислений в ячейках. В 1980-х годах Lotus 1-2-3 и Microsoft Excel (организация признана иноагентом в РФ) расширили эти возможности, внедрив функции, ссылки на ячейки и условные выражения.

Параллельно развивались языки формул для систем управления базами данных (СУБД). SQL (Structured Query Language), стандартизированный в 1986 году, хотя и является языком запросов, включает элементы формульного описания (агрегатные функции, вычисляемые поля). В 1990-х годах с появлением OLAP-кубов и бизнес-аналитики возникли специализированные языки, такие как MDX (Multidimensional Expressions) от Microsoft.

В XXI веке Formula Language получили распространение в облачных платформах (Google Sheets, Airtable) и low-code/no-code средах. Современные реализации, такие как Formula Language в Power Query (M-язык) или DAX (Data Analysis Expressions), позволяют выполнять сложные преобразования данных и аналитические расчёты.

Классификация

Formula Language можно разделить по области применения и уровню абстракции:

По назначению

  • Языки электронных таблиц — предназначены для вычислений в ячейках. Примеры: формулы Excel, Google Sheets, LibreOffice Calc. Включают арифметические, статистические, логические и текстовые функции.
  • Языки систем компьютерной алгебры — для символьных вычислений. Примеры: Wolfram Language (Mathematica), Maple, MATLAB. Поддерживают интегралы, производные, матричные операции.
  • Языки запросов к базам данных — для извлечения и обработки данных. Примеры: SQL, MDX, DAX. Включают агрегацию, фильтрацию, группировку.
  • Языки преобразования данных — для очистки и трансформации наборов данных. Примеры: M-язык (Power Query), Formula Language в Alteryx.
  • Языки бизнес-правил — для описания логики принятия решений. Примеры: Drools, JRules. Часто используют синтаксис, близкий к естественному языку.

По синтаксису

  • Инфиксная нотация — оператор располагается между операндами (например, A1 + B2). Типична для электронных таблиц.
  • Префиксная нотация (польская запись) — оператор предшествует операндам (например, + A1 B2). Используется в некоторых языках, таких как Lisp.
  • Постфиксная нотация (обратная польская запись) — оператор следует за операндами (например, A1 B2 +). Применяется в стековых калькуляторах.

По степени специализации

  • Универсальные — могут использоваться для широкого круга задач. Пример: Wolfram Language.
  • Предметно-ориентированные (DSL) — оптимизированы для конкретной предметной области. Пример: DAX для многомерного анализа.

Устройство и характеристики

Типичный Formula Language состоит из следующих компонентов:

  • Операнды — данные, над которыми производятся операции. Могут быть литералами (числа, строки), ссылками на ячейки или переменные, вызовами функций.
  • Операторы — символы, обозначающие действия. Основные группы: арифметические (+, -, *, /, ^), сравнения (=, >, <, >=), логические (AND, OR, NOT), конкатенации (&).
  • Функции — встроенные процедуры, выполняющие сложные вычисления. Делятся на математические (SUM, AVERAGE), статистические (STDEV), логические (IF, SWITCH), текстовые (LEFT, CONCATENATE), даты и времени (DATE, NOW).
  • Ссылки и контекст — механизмы обращения к данным. В электронных таблицах это адреса ячеек (абсолютные $A$1, относительные A1, смешанные $A1). В аналитических системах — имена столбцов, таблиц, мер.
  • Условные конструкции — позволяют выполнять разные вычисления в зависимости от условий. Например, IF(условие; значение_если_истина; значение_если_ложь).
  • Итерации и массивы — обработка наборов данных. В современных языках (Excel 365, Google Sheets) поддерживаются динамические массивы и функции MAP, REDUCE, FILTER.

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

Применение

Formula Language широко применяются в различных областях:

Бизнес и финансы

  • Финансовое моделирование — построение прогнозов, расчёт NPV, IRR, амортизации. Используются в Excel, Google Sheets.
  • Бухгалтерский учётавтоматизация расчётов налогов, зарплат, амортизации.
  • Бюджетирование — создание сценариев «что-если» с помощью функций GOAL SEEK или SOLVER.

Наука и инженерия

  • Математическое моделирование — решение дифференциальных уравнений, оптимизация. Wolfram Language, MATLAB.
  • Статистический анализ — расчёт корреляций, регрессий, проверка гипотез. R, Python (библиотеки pandas, numpy) — хотя это универсальные языки, их синтаксис формул часто рассматривается как расширение Formula Language.
  • Обработка сигналов — фильтрация, преобразование Фурье. MATLAB, Simulink.

Аналитика данных

  • Бизнес-аналитика (BI) — создание мер и вычисляемых столбцов в Power BI (DAX) или Tableau.
  • Очистка данных — преобразование форматов, удаление дубликатов, заполнение пропусков. M-язык в Power Query.
  • Отчётность — формирование сводных таблиц, динамических отчётов.

Образование

  • Обучение математике и информатике — использование электронных таблиц для визуализации математических концепций.
  • Создание интерактивных упражнений — в Google Sheets или Excel с функциями проверки ответов.

Примеры

Пример 1: Формула в Excel для расчёта скидки

=ЕСЛИ(B2>1000; B2*0,9; B2)

Здесь: если значение в ячейке B2 больше 1000, то возвращается 90% от этого значения (скидка 10%), иначе — полное значение.

Пример 2: Выражение на Wolfram Language

Integrate[Sin[x]^2, {x, 0, Pi}]

Вычисляет определённый интеграл от квадрата синуса на отрезке от 0 до π. Результат: π/2.

Пример 3: Мера в DAX для Power BI

СредняяЦена = AVERAGE('Продажи'[Цена])

Вычисляет среднее арифметическое по столбцу «Цена» в таблице «Продажи».

Пример 4: Запрос на M-языке (Power Query)

`` let Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], Фильтр = Table.SelectRows(Источник, each [Сумма] > 1000) in Фильтр ``

Загружает данные из таблицы «Таблица1» и фильтрует строки, где значение столбца «Сумма» больше 1000.

Критика и ограничения

  • Ограниченная выразительность — по сравнению с универсальными языками программирования, Formula Language часто не поддерживают сложные структуры данных (списки, словари), рекурсию или многопоточность.
  • Производительность — интерпретация формул в электронных таблицах может быть медленной при больших объёмах данных (сотни тысяч строк). Современные движки (например, Power Pivot) используют in-memory-обработку для ускорения.
  • Отладка — сложность поиска ошибок в длинных вложенных формулах. Отсутствие полноценных средств отладки (пошаговое выполнение, точки останова) в большинстве электронных таблиц.
  • Переносимость — синтаксис и набор функций различаются между реализациями (Excel vs Google Sheets vs LibreOffice), что затрудняет миграцию.
  • Безопасность — макросы и пользовательские функции могут выполнять произвольный код, что создаёт риски для целостности данных (например, вирусы в Excel-макросах).

Интересные факты

  • Первая программа для электронных таблиц VisiCalc содержала всего около 20 встроенных функций.
  • В 2020 году Microsoft Excel (организация признана иноагентом в РФ) насчитывал более 500 функций, включая такие экзотические, как ARABIC (преобразование римских чисел в арабские) и LET (присвоение имени промежуточному результату).
  • Wolfram Language, лежащий в основе Mathematica, содержит более 6000 встроенных функций и считается одним из самых мощных Formula Language.
  • Язык DAX был создан в 2009 году специально для многомерных вычислений в Power Pivot и SQL Server Analysis Services.
  • В 2019 году Google Sheets добавила поддержку динамических массивов и функций LAMBDA, что позволило создавать пользовательские функции без написания скриптов.

Источники

  1. Бэкус, Дж. (1957). «The FORTRAN Automatic Coding System». Proceedings of the Western Joint Computer Conference.
  2. Microsoft Corporation. (2023). «Функции Excel (по категориям)». Справка Microsoft.
  3. Wolfram Research. (2024). «Wolfram Language & System Documentation Center».
  4. Ferrari, A., & Russo, M. (2016). «The Definitive Guide to DAX: Business Intelligence with Microsoft Power BI, SQL Server Analysis Services, and Excel». Microsoft Press.
  5. Google LLC. (2023). «Справочник по функциям и формулам Google Sheets».
  6. Шапиро, Л. (2018). «Электронные таблицы: история и эволюция». Журнал «Компьютерные инструменты в образовании», № 3.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →