# pro.02_10 Диалектическая онтология типов Диалектическая онтология типов подчиняется тем же законам, что и весь диалектический материализм. - От отрицания простого, к снятию противоречия в виде сложного. - От базового, к универсальному. Диалектическая онтология типов как отражение структуры объективной реальности. Мы уже отвергли идеалистические перекосы: - `nil` как "сущее небытие", - динамика как хаос, - синтаксис как идеалистическая бюрократия. Но теперь настал момент синтеза: - от отрицания простого (примитивных типов) - к снятию противоречия в форме сложного, универсального, развивающегося к диалектической онтологии типа. ## Диалектический путь развития понятия "тип" ### Простое (метафизика) Базовый тип — ярлык, классификация. Неподвижен. В терминах `prolet` базовый тип называется кварк. Кварки встроены в `prolet` и являются инвариантами информационной материи. Кварки нельзя ни отменить, не переопределить. `запрет`, `бул`, `байт`, `целое`, `вещ`, `строка` > 💡 Противоречие: кварки не отражают в полной мере структурную сложность мира. Возникает потребность в практических типах -- протонах и нейтронах, единственная возможность быть для которых -- быть основанными на кварках. `Яблоко` , `Груша` , `Час`, `СписокРабот` Кроме того, `целое` — как кварк не просто число, а объект с поведением. Поведение объекта, способы взаимодействия с миром определяются свойствами самого объекта. С другой стороны, те же свойства объекта диалектически накладывают ограничения на тот же объект. ### Снятие противоречия (синтез) Кварк, отношение, материя в движении. Универсальный тип, порождающий себя и служащий строительным материалом для порождения протонов и нейтронов. Это — не эволюция, а революция в мышлении: - кварк перестаёт быть самостоятельной сущностью, - и становится протоном или нейтроном -- формой существования материи в информационной сфере. > 💡 `целое` не просто как один из кварков, а как фундаментальный тип реальности. ## Критика метафизического подхода к типам Ошибка: тип как "вещь в себе" В `C` , `Java` , `Python` : `int` — это нечто отдельное, не связанное с практикой. Но в реальности: - Целое в банковской системе ≠ Целое в физике частиц, - Строка в **UI** ≠ Строка в криптографии. - Метафизика абстрагируется от содержания, - идеализм отрывает форму от материи. Нет никакого абстрактного `int` . Есть: - число яблок - число груш - число аршин сукна Это всё целые числа, но это *разные* целые числа. Нельзя складывать *число яблок* с *числом груш*. Это разные *числа*. Но, складывая эти разные числа -- можно получить *число фруктов*, как число нового типа. > ⚠️ Важное замечание: арифметический знак `+` при подобном сложении будем неадекватным, так как не отражает *диалектический процесс превращения* одного вида материи в другой. ## Диалектическая онтология типа: тип как единство формы, содержания и практики Принципы: ### Нуклон — не ярлык, а категория бытия Отражает объективную структуру предметной области. ### Нуклон возникает в практике Не задаётся сверху, а вырастает из задачи, из реальных условий. ### Нуклон — в движении форм материи Развивается, дополняется, трансформируется. ### Нуклон — отношение форм материи Не изолирован, а связан с другими нуклонами через кварки, с памятью, с временем. ### Нуклон — результат познания материи Чем глубже понимание — тем точнее свойства нуклона. Нуклон — это не только ответ на вопрос "что это", но и "почему", "каким образом", "зачем", "каким именно способом". ## Путь от базового к универсальному: три стадии онтологического развития ### Стадия 1: Отрицание абстрактов (антипод метафизике) Мы отрицаем существование "абстрактных типов" как таковых. Как свободные кварки отсутствуют в природе, так и: Нет `int` . Есть `Счёт` , `Индекс` , `Количество` , `КодОшибки` . Нет `string` . Есть `Имя` , `Хэш` , `Запрос` , `Ответ` . ```prolet (протон Рубль или Рубля или Рублей (// синонимы типа) (// Абстракция на основе кварка) @_кварк целое (// Допустимый диапазон на базе кварка) @_диапазон (0 999_999_999) (// Допустимые операции над конкретным типом) @_операции (слож выч)) ``` > 💡 Кварк не уничтожен, но воспроизведён на новом уровне — уровне протона/нейтрона как осмысленная категория с политиками общественных отношений. ### Онтологическое уточнение: атрибут `@_кварк целое` Атрибут `@_кварк` опирается на кварк `целое`, но по отношению к материалистичному миру является сущим *только в рамках физического дискурса*. Т.е. кварки не ограничиваются типом `целое`. Но этим типом ограничивает мир цифровой материи в своей основе. Кварк `целое` обобщается конкретным протоном с известными наложенными ограничениями (политиками). Это — *ключевое* уточнение, которое позволяет не отступать от диалектического материализма, но признать относительную самостоятельность цифрового, равно и математического мышления как *специфической формы отражения реальности*. ### Интерпретация | ПОНЯТИЕ | СТАТУС В ОНТОЛОГИИ PROLET | |------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Физический дискурс | Специфическая физическая практика, в которой абстракция (вроде кварка `целое`) обращаются как первичная данность, и результат высшего обобщения физической практики (исследовали камни, яблоки, дни — и выделили первичную форму) | | Языковой дискурс | Специфическая общественная практика, в которой кварк `целое` приобретает явные множественные формы (число камней, яблок, дней) с общими и частными атрибутами, но контекст задаётся программистом (определяется конкретный тип). | | Аппаратный дискурс | Специфическая вычислительная практика, в которой произвольно смоделированный тип программистом отражается на реально существующую аппаратуру в доступной форме. В ходе изменения формы сущности преходят атрибуты типа, которые фактически становятся ограниченными конкретными операциями в конкретном алгоритме (переход качества в количество). | | @_кварк | Указание на форму, заимствованную из физического дискурса, но используемую как инструмент для организации сущего | Это — далеко от платонизма, по сути это признание автономии отражения на разных уровнях бытия. Как язык отражает мир, так и аппаратура, так и физика — отражает количественные отношения, и эти отношения не существуют вне практики. ## 📜 Принципы объявления протонов `prolet` - Протон — только материализованная форма сущего - `целое`, `строка`, `вещ`, `бул`, `байт`, `запрет` — связанные кварки, получающие отражение на низком уровне в аппаратуру (реальность). - `@_кварк` — не наследование, а заимствование формы из дискурса физического аппарата - Протон всегда имеет социальный контекст состояния - Без атрибутов, отражающих практику — *нет протона* - Определение вида c использованием кварка `(протон Яблоки @_кварк целое ...)`, - Протон может быть основан на любом кварке (кроме кварка `запрет`), и только одном кварке. Но атрибутов протона может быть по необходимости. ## 📜 Принципы объявления нейтронов `prolet` - Нейтрон — только материализованная форма сущего - `действие` — связанный кварк `Запрет`, получающие отражение на низком уровне в аппаратуру (реальность). - `@_кварк` — не наследование, а заимствование формы из дискурса физического аппарата - Нейтрон всегда имеет социальный контекст действия, - Без атрибутов, отражающих практику — *нет нейтрона* - Определение вида c использованием кварка `(нейтрон @_кварк запрет ...)` — без действия ошибка онтологии, запрещено, - Нейтрон может быть основан только кварке `запрет`, и только одном кварке. Но атрибутов нейтрона может быть по необходимости. ## Стадия 2: Сложное — как единство противоположностей Атом — не просто структура с набор свойств, а единство противоречий: ```prolet (// любой нуклон построен на единственном кварке, но число атрибутов может быть любым) (протон Роль или Права @_обязательно @_кварк Перечисление @_выбор_ (Админ Пользователь Гость) @значение Гость (// По умолчанию, можно менять) @_док "Роль пользователя в системе" (протон ПользовательНомер @_обязательно @_кварк Целое @_диапазон (1 999_999_999) @_автоИнкремент @_уникально @_док ( "идентификация пользователя в системе") (протон Имя или Название @_кварк Строка @_умолчание "Иван" @_док "идентификация пользователя в системе") (// любой атом имеет множество нуклонов и атомов, но число атрибутов может быть любым) (атом Пользователь @_номер ПользовательНомер @имя Имя (// Можно менять) @счёт Счёт @роль Роль @если_акт Активность ) ``` Свойство в атоме может ссылаться только на нуклоны или на атом (этот же или другой) — то есть на материализованное сущее (нуклон или атом). Атом, который содержит другой атом или нуклоны -- могут быть определены позже, но до момента начала семантического анализа. Прямая ссылка на кварк вне протона или нейтрона — запрещена. Все атрибуты в нуклоне, помечены префиксами: - `@_кварк` -- системный, нельзя изменить В приведённом синтаксисе объявления атома достигается единство формы и содержания: - Разделение "атрибут vs поле" — идеализм, ведущий к ложному противопоставлению "сущности" и "её атрибутов". В предлагаемом подходе всё является свойством. Кварк `целое` *должен* быть отражён на реально существующий носитель -- протон, который *неизбежно* приобретает дополнительные атрибуты (в том числе контракт, как социальная политика). - В реальности — есть только объект с характеристиками: у человека — имя, возраст, роль, статус, история. - Нет "основных данных" и "метаданных" — есть все данные как единое сущее. ### Философский и практический смысл | АСПЕКТ | ОБЪЯСНЕНИЕ | |:-----------------:|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Онтология | Нуклон — не шаблон, а форма сущего в практике. Если в практике номер всегда уникален и присваивается автоматически, то такое значение — часть его бытия, а не внешнее условие. Контекст не может переопределить его кварк. | | Единство формы | Если ПользовательНомер используется в 10 атомах — не нужно 10 раз писать `@уникально`. Нарушение — на уровне протона или нейтрона, а не контекста. | | Безопасность | Система гарантирует уникальность и обязательность на уровне нуклона, а не доверяет нуклону. "не забыть". | | Эволюция практики | Если правило изменится (например, номер перестанет быть авто-инкрементным), — меняется один атрибут в нуклоне, а не в конкретном контексте. | ### Принципы проектирования в prolet - Протон несёт свои нормы: `@обязательно`, `@уникально`, `@авто-инкремент`, `@умолчание` — определяются в (протон ...) - Атом — композиция нуклонов, а не конфигурация: она не задаёт правила, а использует уже заданные - Свойства в атоме — только контекстные: например, `@источник`, `@момент`, `@ответственный`, но не свойства кварков - Повторное указание свойств типа в атоме — избыточно и запрещено, но не запрещены свойства самого свойства (свойство атома рассматривается как нуклон на своём уровне) - Нуклон — со всеми своими атрибутами, законченная форма сущего, пригодная к использованию в любом атоме. ## Форма 3: спецификация — тип как отношение ```prolet (спец Хранилище @_док "Абстракция работы с хранилищем" (Нов (ХранилищеИмя имя) Результат Хранилище) @_док "Создаёт новое именованное хранилище" (ПолучФайл (ИмяФайла имя) Результат СписБайт) @_док "Читает файл с диска") (ЗаписатьФайл (ИмяФайла имя СпиСписБайт данные) Результат ЕслиОк @изм) @_док "Записывает файл на диск") (ЗакрытьХранилище) ) (Хранилище Нов "тест_хран")(уст хран) (хран ПолучФайл "test.txt") ``` Спецификация определяется не сущностью, а связями — как в диалектике. - спецификация — объявляет форму взаимодействия, а не математическую сигнатуру - Каждое действие — глагол, отражающий практику - Параметры: `(%Тип %имя %Тип %данные)` — именованные, ссылаются на нуклоны и атомы - Возврат: (%Результат %Тип) — атом, отражающий результат практики - Возвращаемый результат может отсутствовать - Все нуклоны и атомы в спецификации — практические, кварки запрещены, определённые через (протон, нейтрон, атом, ...) - @_док и др. свойства — не обязательны для каждого метода и спецификации, но можно потребовать обязательность на уровне проекта или конкретного действия - Спецификация не содержит реализации — только действия с параметрами и возвращаемые значения ## Онтологическая иерархия типов > 💡 Это — спираль развития, а не лестница. Каждый новый уровень — не просто добавление, а результат борьбы и единства противоположностей. ```mermaid flowchart LR subgraph Практика direction TB Субъект --> Цели Цели --> Задачи Задачи --> Требования end subgraph prolet direction TB subgraph Нуклоны direction LR Протоны Нейтроны end Спецификации --> Атомы Спецификации --> Нуклоны Атомы --> Нуклоны Нуклоны --> Кварки end subgraph СинтезАппарат direction TB АппаратныйТип1 АппаратныйТип2 end Практика --> prolet prolet --> СинтезАппарат ``` ## Практические гарантии онтологии - Нет "голых" примитивов в публичных спецификациях. - Все спецификации — документированы, семантически обогащены. - Переход от простого к сложному — не волевой, а мотивированный практикой. - Форма — не обязательна, но поощряется в крупных системах. ## 🎯 Заключение: онтология как отражение мира - предложенная онтология отрицает метафизику примитивов, - Разрешает противоречие между простым и сложным, - Снимает противоречие в универсальной форме, - Делает спецификацию не абстрактной сущностью, а категорией бытия, движения и отношения. Это — не просто система типов, это — модель познания мира: `от чувственного (примитив)` → `к рациональному (сложное)` → `к диалектическому (универсальное)`. > ✅ Язык, построенный так, не может допустить ошибку на миллиард долларов, потому что он не позволяет мыслить иначе, чем в категориях реальности.