Страницы

Показаны сообщения с ярлыком Проектирование. Показать все сообщения
Показаны сообщения с ярлыком Проектирование. Показать все сообщения

воскресенье, 8 декабря 2024 г.

Подход для безопасности по памяти в системном ЯВУ

На примере языка Oberon представлен общий подход[0], позволяющий на основе высокоуровневых средств создать безопасную по памяти программную среду, защищённую от нарушений изнутри её же средствами. Так как основная часть языка Oberon сама по себе защищена от нарушений границ, то основу предложения составляет ограничение псевдомодулей для работы с переменными с возможными нарушениями типизации, что может быть нужно в системных задачах. Ограничение позволяет сохранить общую целостность. Даже обычный интерфейс псевдомодуля SYSTEM позволяет применять схожий подход[1], но в силу несоответствия воплощения исходной простой задумке, это приводит к ограниченности применения и бо́льшим накладным расходам.


[0] github/vostok-space/безопасно-по-памяти.md
[1] проверяемые адреса при работе с SYSTEM

четверг, 29 февраля 2024 г.

Обработка отказов и ошибок

Тема правильной обработки отказов и ошибок в программе является довольно сложным вопросом в программировании. Отчасти от того, что и она сама является источником постоянных недоразумений и ошибок проектирования из-за коварной рекурсии в природе ошибок. Другую часть сложностей, как это водится, программисты создают себе сами, вводя ненужную путаницу.

Возникающие при работе кода отказы по своему происхождению можно разделить на:

  1. отказы ввода и вывода
  2. ошибки самого кода
  3. ошибки исполнителя кода

Ошибки исполнителя, в частности, аппаратные сбои тоже можно учитывать в программном коде, но далеко не всегда это целесообразно из-за сравнительной редкости в типичных условиях. Здесь ошибки исполнителя не рассматриваются. Отказы вывода можно свести к отказам ввода, потому что сведения о неуспешности вывода по сути должны быть введены.

четверг, 16 ноября 2023 г.

Самое простое воплощение параметрического модуля

Если нужно использовать модули, параметризированные по ряду объявлений (generics, шаблоны), то в оригинальном Oberon, как и в Modula-2, это всегда было достижимо в некотором виде за счёт самой модульности, требуя, впрочем, расширенного понимания, что стоит за IMPORT. В минимальном варианте для этого достаточно простых средств даже без поддержки со стороны основных инструментов. Этот способ не идеален и позволяет сделать не всё, но и совсем плохим его не назовёшь — в нём не используется никаких опасных и сомнительных средств. Конечно, при очень плотном использовании обобщённых типов лучше внести соответствующие изменения в язык, а ещё лучше перепроектировать его с 0[0]. Если шаблоны нужны как вспомогательный механизм, то этот подход может оказаться даже лучше других.

Здесь представлен схематичный пример. Дополнительные детали воплощения для достижения нужных качеств представить несложно.

воскресенье, 9 апреля 2023 г.

Процедура верхнего уровня

По задумке автора Оберон лишён понятия главного модуля с главной процедурой, характерных для архитектурно устаревших операционных систем. «Точкой входа» является любая экспортированная процедура модуля без параметров, что позволяет ещё на уровне языка минимальным количеством понятий организовать более гибкое взаимодействие.

суббота, 1 апреля 2023 г.

Экспериментальная версия лексики

В качестве эксперимента попробовал взглянуть на Оберон с совершенно другой лексикой.

Из особенностей можно отметить

  • С одной стороны большая направленность на кириллицу и набор из кириллических раскладок.
  • С другой стороны уклон в интернационализацию с помощью значков и уменьшения зависимости от естественной лексики.
  • И даже использование юникод-символов с целью приближения к математическим символам.
  • Но с возможностью обойтись легкодоступными символами в альтернативном варианте.
  • Увеличение ясности ряда элементов.

ПРЕДУПРЕЖДЕНИЕ: при наличии высокой чувствительности и лёгкой травмируемости лучше избежать дальнейшего просмотра.

Расширение командного режима

Расширены возможности кода Oberon-команд в трансляторе Восток. Эти возможности являются альтернативой частным и в то же время однообразным р...