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