|
|
@@ -0,0 +1,202 @@
|
|
|
+# Диалектика статических обобщённых типов
|
|
|
+
|
|
|
+Руководствуясь принципами диалектического материализма необходимо признать, что не существует типов вообще. Если один из типов существует фактически в качестве типа процессора или ВМ -- именно он должен являться базовым по отношению ко всем обобщённым типам.
|
|
|
+
|
|
|
+Базовым типом **ВМ** будет знаковое целое. Беззнаковое целое в качестве _базового_ типа является идеалистическим отражением наличного бытия. Беззнаковое целое, литера и булево значение будем считать производными значениями от целого.
|
|
|
+
|
|
|
+Таким образом провозглашён онтологический принцип:
|
|
|
+
|
|
|
+```text
|
|
|
+Целое как первооснова информационной материи,
|
|
|
+как атомарная форма количества,
|
|
|
+как единица измерения бытия в мире вычислений.
|
|
|
+```
|
|
|
+
|
|
|
+Это — не компромисс, не инженерная хитрость в духе `ad hoc`, а революционный шаг в построении онтологии **prolet**, где сложное выводится из простого, а многообразие — из единого и реально существующего.
|
|
|
+
|
|
|
+Разберём это решение в свете диалектического материализма.
|
|
|
+
|
|
|
+## Зачем именно знаковое целое? Онтологическое обоснование
|
|
|
+
|
|
|
+- Принцип: `количество — первая форма бытия`
|
|
|
+- В диалектике качество возникает из количества.
|
|
|
+- Прежде чем различать "истина/ложь", "литера", "адрес" — мир различает "сколько?".
|
|
|
+
|
|
|
+Целое — минимальная форма количества, способная отражать объективные состояния:
|
|
|
+
|
|
|
+- температура,
|
|
|
+- счёт,
|
|
|
+- индекс,
|
|
|
+- время,
|
|
|
+- ошибка (код),
|
|
|
+- адрес памяти (в относительной форме).
|
|
|
+
|
|
|
+Оно — не абстракция, а отражение закона измерения в природе.
|
|
|
+
|
|
|
+## Почему именно знаковое?
|
|
|
+
|
|
|
+Потому что реальный мир — не только "больше нуля".
|
|
|
+
|
|
|
+- Температура может быть −273°C,
|
|
|
+- Баланс — отрицательным,
|
|
|
+- Ошибка — кодом `−1`.
|
|
|
+
|
|
|
+Беззнаковое — идеализм, оно отрицает возможность отрицания, а диалектика — основана на отрицании.
|
|
|
+
|
|
|
+Знаковое целое — единство положительного и отрицательного, оно носит в себе внутреннее противоречие, и потому — диалектически полно.
|
|
|
+
|
|
|
+## Производные типы: снятие противоречия через практику
|
|
|
+
|
|
|
+В **prolet** отказ от "независимых" типов носит методический характер.
|
|
|
+
|
|
|
+Вместо куста чудесным образом возникающих типов — все типы порождаются от целого, но не механически, а через ограничение и интерпретацию.
|
|
|
+
|
|
|
+### Булево
|
|
|
+
|
|
|
+целое (перечисление [0, не 0])
|
|
|
+
|
|
|
+### Литера
|
|
|
+
|
|
|
+целое (интерпретация Юникода, диапазон [0x00, 0x10FFFF])
|
|
|
+
|
|
|
+### Беззнаковое
|
|
|
+
|
|
|
+целое (диапазон [0, +∞)) — как ограничение, а не отдельный тип
|
|
|
+
|
|
|
+Это — не упрощение, это — развитие через снятие противоречия:
|
|
|
+
|
|
|
+- Простое (целое) — утверждается,
|
|
|
+- Сложное (булево, литера) — отрицает его,
|
|
|
+- Но затем — отрицается само,
|
|
|
+- И возвращается как интерпретация целого в заданном контексте.
|
|
|
+
|
|
|
+## Реализация в prolet: типы как категории бытия
|
|
|
+
|
|
|
+### Базовый тип: (тип Целое : целое)
|
|
|
+
|
|
|
+```prolet
|
|
|
+(тип Яблоки : Целое)
|
|
|
+```
|
|
|
+
|
|
|
+Целое не определяется через что-то более простое. Является _аксиомой_ онтологии.
|
|
|
+
|
|
|
+Все операции (`+`, `-`, `*`, `>>`, `&`) — определены на нём напрямую.
|
|
|
+
|
|
|
+### Булево как ограниченное целое
|
|
|
+
|
|
|
+```prolet
|
|
|
+(тип Булево : Целое
|
|
|
+ @перечисл [Ложь, Истина]
|
|
|
+ @интерпретация (0 → Ложь, не 0 → Истина)
|
|
|
+```
|
|
|
+
|
|
|
+Использование:
|
|
|
+
|
|
|
+```prolet
|
|
|
+((Бул 5) -> @фикс еслиВкл)( // значение Истина)
|
|
|
+(если еслиВкл
|
|
|
+ тогда (Напечатать "ВКЛ"))
|
|
|
+```
|
|
|
+
|
|
|
+При этом:
|
|
|
+
|
|
|
+- В памяти — просто не 0,
|
|
|
+- Но в контексте условия — интерпретируется как Истина.
|
|
|
+
|
|
|
+## Литера как целое с семантикой кода UTF-8
|
|
|
+
|
|
|
+```prolet
|
|
|
+
|
|
|
+(тип Литера : Целое
|
|
|
+ @диапазон [0, 0x10FFFF]
|
|
|
+ @интерпретация Юникод
|
|
|
+ @литералы ('a' → 97, 'я' → 1071))
|
|
|
+
|
|
|
+((Лит 'А') -> @фикс литА)(// литра с кодом 1040)
|
|
|
+```
|
|
|
+
|
|
|
+Литера — не "отдельный тип",
|
|
|
+а целое, наделённое смыслом через стандарт.
|
|
|
+
|
|
|
+### Беззнаковое — как контракт, а не тип
|
|
|
+
|
|
|
+```prolet
|
|
|
+
|
|
|
+(тип Абс (// Абсолютное значение целого)
|
|
|
+ @диапазон (0, ЦелМакс)(// проверяется на этапе компиляции или рантайме)
|
|
|
+)
|
|
|
+```
|
|
|
+
|
|
|
+Или — через валидатор:
|
|
|
+
|
|
|
+```prolet
|
|
|
+(фн Беззнаковый (имя Битность) -> @фикс Результат.Бул
|
|
|
+ (ПроверитьБезЗнак имя))
|
|
|
+
|
|
|
+(Беззнаковый U32)(// Проверяет беззнаковое число в рантайме
|
|
|
+```
|
|
|
+
|
|
|
+Беззнаковое — не база, а производная категория, возникающая в практике индексации, адресации, счётчиков.
|
|
|
+
|
|
|
+## Преимущества подхода
|
|
|
+
|
|
|
+- Минимализм онтологии
|
|
|
+- Один базовый тип — меньше путаницы, меньше ошибок
|
|
|
+- Единство представления
|
|
|
+- Все данные — целые, значит, можно сравнивать, передавать, сериализовать одинаково
|
|
|
+- Безопасность через контекст
|
|
|
+- Ошибка "сложить символ и булево" — не на уровне типов, а на уровне смысла
|
|
|
+- Развиваемость
|
|
|
+
|
|
|
+Новые типы — не добавляются, а выводятся из целого через практику
|
|
|
+
|
|
|
+## Экономия мыслетоплива
|
|
|
+
|
|
|
+Программист не думает: "это `int` или `uint`?", а думает: "это счётчик, значит — неотрицательное"
|
|
|
+
|
|
|
+## Психологическая и педагогическая выгода
|
|
|
+
|
|
|
+- Новичок учит один тип — целое, а потом — как его интерпретировать.
|
|
|
+- Ошибки вроде `i = -1`; `for (i < n; ...)` — обнаруживаются не по типу, а по нарушению контракта `(@диапазон [0, ∞))`.
|
|
|
+- Система подсказывает: "Переменная `i` помечена как беззнаковая, но присваивается `-1`. Это противоречит контракту."
|
|
|
+
|
|
|
+Это — не бюрократия, это — диалектическое воспитание сознания.
|
|
|
+
|
|
|
+## Диалектическая природа целого: от количества к качеству
|
|
|
+
|
|
|
+Целое — не конец пути, а начало познания.
|
|
|
+
|
|
|
+### Количество
|
|
|
+
|
|
|
+`x = 42`
|
|
|
+
|
|
|
+### Простое накопление
|
|
|
+
|
|
|
+Ограничение: `x : [0, 100]`
|
|
|
+
|
|
|
+### Единство и борьба (ограничение свободы ради смысла)
|
|
|
+
|
|
|
+- Интерпретация `x` как возраст, код ошибки, символ
|
|
|
+- Переход количества в качество
|
|
|
+- Синтез: `@возможно Пользователь`
|
|
|
+
|
|
|
+`Целое` становится частью сложного процесса
|
|
|
+
|
|
|
+`Целое` — не "вещь", оно — форма движения материи в пространстве значений.
|
|
|
+
|
|
|
+## Заключение: целое как первооснова prolet
|
|
|
+
|
|
|
+Приведённое решение — не просто техническое, оно — философское, революционное, диалектически зрелое.
|
|
|
+
|
|
|
+`Целое` — это не тип,
|
|
|
+
|
|
|
+- это — категория бытия,
|
|
|
+- это — мера количества,
|
|
|
+- это — зародыш качества,
|
|
|
+- это — материальная основа информационного мира **prolet**.
|
|
|
+
|
|
|
+Все прочие типы — _не равноправны_,
|
|
|
+
|
|
|
+- они — его производные,
|
|
|
+- его развитие,
|
|
|
+- его самопознание.
|