# Диалектическая онтология типов

Диалектическая онтология типов подчиняется тем же законам, что и весь диалектический материализм.

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

Диалектическая онтология типов как отражение структуры объективной реальности.

Мы уже отвергли идеалистические перекосы:

- `null` как "сущее небытие",
- динамика как хаос,
- синтаксис как идеалистическая бюрократия.

Но теперь настал момент синтеза:

- от отрицания простого (примитивных типов)
- к снятию противоречия в форме сложного, универсального, развивающегося

к диалектической онтологии типа.

## Диалектический путь развития понятия "тип"

### Простое (метафизика)

Тип — ярлык, классификация. Неподвижен.

`int` , `string` , `bool`

Противоречие: Простые типы не отражают сложность мира. Возникает потребность в составных. Простые типы поглощаются составными.

`struct` , `class` , `tuple`

Кроме того, `Целое` — как простой тип не просто число, а объект с поведением. Поведение объекта, способы взаимодействия с миром определяются свойствами самого объекта. С другой стороны, те же свойства объекта диалектически накладывают ограничения на тот же объект.

### Снятие противоречия (синтез)

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

Это — не эволюция, а революция в мышлении:

- тип перестаёт быть статической меткой,
- и становится формой существования материи в информационной сфере.

`Целое` не просто как один из типов, а как фундаментальный тип реальности.

## Критика метафизического подхода к типам

Ошибка: тип как "вещь в себе"

В `C` , `Java` , `Python` : `int` — это нечто отдельное, не связанное с практикой.

Но в реальности:

- Целое в банковской системе ≠ Целое в физике частиц,
- Строка в **UI** ≠ Строка в криптографии.
- Метафизика абстрагируется от содержания,
- идеализм отрывает форму от материи.

Нет никакого абстрактного `int` . Есть:

- число яблок
- число груш
- число аршин сукна

Это всё целые числа, но это _разные_ целые числа. Нельзя складывать _число яблок_ с _числом груш_. Это разные _числа_. Но, складывая эти разные числа -- можно получить _число фруктов_, как число нового типа.

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

## Диалектическая онтология типа: тип как единство формы, содержания и практики

Принципы:

### Тип — не ярлык, а категория бытия

Отражает объективную структуру предметной области

### Тип возникает в практике

Не задаётся сверху, а вырастает из задачи

### Тип — в движении форм материи

Развивается, дополняется, трансформируется

### Тип — отношение форм материи

Не изолирован, а связан с другими типами, с памятью, с временем

### Тип — результат познания материи

Чем глубже понимание — тем точнее тип. Тип — это не только ответ на вопрос "что это", но и "почему", "каким образом", "зачем".

## Путь от базового к универсальному: три стадии онтологического развития

### Стадия 1: Отрицание абстрактов (антипод метафизике)

Мы отрицаем существование "абстрактных типов" как таковых.

Нет `int` . Есть `Счёт` , `Индекс` , `Количество` , `КодОшибки` .

Нет `string` . Есть `Имя` , `Хэш` , `Запрос` , `Ответ` .

```prolet
(тип Рубль Рубля Рублей        (// синонимы типа)
    @_база    Целое            (// Абстракция в основе типа)
    @_диапазон (0 999_999_999)  (// Допустимый диапазон на базе абстрактного типа)
    @_операции (слож выч))      (// Допустимые операции над конкретным типом)
```

Примитив не уничтожен, но воспроизведён на новом уровне — как осмысленная категория.

### Онтологическое уточнение: атрибут `@база Целое`

Атрибут `@база` опирается на математическую абстракцию `Целое` , но по отношению к материалистичному миру является сущим _только в рамках математического дискурса_.

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

### Интерпретация

```text
ПОНЯТИЕ         |          СТАТУС В ОНТОЛОГИИ PROLET
----------------|---------------------------------------------------------------
Целое           |   Не первичная данность, а результат высшего обобщения практики счёта
                |  (считали камни, яблоки, дни — и выделили общую форму)
----------------|---------------------------------------------------------------
Математический  |  Специфическая социальная практика, в которой абстракция (вроде `Целое`)
дискурс         |  обращаются как сущее, хотя она и есть специфичная форма материи
----------------|---------------------------------------------------------------
@база           |  Указание на форму, заимствованную из математического дискурса, но
                |  используемую как инструмент для организации сущего
```

Это — не признание платонизма, а признание автономии отражения.

Как язык отражает мир, так и математика — отражает количественные отношения, но не существует вне практики.

📜 Принципы объявления типов `prolet`

- Тип — только материализованная форма сущего
- `Целое`,  `Строка`,  `Дробное`,  `Логическое` — не типы, а базовые абстракции
- `база` — не наследование, а заимствование формы из дискурса математики
- Тип всегда имеет социальный, экономический или технический контекст
- Без атрибутов, отражающих практику — _нет типа_
- Определение вида `(тип Целое ...)` — ошибка онтологии, запрещено

## Стадия 2: Сложное — как единство противоположностей

