LINUX.ORG.RU

Вывод вещественных чисел в Oberon

 


0

1

Здравствуйте.

  1. Как выводить вещественные числа в Oberon?
  2. Расскажите про аналог printf в Oberon?
  3. Что означает звездочка в имени процедуры?
  4. Как создать .exe?


Последнее исправление: Strahopzd (всего исправлений: 2)

Какой именно Оберон? Их много. В дальнейшем подразумевается Component Pascal/Blackbox CB.

Как выводить вещественные числа в Oberon?

Куда выводить? Если в лог, то StdLog.Real(val);. Есть StdLog.RealForm для указания параметров форматирования. Можно выделить «StdLog.RealForm», выбрать меню Info -> Documentation и посмотреть подробную документацию. Есть дистрибутивы документации на русском языке.

Расскажите про аналог printf в Oberon?

Вместо printf принято отдельно вызывать функции вывода для каждого типа. Например:

PROCEDURE WritePoint (x, y: INTEGER);
BEGIN
	Log.String("("); Log.Int(x); Log.String(", "); Log.Int(y); Log.String(")"); Log.Ln;
END WritePoint;

Что означает звездочка в имени процедуры?

Обозначает что процедура экспортирована и её можно вызвать из другого модуля или в рантайме (коммандером например).

Как создать .exe?

Модуль DevLinker. По нему есть документация, которую модно посмотреть методом указанным выше. Если нужны консольные программы, то нужен специальный модуль консольного ввода вывода. Обычно программы запускаются внутри среды без создания отдельных исполняемых файлов ОС.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 2)
Ответ на: комментарий от X512

Есть ли для Оберон документ в котором подробно приведена его архитектура и используемые форматы /например модулей/? …

anonymous
()
Ответ на: комментарий от X512

Да, вся документация есть в дистрибутиве.

На github имеется ваш проект в котором Оберон портирован на Haiku.
Какой дистрибутив вы использовали и где его взять? …

anonymous
()

Оберон давно не существует и никогда всерьёз не существовал. Но наверно в документации по нему есть ответы на ваши вопросы.

Partisan ★★★★
()
Ответ на: комментарий от X512

Спасибо!

Немножко поразбираюсь с его архитектурой …

anonymous
()

Лучший Оберон - это A2, лучшая A2 - это ЯОС.

В ЯОС вывод плавающих с помощью модуля Потоки(Streams), процедура пВещ64(Float). Английские имена в ветке репозитория main, русские - в ветке «главная».

Аналога printf в Обероне нет. В A2/ЯОС есть интерполяция строк, но она доступна только в интерпретаторе, см.

https://gitlab.com/budden/ja-o-s/-/blob/главная/source/LisInterpreter.Mod

.

Звёздочка означает, что процедура экспортируется из модуля.

A2/ЯОС - это операционная система, но она может быть собрана в режиме приложения. В этом случае она представляет из себя директорию, в которой есть ядро системы (oberon.exe, если это Windows, либо oberon, если это Линукс), и к ней прилагаются объектные и символьные файлы, которые тоже необходимы для работы.

Уменьшая набор файлов, включаемых в сборку, можно получать более или менее компактные версии A2/ЯОС

Сборка ЯОС описана здесь: https://gitlab.com/budden/ja-os/-/blob/главная/док/сборка-и-запуск.md

Основной российский сайт оберона на сегодня - https://oberon.org, там есть ссылки на множество ресурсов по теме, включая не менее двух форумов.

Описание языка, применяемого в ЯОС - здесь https://gitlab.com/budden/ja-o-s/-/blob/главная/док/язык-и-библиотека/описание-языка.md

Табличка с переводами на английский - в конце файла. Язык мало отличается от языка AO, применяемого в A2.

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 5)
Ответ на: комментарий от den73

Преимущества A2 над Блекбоксом:

  • многопоточность (await, критические секции)
  • в режиме приложения работает под Windows и Linux, 32 и 64 разряда, включая Linux под ARM. ББ в настоящий момент - только 32 разряда по Intel, Linux и Windows
  • может быть сконфигурирована как операционная система под x86 и ARM.

Преимущества ЯОС над A2:

  • закрыто много багов (и добавлено немало новых)
  • улучшена поддержка Юникода
  • улучшены отладочные инструменты
  • описан запуск ядра по RPI 2
  • среда разработки с переходом к определению
den73 ★★★★★
()

