02_60.md 11 KB

pro-015 Диалектика статических обобщённых типов

Руководствуясь принципами диалектического материализма необходимо признать, что в реальном мире могут существовать только те типы, которые отражают эту реальность. Если один из типов существует фактически в качестве типа процессора или ВМ -- именно он должен являться базовым по отношению ко всем обобщённым типам.

В синтезированной ВМ prolet базовым типом выбрано знаковое целое, потому что оно наилучшим образом отражает задачи, стоящие перед разработчиком в составе коллектива в текущих условиях.

Таким образом провозглашён онтологический принцип:

::: info Целое — форма, используемая в практике вычислительных процессов ВМ.

:::

Это — не компромисс, не инженерная хитрость в духе ad hoc, а логический шаг в построении онтологии prolet, где любой тип отображается в одном типе ВМ , а многообразие — из одного и реально существующего.

Разберём это решение в свете диалектического материализма.

Зачем именно знаковое целое? Онтологическое обоснование

  • Принцип: количество — первая форма бытия
  • В диалектике качество возникает из количества.
  • Прежде чем различать "истина/ложь", "литера", "адрес" — мир различает "сколько?".

Целое — форма дискретного приближения в условиях цифровой вычислительной техники, способная отражать объективные состояния:

  • температура,
  • счёт,
  • индекс,
  • время,
  • ошибка (код),
  • адрес памяти (в относительной форме).

Оно — не абстракция, а отражение закона измерения в природе.

Почему именно знаковое?

Потому что реальный мир — не только "больше нуля". Разработчик определяет разные типы величин:

  • Температура может быть −273°C,
  • Баланс — отрицательным,
  • Ошибка — кодом −1.

Беззнаковое — это усложнение выражения счёта в ВМ, которое влечёт за собой усложнение процедур счёта, а диалектика — основана на отрицании.

Знаковое целое — отражает опыт практики, и потому — диалектически полно.

Производные типы: снятие противоречия через практику

В prolet отказ от "независимых" типов носит методический характер.

Вместо куста чудесным образом возникающих базовых типов — все базовые типы порождаются от целого, но не механически, а через ограничение и интерпретацию.

Булево

форма, используемая в практике логических суждений, представлено целым (выбор из множества [0, не 0])

Литера

форма, используемая в практике обозначения печатных символов. Целое (интерпретация Юникода, диапазон [0x00, 0x10FFFF])

Беззнаковое

не свойство целого, а отражение социального требования:
„счётчик не может быть отрицательным“ @диапазон (0, ЦелоеМакс)

Это — не упрощение, это — ограничение через свойства:

  • Простое (целое) — утверждается,
  • Сложное (булево, литера) — конкретизирует его,
  • Но затем — редуцируется само,
  • И возвращается как интерпретация целого в заданном контексте.

Реализация в prolet: типы как категории практики

Тип Целое

(тип Яблоки : Целое)

Целое не определяется через какой-то другой тип. В синтезированной ВМ prolet целое принимается в качестве базовой формы представления, поскольку она наилучшим образом отражает практику измерения и счёта в текущих условиях. Все допустимые операции — определены на нём напрямую.

Булево как ограниченное целое

(тип Булево : Целое
    @перечисл [Ложь, Истина]
    @интерпретация (0 → Ложь, не 0 → Истина)

Использование:

((Бул 5) -> @фикс еслиВкл)( // значение  Истина)
(если еслиВкл
    тогда (Напечатать "ВКЛ"))

При этом:

  • В памяти — просто не 0,
  • Но в контексте условия — интерпретируется как Истина.

Литера как целое с семантикой кода UTF-8


(тип Литера : Целое
    @диапазон (0 0x10FFFF)
    @интерпретация Юникод
    @литералы ('a' .. 'я')

(Лит 'А')(уст литА)(// литера с кодом 1040)

Литера — не "отдельный тип", а целое, наделённое смыслом с помощью ограничивающих свойств.

Беззнаковое — как контракт, а не тип


(тип Абс (// Абсолютное значение целого)
	(// проверяется на этапе компиляции или рантайме)
    @диапазон (0 ЦелМакс)
)

Или — через валидатор:

(фн Беззнаковый (Битность имя): Результат.Бул(
    (ПроверитьБезЗнак имя))
)

(Беззнаковый U32)(// Проверяет беззнаковое число в рантайме

Беззнаковое — не база, а производная категория, возникающая в практике индексации, адресации, счётчиков.

Преимущества подхода

  • Минимализм онтологии
  • Один базовый тип — меньше путаницы, меньше ошибок
  • Единство представления
  • Все атомарные данные в ВМ представлены целыми, но их интерпретация определяется социальным контекстом через свойства
  • Безопасность через контекст
  • Ошибка "сложить символ и булево" — на уровне типов, при помощи свойств
  • Развиваемость

Новые типы — добавляются, но через вывод из целого как часть практики

Экономия мыслетоплива

Программист не думает: "это int или uint?", а думает: "это счётчик, значит — неотрицательное"

Психологическая и педагогическая выгода

  • Новичок учит один тип — целое, а потом — как его интерпретировать.
  • Ошибки вроде i = -1; for (i < n; ...) — обнаруживаются по типу, и по нарушению контракта (@диапазон (0 .. ∞).
  • Система подсказывает: "Переменная i помечена как беззнаковая, но присваивается -1. Это противоречит контракту."

Это — не бюрократия, это — диалектическое воспитание сознания.

Диалектическая природа целого: от количества к качеству

Целое — не конец пути, а начало познания.

Количество

x = 42

Простое накопление

Ограничение: @x (0 .. 100)

Единство и борьба (ограничение свободы ради смысла)

  • Интерпретация x как возраст, код ошибки, символ
  • Переход количества в качество
  • Синтез: ЕслиНечто нечто как Пользователь

Целое становится частью сложного процесса

Целое — не "вещь", оно — форма движения материи в пространстве значений.

Заключение: целое как первооснова prolet

Приведённое решение — не просто техническое, оно — философское, революционное, диалектически зрелое.

::: success Целое — не универсальная сущность, а материальное условие, принятое в синтезированной ВМ prolet для отражения практики счёта, измерения и индексации.
Все прочие типы — не его «производные» в метафизическом смысле, а формы его интерпретации в конкретных социальных контекстах

:::

Все прочие типы — не равноправны,

  • они — его отражённые формы,
  • его социальные ограничения,
  • его контексты для построения пространства смыслов.