Структура — не просто набор полей, а единство противоречий:

```prolet
(тип Роль
    @_обязательно
    @_база Перечисление
    @_выбор_ (Админ Пользователь Гость)
    @значение Гость (// По умолчанию, можно менять)
    @_док "Роль пользователя в системе")

(тип ПользовательНомер
    @_обязательно
    @_база          Целое
    @_диапазон      (1 999_999_999)
    @_автоИнкремент
    @_уникально
    @_док      "идентификация пользователя в системе")

(тип Имя
    @_обязательно
    @_база      Строка
    @_умолчание "Иван"
    @_док       "идентификация пользователя в системе")

(структ Пользователь
    @_номер ПользовательНомер
    @имя  Имя (// Можно менять)
    @счёт Счёт
    @роль Роль
    @если_акт Активность
)
```

Поле в структуре может ссылаться только на практический тип — то есть на материализованное сущее.
Прямая ссылка на базовую абстракцию (`Целое`, `Строка` и т.п.) — запрещена.

Все атрибуты, помечены префиксами:

- `@_база` -- системный, нельзя изменить
- `@значение` -- пользовательский, можно изменять.

В приведённом синтаксисе достигается единство формы и содержания:

- Разделение "атрибут vs поле" — идеализм, ведущий к ложному противопоставлению "сущности" и "её свойств".
- В реальности — есть только объект с характеристиками: у человека — имя, возраст, роль, статус, история.
- Нет "основных данных" и "метаданных" — есть все данные как единое сущее.

### Философский и практический смысл

```text
АСПЕКТ             ОБЪЯСНЕНИЕ
------             ---------------------------
Онтология          Тип — не шаблон, а форма сущего в практике. Если в практике номер
                    всегда уникален и присваивается автоматически, то эти свойства —
                    часть его бытия, а не внешнее условие.

Единство нормы     Если ПользовательНомер используется в 10 структурах — не нужно 10 раз писать
                    @уникально. Нарушение — на уровне типа, а не контекста.

Безопасность       Система гарантирует уникальность и обязательность на уровне типа,
                    а не доверяет структуре "не забыть".

Эволюция практики  Если правило изменится (например, номер перестанет быть авто-инкрементным), —
                    меняется один
```

### Принципы проектирования в prolet

- Тип несёт свои нормы: @обязательно, @уникально, @авто-инкремент, @умолчание — определяются в (тип ...)
- Структура — композиция, а не конфигурация: она не задаёт правила, а использует уже заданные
- Атрибуты в структуре — только контекстные: например, @источник, @момент, @ответственный, но не базовые свойства типа
- Повторное указание атрибутов типа в структуре — избыточно и запрещено, но не запрещены атрибуты самого поля
- Тип — законченная форма сущего, пригодная к использованию в любой структуре

## Форма 3: интерфейс — тип как отношение

```prolet
(интерфейс ИХранилище
    @_док "Абстракция работы с хранилищем"
    (ПолучФайл (имя @фикс ИмяФайла) -> @фикс Результат Спис.Байт
        @_док "Читает файл с диска")
    (ЗаписатьФайл (имя @фикс ИмяФайла данные @фикс Спис.Байт) -> @фикс Результат Логическое
        @_док "Записывает файл на диск")
    (ЗакрытьХранилище)
)

(ПолучИнтерфейс НовХранилище как ИХранилище -> мут хран)
((ПолучФайл хран получить "test.txt") -> _)
```

Тип определяется не сущностью, а связями — как в диалектике.

- интерфейс — объявляет форму взаимодействия, а не математическую сигнатуру
- Каждый метод — глагол, отражающий практику
- Параметры: `(@имя Тип, @данные Тип)` — именованные, ссылаются на типы
- Возврат: (Результат Тип) — структура, отражающая результат практики
- Возвращаемый результат может отсутствовать
- Все типы в интерфейсе — практические, определённые через (тип ...)
- @_док — не обязателен для каждого метода и интерфейса, но можно потребовать обязательность на уровне проекта
- Интерфейс не содержит реализации — только методы с параметрами и возвращаемые значения

## Онтологическая иерархия типов

```text
    Обобщённые абстракции (отрицание)
      ↓
    Конкретные типы (противоположность)
      ↓
    Структуры (синтез)
      ↓           ↘
    атрибуты     методы
                    ^
                Интерфейсы
```

Это — спираль развития, а не лестница.
Каждый новый тип — не просто добавление,
а результат борьбы и единства противоположностей.

## Практические гарантии онтологии

- Нет "голых" примитивов в публичных интерфейсах.
- Все типы — документированы, семантически обогащены.
- Переход от простого к сложному — не волевой, а мотивированный практикой.
- форма — не обязательна, но поощряется в крупных системах.

## Заключение: онтология как отражение мира

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

Это — не просто система типов, это — модель познания мира:

`от чувственного (примитив)` → `к рациональному (сложное)` → `к диалектическому (универсальное)`.

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