Можно ли сделать такую программу, чтобы она всегда запускалась в BlackBox без дополнительных телодвижений?

Strahopzd
() автор топика
Ответ на: комментарий от den73

Мне интересно когда-нибудь написать свой транслятор. Можете посоветовать какое-нибудь простое подмножество языка?

Strahopzd
() автор топика
Ответ на: комментарий от Strahopzd

А точно интересно именно написать? Как насчёт доработать существующий?

den73 ★★★★★
()
Ответ на: комментарий от anonymous

Не с ЯОС, а с ЯОЙ, но не знаю как у него с транслятором

anonymous
()
Ответ на: комментарий от Strahopzd

Есть для возведения в степень операция?

Math.Power(x, y: REAL): REAL;
Math.IntPower(x: REAL; n: INTEGER): REAL;

Можно переопределить?

Можете свою функцию-обёртку написать.

X512 ★★★★★
()
Ответ на: комментарий от Strahopzd

В А2/ЯОС переопределить операции можно. Но странно, автор темы самовыпилился.

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от rupert

А какое отношение этот сайт имеет к Оберону?

den73 ★★★★★
()
Ответ на: комментарий от X512

Спасибо!
В каких мануалах или коде можно посмотреть/почитать о бинарных структурах Оберона? …

anonymous
()
Ответ на: комментарий от Minona

Снаружи скобок дано русское название, внутри скобок - английское. Это название процедуры для вывода типа FLOAT64, который в русской версии называется вещ64. Почти полная таблица перевода встроенных имён и ключевых слов - по вот этой ссылке

Переводы не встроенных идентификаторов - в файлах *.перев.XML, например вот словарь для модуля Потоки(Streams)

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 2)
Ответ на: комментарий от den73

Интересно, сколько ещё человек это разрабатывают?
А оригинальная А2 ещё развивается или на неё забили?

Minona ★★☆
()
Ответ на: комментарий от Minona

Разрабатываю это на 95% я один, ещё 4% фрилансеры (сейчас их нет), и 1% добровольной помощи (в смежных проектах, не в ЯОС).

В целом я думаю это разрабатывали человек 20-30 в течение 5-10 лет (оказывается, даже Зуев какое-то отношение имел к A2), в основном это были студенты/аспиранты. Точнее можно узнать, если почитать авторство в исходниках.

Есть пара русскоговорящих специалистов по A2, они хорошо отвечают на вопросы и это очень большая помощь. Но присоединяться не хотят (здесь хочется съязвить, но я удержусь).

Оригинальная A2 потихоньку развивается, например, там что-то допилили с вебсокетами - я к себе не брал, т.к. нет сил. Но она развивается не в ту же сторону, что и ЯОС. Например, они не особо пилят поддержку юникода (вроде пилят, но за 2 года можно было бы и мой код взять). По всяческой эргономике и отладке ЯОС далеко впереди, но они это не берут. Среда разработки - тоже не развивается. Зато вот недавно выпустили ARM версию в режиме приложения, которая работает под Raspbian. А ядро для RPi у них как было дохлое, так по-моему и осталось. Я в течение года делал два подхода к этому ядру, которое якобы работает, и только в конце 2021 года сумел его завести. Не знаю, взяли они мои правки или нет. При том, там внутри всё работает и нужно было поправить буквально 1-2 строчки. Они там студентам дают задачу починить запуск ядра. Но то, что на сайте оно не работает, о многом говорит.

Кроме того и сам сайт убит, вместо него новый, почти пустой. Старый форум убит, вместо него опять же новый, почти пустой. В общем есть устойчивое ощущение, что где-то в 2014 году они решили похоронить разработку и внесли изменения, после которых куча вещей перестала работать, например, запись ISO-образов на компакт диск (систему стало невозможно поставить с LiveCD). Очень сложно поверить, что это было сделано не нарочно. Единственное неконспирологическое объяснение - что они просто забили на десктоп и сузили область применения. Тогда неиспользуемое просто отвалилось. Русскоязычные специалисты объясняют это тем, что проект академический и развивается по циклу «попробовали - защитили диссер - бросили».

Кроме того, есть 1 или 2 китайских форка, но они приватные. Некоторые из них существенно доработаны, например, порт на STM32 и большие доработки в языке (интерфейсы и прочее).

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 6)
Ответ на: комментарий от den73

вот зеркало репозитория A2 где-то с 2015 года:

https://github.com/metacore/A2OS

