prolet-015.md 9.8 KB

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

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

Базовым типом ВМ будет знаковое целое. Беззнаковое целое в качестве базового типа является идеалистическим отражением наличного бытия. Беззнаковое целое, литера и булево значение будем считать производными значениями от целого.

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

Целое как первооснова информационной материи,
как атомарная форма количества,
как единица измерения бытия в мире вычислений.

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

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

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

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

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

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

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

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

Потому что реальный мир — не только "больше нуля".

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

Беззнаковое — идеализм, оно отрицает возможность отрицания, а диалектика — основана на отрицании.

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

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

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

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

Булево

целое (перечисление [0, не 0])

Литера

целое (интерпретация Юникода, диапазон [0x00, 0x10FFFF])

Беззнаковое

целое (диапазон [0, +∞)) — как ограничение, а не отдельный тип

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

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

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

Базовый тип: (тип Целое : целое)

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

Целое не определяется через что-то более простое. Является аксиомой онтологии.

Все операции (+, -, *, >>, &) — определены на нём напрямую.

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

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

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

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

При этом:

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

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


(тип Литера : Целое
    @диапазон [0, 0x10FFFF]
    @интерпретация Юникод
    @литералы ('a' → 97, 'я' → 1071))

((Лит 'А') -> @фикс литА)(// литра с кодом 1040)

Литера — не "отдельный тип", а целое, наделённое смыслом через стандарт.

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Количество

x = 42

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

Ограничение: x : [0, 100]

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

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

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

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

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

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

Целое — это не тип,

  • это — категория бытия,
  • это — мера количества,
  • это — зародыш качества,
  • это — материальная основа информационного мира prolet.

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

  • они — его производные,
  • его развитие,
  • его самопознание.