Страницы

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

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

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

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

воскресенье, 5 ноября 2023 г.

Проверяемые адреса при работе с SYSTEM

Добавлено свойство проверяемости при работе с низкоуровневыми адресами в процедурах из SYSTEM — ADR, BIT, GET, PUT, COPY.

  • Проверка выхода за границы адресуемого объекта.
  • Проверка обращения к локальным объектам после выхода из содержащих их процедуры.
  • Проверка разрешённости записи в соответствии с правилами языка.
  • Запрет получения адреса от переменной, содержащей указатели.

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

понедельник, 18 сентября 2023 г.

HTML версия определения Оберона

На основе текста со страниц и сделал HTML-версию сообщения о языке программирования Оберон, более дружественной к малым экранам и внешний вид которой приближен к оригинальному определению в PDF. Страница содержит как английский текст, так и его русский перевод. По умолчанию выводится английский, но если доступен JavaScript, то язык выбирается на основе предпочтений в браузере. Есть возможность одновременно просматривать оригинал и перевод в выровненном виде. На мой взгляд, русский перевод на ресурсе online.oberon.org потерял в качестве в сравнении с оригиналом, поэтому я подверг его правке.

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

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

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

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

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

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

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

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

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

четверг, 10 ноября 2022 г.

Внедрение параллельности в однопоточный язык, не нарушающее совместимости

Если типичный императивный язык программирования был в начальной задумке однопоточным, то наивное добавление в него многопоточности не может быть осуществлено без слома совместимости, так как нарушает фундаментальное свойство, гарантирующее неизменность доступных переменных при отсутствии их изменений со стороны самого потока. Приёмы работы с данными, которые были совершенно приемлемы в однопоточности, могут оказаться неадекватными в многопоточном. Такой слом в языке не является чем-то совсем недопустимым, если сама платформа зарождалась в такой среде и накопление кода всегда происходило с учётом этой особенности. Но даже в этом случае достижение правильности кода избыточно перекладывается на плечи программиста с сопутствующими результатами. Такой подход неприемлем для языков, создаваемых не только для того, чтобы не мешать, но и для того, чтобы помогать. Что можно предложить для них?

понедельник, 26 сентября 2022 г.

Накладные расходы проверок на RISC-V, ARM, Эльбрус, AMD64

Получил в использование одноплатный компьютер StarFive VisionFive c 2-ядерным процессором на архитектуре RISC-V. На поставляемом с платой дистрибутиве Fedora провёл тестирование транслятора Восток и, в частности, проверку времени исполнения сгенерированного кода с проверками корректности и без.

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

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