# Диалектическая онтология типов Диалектическая онтология типов подчиняется тем же законам, что и весь диалектический материализм. - От отрицания простого, к снятию противоречия в виде сложного. - От базового, к универсальному. Диалектическая онтология типов как отражение структуры объективной реальности. Мы уже отвергли идеалистические перекосы: - `nil` как "сущее небытие", - динамика как хаос, - синтаксис как идеалистическая бюрократия. Но теперь настал момент синтеза: - от отрицания простого (примитивных типов) - к снятию противоречия в форме сложного, универсального, развивающегося к диалектической онтологии типа. ## Диалектический путь развития понятия "тип" ### Простое (метафизика) Тип — ярлык, классификация. Неподвижен. `int` , `string` , `bool` Противоречие: Простые типы не отражают сложность мира. Возникает потребность в составных. Простые типы поглощаются составными. `struct` , `type` , `tuple`, `list` Кроме того, `Целое` — как простой тип не просто число, а объект с поведением. Поведение объекта, способы взаимодействия с миром определяются свойствами самого объекта. С другой стороны, те же свойства объекта диалектически накладывают ограничения на тот же объект. ### Снятие противоречия (синтез) Базовый тип-процесс, отношение, структура в движении. Универсальный тип, порождающий себя и служащий строительным материалом для порождения других типов. Это — не эволюция, а революция в мышлении: - тип перестаёт быть статической меткой, - и становится формой существования материи в информационной сфере. `Целое` не просто как один из типов, а как фундаментальный тип реальности. ## Критика метафизического подхода к типам Ошибка: тип как "вещь в себе" В `C` , `Java` , `Python` : `int` — это нечто отдельное, не связанное с практикой. Но в реальности: - Целое в банковской системе ≠ Целое в физике частиц, - Строка в **UI** ≠ Строка в криптографии. - Метафизика абстрагируется от содержания, - идеализм отрывает форму от материи. Нет никакого абстрактного `int` . Есть: - число яблок - число груш - число аршин сукна Это всё целые числа, но это _разные_ целые числа. Нельзя складывать _число яблок_ с _числом груш_. Это разные _числа_. Но, складывая эти разные числа -- можно получить _число фруктов_, как число нового типа. Важное замечание: арифметический знак `+` при подобном сложении будем неадекватным, так как не отражает _диалектический процесс превращения_ одного вида материи в другой. ## Диалектическая онтология типа: тип как единство формы, содержания и практики Принципы: ### Тип — не ярлык, а категория бытия Отражает объективную структуру предметной области ### Тип возникает в практике Не задаётся сверху, а вырастает из задачи ### Тип — в движении форм материи Развивается, дополняется, трансформируется ### Тип — отношение форм материи Не изолирован, а связан с другими типами, с памятью, с временем ### Тип — результат познания материи Чем глубже понимание — тем точнее тип. Тип — это не только ответ на вопрос "что это", но и "почему", "каким образом", "зачем". ## Путь от базового к универсальному: три стадии онтологического развития ### Стадия 1: Отрицание абстрактов (антипод метафизике) Мы отрицаем существование "абстрактных типов" как таковых. Нет `int` . Есть `Счёт` , `Индекс` , `Количество` , `КодОшибки` . Нет `string` . Есть `Имя` , `Хэш` , `Запрос` , `Ответ` . ```prolet (тип Рубль или Рубля или Рублей (// синонимы типа) @_база Целое (// Абстракция в основе типа) @_диапазон (0 999_999_999) (// Допустимый диапазон на базе абстрактного типа) @_операции (слож выч)) (// Допустимые операции над конкретным типом) ``` Примитив не уничтожен, но воспроизведён на новом уровне — как осмысленная категория. ### Онтологическое уточнение: свойство `@_база Целое` Свойство `@_база` опирается на аппаратную абстракцию `Целое`, но по отношению к материалистичному миру является сущим _только в рамках математического дискурса_. Т.е. математические типы не ограничиваются типом `Целое`. Но этим типом ограничивает аппаратура. Это — _ключевое_ уточнение, которое позволяет не отступать от диалектического материализма, но признать относительную самостоятельность аппаратного, равно и математического мышления как _специфической формы отражения реальности_. ### Интерпретация ПОНЯТИЕ| СТАТУС В ОНТОЛОГИИ PROLET -------- | ----------------------------------- `Целое` | Не первичная данность, а результат высшего обобщения практики счёта (считали камни, яблоки, дни — и выделили общую форму) Аппаратный дискурс | Специфическая техническая практика, в которой абстракция (вроде `Целое`) обращаются как сущее, хотя она и есть специфичная форма материи @база | Указание на форму, заимствованную из математического дискурса, но используемую как инструмент для организации сущего Это — не признание платонизма, а признание автономии отражения. Как язык отражает мир, так и аппаратура, так и математика — отражает количественные отношения, и эти отношения не существуют вне практики. 📜 Принципы объявления типов `prolet` - Тип — только материализованная форма сущего - `Целое`, `Строка`, `Дробное`, `Логическое` — не типы, а базовые абстракции - `@база` — не наследование, а заимствование формы из дискурса аппаратного обеспечения - Тип всегда имеет социальный, экономический или технический контекст - Без свойств, отражающих практику — _нет типа_ - Определение вида c использованием аппаратного типа `(тип Целое ...)` — ошибка онтологии, запрещено ## Стадия 2: Сложное — как единство противоположностей Структура — не просто набор свойств, а единство противоречий: ```prolet (// любой тип имеет одно значение, не число свойств может быть любым) (тип Роль или Права @_обязательно @_база Перечисление @_выбор_ (Админ Пользователь Гость) @значение Гость (// По умолчанию, можно менять) @_док "Роль пользователя в системе" (тип ПользовательНомер @_обязательно @_база Целое @_диапазон (1 999_999_999) @_автоИнкремент @_уникально @_док ( "идентификация пользователя в системе") (тип Имя или Название @_база Строка @_умолчание "Иван" @_док "идентификация пользователя в системе") (структ Пользователь @_номер ПользовательНомер @имя Имя (// Можно менять) @счёт Счёт @роль Роль @если_акт Активность ) ``` Свойство в структуре может ссылаться только на практический тип — то есть на материализованное сущее (тип или структура). Прямая ссылка на аппаратную абстракцию вне явно обозначенных границ (`Целое`, `Вещ` и т.п.) — запрещена. Все свойства, помечены префиксами: - `@_база` -- системный, нельзя изменить - `@значение` -- пользовательский, можно изменять. В приведённом синтаксисе достигается единство формы и содержания: - Разделение "атрибут vs поле" — идеализм, ведущий к ложному противопоставлению "сущности" и "её свойств". В предлагаемом подходе всё является свойством. - В реальности — есть только объект с характеристиками: у человека — имя, возраст, роль, статус, история. - Нет "основных данных" и "метаданных" — есть все данные как единое сущее. ### Философский и практический смысл АСПЕКТ | ОБЪЯСНЕНИЕ ------ | --------------------------- Онтология | Тип — не шаблон, а форма сущего в практике. Если в практике номер всегда уникален и присваивается автоматически, то такие свойства — часть его бытия, а не внешнее условие. Единство формы | Если ПользовательНомер используется в 10 структурах — не нужно 10 раз писать `@уникально`. Нарушение — на уровне типа, а не контекста. Безопасность | Система гарантирует уникальность и обязательность на уровне типа, а не доверяет типу "не забыть". Эволюция практики | Если правило изменится (например, номер перестанет быть авто-инкрементным), — меняется одно свойство в типе ### Принципы проектирования в prolet - Тип несёт свои нормы: `@обязательно`, `@уникально`, `@авто-инкремент`, `@умолчание` — определяются в (тип ...) - Структура — композиция, а не конфигурация: она не задаёт правила, а использует уже заданные - Свойства в структуре — только контекстные: например, `@источник`, `@момент`, `@ответственный`, но не базовые свойства типа - Повторное указание свойств типа в структуре — избыточно и запрещено, но не запрещены свойства самого свойства (свойство структуры рассматривается как тип на своём уровне) - Тип — со всеми своими свойствами, законченная форма сущего, пригодная к использованию в любой структуре ## Форма 3: интерфейс — тип как отношение ```prolet (интерфейс ИХранилище @_док "Абстракция работы с хранилищем" (ПолучФайл (имя ИмяФайла @фикс) ->Результат Спис.Байт @фикс @_док "Читает файл с диска") (ЗаписатьФайл (имя @фикс ИмяФайла данные @фикс Спис.Байт) -> @фикс Результат Логическое @_док "Записывает файл на диск") (ЗакрытьХранилище) ) (уст (НовХранилище) @мут хран) (хран ПолучФайл "test.txt") ``` Интерфейс определяется не сущностью, а связями — как в диалектике. - интерфейс — объявляет форму взаимодействия, а не математическую сигнатуру - Каждое действие — глагол, отражающий практику - Параметры: `(имя Тип, данные Тип)` — именованные, ссылаются на типы - Возврат: (Результат Тип) — структура, отражающая результат практики - Возвращаемый результат может отсутствовать - Все типы в интерфейсе — практические, определённые через (тип, структ, ...) - @_док — не обязателен для каждого метода и интерфейса, но можно потребовать обязательность на уровне проекта или конкретного действия - Интерфейс не содержит реализации — только действия с параметрами и возвращаемые значения ## Онтологическая иерархия типов ```text Математические типы (отрицание) ↓ Конкретные типы (противоположность) ↓ Структуры (синтез) ↓ ↘ свойства действия ^ Интерфейсы ``` Это — спираль развития, а не лестница. Каждый новый тип — не просто добавление, а результат борьбы и единства противоположностей. ## Практические гарантии онтологии - Нет "голых" примитивов в публичных интерфейсах. - Все типы — документированы, семантически обогащены. - Переход от простого к сложному — не волевой, а мотивированный практикой. - форма — не обязательна, но поощряется в крупных системах. ## Заключение: онтология как отражение мира - предложенная онтология отрицает метафизику примитивов, - Разрешает противоречие между простым и сложным, - Снимает противоречие в универсальной форме, - Делает тип не статической меткой, а категорией бытия, движения и отношения. Это — не просто система типов, это — модель познания мира: `от чувственного (примитив)` → `к рациональному (сложное)` → `к диалектическому (универсальное)`. Язык, построенный так, не может допустить ошибку на миллиард долларов, потому что он не позволяет мыслить иначе, чем в категориях реальности.