Матрица. Основным типом хранилищ данных в maCom являются многомерные матрицы. Многомерная матрица данных характеризуется размерностью (числом координат) и размерами по каждой из координат. Например, матрица 100×200 имеет размерность 2, размер 100 по координате "строки" и размер 200 по координате "столбцы". Элементы матриц могут содержать значения различных типов, в том числе пустые.

Метод. Основным типом вычислителей являются методы обработки матричных данных, или просто методы.
Метод — это преобразование данных, которое принимает на входе некоторое количество входных аргументов и записывает результат в выходные аргументы. Аргументами являются многомерные матрицы.
"Некоторое количество" означает ни одного, один или более одного аргумента. Такая общая структура вычислителя принята во многих системах обработки матричных данных, например в MatLab. Отличие maCom заключается в том, что несколько методов могут объединяться в один алгоритм и работать совместно.

Алгоритм объединяет несколько взаимосвязанных методов. Это позволяет реализовать концепцию обучаемых (настраиваемых) алгоритмов преобразования информации.
Матричный алгоритм — это совокупность методов с общим списком параметров. Методы алгоритма могут свободно считывать и записывать параметры алгоритма.
Классические алгоритмы распознавания имеют два метода: настройки и вычисления. Метод настройки формирует набор параметров на основе входной (обучающей) информации. Метод вычисления реализует основное преобразование данных, используя настроенные значения того же самого набора параметров. В общем случае алгоритм может иметь более двух методов, например для поэтапной настройки, для расширения состава обучающей выборки (дообучения), для оценивания качества настройки, для настройки с применением процедуры кросс-проверки, и т.д.

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

Допускаются алгоритмы, имеющие только один метод. Такие алгоритмы реализуют необучаемые процедуры обработки данных.

Списки и деревья. Параметры алгоритмов, методы алгоритмов и матричные аргументы методов хранятся в виде списков ячеек.
Список ячеек — это универсальная структура данных, позволяющая хранить значения произвольных типов: числа, строки, матрицы, методы, списки, потоки.
К элементам списков можно обращаться как по именам, так и по порядковым номерам.

Ячейка списка может в свою очередь хранить еще один список. Это позволяет создавать деревья ячеек с любым уровнем вложенности.

Дерево алгоритма. Каждый алгоритм хранится в виде отдельного дерева. На первом уровне этого дерева находится поддерево параметров "Param" и по одному поддереву для каждого метода. Поддерево метода состоит из двух списков — списка входных аргументов "Input" и списка выходных аргументов "Output". Аргументы являются многомерными матрицами.

Типичная структура алгоритма иллюстрируется следующей таблицей:

Имя элемента Назначение элемента
Param поддерево параметров
  Debug параметр Debug — поток вывода отладочной информации
  coeff параметр с именем coeff
Tune метод настройки (в общем случае имя метода произвольно)
  Input список входных аргументов
    St|F двумерная матрица
    St|{goal} вектор-столбец
  Output список выходных аргументов (в данном случае пуст)
Calc метод настройки (в общем случае имя метода произвольно)
  Input список входных аргументов
    Sc|F двумерная матрица
  Output список выходных аргументов
    Sc|{y} вектор-столбец

Потоки. Любой объект maCom может быть сохранен в поток и считан из потока. Например, при сохранении алгоритма происходит запись всего дерева параметров и всех методов, включая их матричные аргументы. Потоки имеют одинаковый интерфейс независимо от типа носителя (файл, строка, окно, внешнее приложение, и т. д.).

Библиотеки методов. Реализации методов объединяются в динамические библиотеки методов. Каждый метод реализуется в виде отдельного объекта с очень простым интерфейсом ImaMethodDef, состоящим из функций вычисления и инициализации метода. Библиотека методов предоставляет компонент, способный создавать экземпляры методов по указанному символьному имени алгоритма. Процесс создания методов скрыт от пользователя и выполняется автоматически при создании алгоритма. Состав методов в алгоритме определяется разработчиком библиотеки, а также порядком загрузки библиотек, поскольку одна библиотека может переопределять методы, описанные в другой библиотеке.