Оригинальный репозиторий - в svn.

У меня тоже есть копия svn репозитория. Она выгодно отличается тем, что в ней более глубокая история - с 2008 года. Но я обновляю её вручную и редко.

https://gitlab.com/budden/a2os-since-2008

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 2)
Ответ на: комментарий от den73

Кстати, если найдётся что-то подобное под GPL, я пожалуй уже подумаю. На самом деле A2 уникальна по фичам, не думаю, что аналоги есть.

den73 ★★★★★
()
Ответ на: комментарий от Minona

Примерно такой. Некоторые фичи не совсем уникальны, уникальна комбинация.

  • можно собрать как ОС и как приложение
  • перенацеливаемая на разное железо
  • хороший ЯП (гораздо лучше Си)
  • врождённый тулчейн, который относительно легко менять при необходимости.
  • поскольку нет Си, нет и FFI для Си со всеми присущими ему недостатками
  • дуболомная система сборки даёт плюсы в постижимости того, как организован код. Не существует такой задачи, как изучение мейкфайлов
  • можно допилить так, чтобы скрипты можно было писать на том же языке, что и код, тогда не будет баша и всей радости программирования на нём. Сейчас это скорее потенциальная фича, хотя скрипты писать уже можно.
  • полностью пересобирается за 2 минуты
  • при этом исполняется машинный код, а не байт-код
  • маленький суммарный объём кода (1млн строк на всё, включая гуй, сеть и тулчейн) - потенциально лучше ситуация с безопасностью
den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 5)
Ответ на: комментарий от anonymous

Для эмбедщины, включая умный дом. Для роутеров возможно (это мне сказали ИБ-шники). Для доверенного компилятора (вы будете смеяться, когда gcc станет доверенным российским компилятором, но я думаю, что этим всё и закончится - ведь линукс уже стал доверенной российской операционкой). Для обучения программированию.

den73 ★★★★★
()
Ответ на: комментарий от den73

Я не тот аноним, что задавал вопросы по оберону, но меня давно интересует такой вопрос: правда ли что оберон не компилируется в обычную программу, а в некую мини-ОС, т.к. без рантайма язык не работает?

Вообще оберон прикольный, но слишком уж разрозненный. Есть как минимум три живые реализации (A2, 07 и Blackbox). Ему бы модную страничку в интернете с коротким самоучитилем и ссылкой на живые компиляторы.

anonymous
()
Ответ на: комментарий от anonymous

Никакой язык не работает без рантайма. Просто рантайм Си более органичен для линукса, поэтому мене заметен. Насчёт мини-ос я думаю, что это всё же во многом условность, но пусть скажут те, кто лучше знает разные виды Оберона. A2/ЯОС - это точно операционная система, у неё есть чётко выраженный слой абстракции. Т.е. когда она собрана в виде приложения, это можно считать своего рода «ОС в виртуальной машине».

Наиболее модная страничка - это oberon.org, а наиболее живой форум - oberoncore.ru Там есть ссылка на реализацию Оберона в браузере, где можно попробовать язык без установки. ЯОС можно увидеть в браузере тут: https://semantic-dict.ru/static/v86 (это эмулятор x86, там скачивается 200Мб, но это всё же веб-страница, и работает она в 10 раз медленнее установленной ЯОС).

Оберонов появилось много по той причине, что он маленький и легко форкается. O7 также легко реализуется с нуля. Так что это семейство языков, а не один язык. Ну и плюс Вирт делал разные для разных задач.

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 4)
Ответ на: комментарий от den73

Оберонов появилось много по той причине, что он маленький и легко форкается.

ЕМНИП, все обероны, за исключением Оберон-2 и Компонентного Паскаля, появились как исследовательские проекты.
Их не так уж много: Oberon, Oberon-2, Component Pascal, Active Oberon, Zonnon, Oberon-07.

Minona ★★☆
()
Последнее исправление: Minona (всего исправлений: 1)
12 ноября 2023 г.

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

QsUPt7S ★★
()
Ответ на: комментарий от LongLiveUbuntu

Корутины были уже в Modula-2.

Я, вероятно, неточно выразился. Упоминая примитивы синхронизации, я имел ввиду атомарные примитивы, такие как CAS, FAA, etc. Кстати, интересно то, что в Обероне и Компонентном Паскале, корутины не упоминаются, хотя в Modula присутствуют. По всей видимости, от этого фичи избавились…

QsUPt7S ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.