|
|
@@ -1,4 +1,4 @@
|
|
|
-# pro-008 Диалектика динамики типов
|
|
|
+# pro.01_80 Диалектика динамики типов
|
|
|
|
|
|
Рассмотрим более подробно ещё одно диалектическое противоречие: "статическая типизация -- динамическая типизация". Надо получить ясный, структурированный переход между строгой статикой и высокой динамикой. А также предусмотреть контролируемый механизм перехода из одного состояния в другое.
|
|
|
|
|
|
@@ -7,10 +7,7 @@
|
|
|
- Статика — стремление к порядку, предсказуемости, закону.
|
|
|
- Динамика — стремление к адаптации, изменению, практике.
|
|
|
|
|
|
-::: info
|
|
|
-Их единство — не компромисс, а диалектический переход, где каждая сторона отрицает другую, чтобы породить нечто высшее.
|
|
|
-
|
|
|
-:::
|
|
|
+> 💡 Их единство — не компромисс, а диалектический переход, где каждая сторона отрицает другую, чтобы породить нечто высшее.
|
|
|
|
|
|
## Постановка противоречия
|
|
|
|
|
|
@@ -31,10 +28,7 @@
|
|
|
|
|
|
Ни одна сторона не может победить полностью.
|
|
|
|
|
|
-::: info
|
|
|
-Победа — в синтезе, в контролируемом переходе от одной формы к другой, в зависимости от объективных условий задачи.
|
|
|
-
|
|
|
-:::
|
|
|
+> 💡 Победа — в синтезе, в контролируемом переходе от одной формы к другой, в зависимости от объективных условий задачи.
|
|
|
|
|
|
**Цель**: `диалектическая типизация`
|
|
|
|
|
|
@@ -82,8 +76,8 @@
|
|
|
Шлюз не всегда требуется при обмене с внешним миром. Если приём данных из внешнего источника из экосистемы `prolet` -- тогда такой поток байтовых данных будет сопровождаться метками типа. В этой ситуации шлюз не нужен.
|
|
|
|
|
|
```prolet
|
|
|
-(// Внутри — следует использовать байтовый поток,
|
|
|
- тип на выходе -- `нечто`)
|
|
|
+(// Внутри — следует использовать байтовый поток,
|
|
|
+ тип на выходе -- `нечто`)
|
|
|
(ВебЗапросить "/data"
|
|
|
@шлюз_вход
|
|
|
@требует_ревью)(уст нечто)
|
|
|
@@ -92,8 +86,8 @@
|
|
|
(// Обратный переход — только через проверку)
|
|
|
(ЕслиНечто нечто как Структ.Пользователь
|
|
|
тогда (
|
|
|
- (Привести нечто к Пользователь)
|
|
|
- (уст пользователь))
|
|
|
+ (Привести нечто к Пользователь)
|
|
|
+ (уст пользователь))
|
|
|
иначе (ПечатьОшибка "неверный формат")
|
|
|
)
|
|
|
```
|
|
|
@@ -127,8 +121,8 @@
|
|
|
Он не может участвовать в вычислениях напрямую. Чтобы использовать — нужно привести к статическому типу.
|
|
|
|
|
|
```prolet
|
|
|
-(// по умолчанию статичность на выходе @фикс,
|
|
|
- параметр контакта с внешним миром -- @шлюз_вход)
|
|
|
+(// по умолчанию статичность на выходе @фикс,
|
|
|
+ параметр контакта с внешним миром -- @шлюз_вход)
|
|
|
(ПолучитьИзApi)(уст x)
|
|
|
|
|
|
(// Ошибка: (x + 1) — запрещено)
|
|
|
@@ -149,7 +143,7 @@
|
|
|
- CSV,
|
|
|
- XML с xsi:type="string"
|
|
|
|
|
|
- тогда нужен `@шлюз_вход`, потому что форма несёт в себе противоречие: `байты есть, а типов — нет`.
|
|
|
+тогда нужен `@шлюз_вход`, потому что форма несёт в себе противоречие: `байты есть, а типов — нет`.
|
|
|
|
|
|
## Система приведения типов: "путь к статике"
|
|
|
|
|
|
@@ -173,8 +167,8 @@
|
|
|
```prolet
|
|
|
(ЕслиНечто байты к Схема.Пользователь
|
|
|
тогда (
|
|
|
- (Привести байты в Схема.Пользователь)
|
|
|
- (уст х))
|
|
|
+ (Привести байты в Схема.Пользователь)
|
|
|
+ (уст х))
|
|
|
иначе (ПечатьОшибка "ожидалось число"))
|
|
|
```
|
|
|
|
|
|
@@ -186,20 +180,17 @@
|
|
|
- ввод: внешние __API__ (не из экосистемы)
|
|
|
- ввод: конфигурация (не из экосистемы)
|
|
|
|
|
|
-::: info
|
|
|
-Это — не абсолютизация, а диалектический релятивизм: истина — в конкретной практике, границы которой задаются контекстом.
|
|
|
-
|
|
|
-:::
|
|
|
+> 💡 Это — не абсолютизация, а диалектический релятивизм: истина — в конкретной практике, границы которой задаются контекстом.
|
|
|
|
|
|
## Развитие типов: от динамики к статике через практику
|
|
|
|
|
|
Когда динамический интерфейс стабилизируется, его можно возвысить до статического закона:
|
|
|
|
|
|
```prolet
|
|
|
-(// Сначала — динамически,
|
|
|
- "ЗапросАпи" определён как @шлюз_вход, и данные как @фикс)
|
|
|
+(// Сначала — динамически,
|
|
|
+ "ЗапросАпи" определён как @шлюз_вход, и данные как @фикс)
|
|
|
(прц ЗапросАпи @шлюз_вход(): нечто(
|
|
|
- ....)
|
|
|
+ ....)
|
|
|
)
|
|
|
(ЕслиНечто нечто как Схема.ФорматV1
|
|
|
тогда (...)
|
|
|
@@ -213,8 +204,8 @@
|
|
|
(// Использование через приведение, результат определён как @фикс)
|
|
|
(ЕслиНечто х как ФорматV1
|
|
|
тогда (
|
|
|
- (ЧитатьИз "data/sample.json")
|
|
|
- (уст конфигТекст))
|
|
|
+ (ЧитатьИз "data/sample.json")
|
|
|
+ (уст конфигТекст))
|
|
|
)
|
|
|
```
|
|
|
|
|
|
@@ -228,10 +219,7 @@
|
|
|
- Это — переход количества в качество,
|
|
|
- Это — восстановление формы из хаоса.
|
|
|
|
|
|
-::: info
|
|
|
-Как у диалектики: `Из хаоса — порядок, из количества — качество`.
|
|
|
-
|
|
|
-:::
|
|
|
+> 💡 Как у диалектики: `Из хаоса — порядок, из количества — качество`.
|
|
|
|
|
|
## Почему `@шлюз_вход` — однонаправленный?
|
|
|
|
|
|
@@ -298,8 +286,8 @@
|
|
|
(// Проверка и переход к статике)
|
|
|
(ЕслиНечто нечто как Схема.АнализДанных)
|
|
|
тогда (
|
|
|
- (Привести нечто в Схема.АнализДанных)
|
|
|
- (уст отчёт @мут)
|
|
|
+ (Привести нечто в Схема.АнализДанных)
|
|
|
+ (уст отчёт @мут)
|
|
|
(ОтправитьОтчёт отчёт))
|
|
|
иначе (ПечататьОшибку "некорректные данные"))
|
|
|
|
|
|
@@ -313,7 +301,7 @@
|
|
|
|
|
|
От хаоса внешнего мира → к порядку внутренней системы через безопасные однонаправленные шлюзы.
|
|
|
|
|
|
-## Заключение: типизация как диалектический процесс
|
|
|
+## 🎯 Заключение: типизация как диалектический процесс
|
|
|
|
|
|
Предлагаемое решение не устраняет противоречие, а развивает отношения внутренних форм в конкретной ситуации:
|
|
|
|
|
|
@@ -322,9 +310,4 @@
|
|
|
- Переход — не скачок, а контролируемый, документируемый, педагогически организованный процесс.
|
|
|
- Язык — не набор правил, а механизм познания реальности через типы.
|
|
|
|
|
|
-::: success
|
|
|
-Это — не просто типовая система, это — диалектика познания:
|
|
|
-
|
|
|
-*от незнания → к гипотезе (динамика) → к истине (статика).*
|
|
|
-
|
|
|
-:::
|
|
|
+> ✅ Это — не просто типовая система, это — диалектика познания: *от незнания → к гипотезе (динамика) → к истине (статика).*
|