Какой именно Оберон? Их много. В дальнейшем подразумевается 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. По нему есть документация, которую модно посмотреть методом указанным выше. Если нужны консольные программы, то нужен специальный модуль консольного ввода вывода. Обычно программы запускаются внутри среды без создания отдельных исполняемых файлов ОС.
В ЯОС вывод плавающих с помощью модуля Потоки(Streams), процедура пВещ64(Float). Английские имена в ветке репозитория main, русские - в ветке «главная».
Аналога printf в Обероне нет. В A2/ЯОС есть интерполяция строк, но она доступна только в интерпретаторе, см.
Звёздочка означает, что процедура экспортируется из модуля.
A2/ЯОС - это операционная система, но она может быть собрана в режиме приложения. В этом случае она представляет из себя директорию, в которой есть ядро системы (oberon.exe, если это Windows, либо oberon, если это Линукс), и к ней прилагаются объектные и символьные файлы, которые тоже необходимы для работы.
Уменьшая набор файлов, включаемых в сборку, можно получать более или менее компактные версии A2/ЯОС
в режиме приложения работает под Windows и Linux, 32 и 64 разряда, включая Linux под ARM. ББ в настоящий момент - только 32 разряда по Intel, Linux и Windows
может быть сконфигурирована как операционная система под x86 и ARM.
Снаружи скобок дано русское название, внутри скобок - английское. Это название процедуры для вывода типа FLOAT64, который в русской версии называется вещ64. Почти полная таблица перевода встроенных имён и ключевых слов - по вот этой ссылке
Разрабатываю это на 95% я один, ещё 4% фрилансеры (сейчас их нет), и 1% добровольной помощи (в смежных проектах, не в ЯОС).
В целом я думаю это разрабатывали человек 20-30 в течение 5-10 лет (оказывается, даже Зуев какое-то отношение имел к A2), в основном это были студенты/аспиранты. Точнее можно узнать, если почитать авторство в исходниках.
Есть пара русскоговорящих специалистов по A2, они хорошо отвечают на вопросы и это очень большая помощь. Но присоединяться не хотят (здесь хочется съязвить, но я удержусь).
Оригинальная A2 потихоньку развивается, например, там что-то допилили с вебсокетами - я к себе не брал, т.к. нет сил. Но она развивается не в ту же сторону, что и ЯОС. Например, они не особо пилят поддержку юникода (вроде пилят, но за 2 года можно было бы и мой код взять). По всяческой эргономике и отладке ЯОС далеко впереди, но они это не берут. Среда разработки - тоже не развивается. Зато вот недавно выпустили ARM версию в режиме приложения, которая работает под Raspbian. А ядро для RPi у них как было дохлое, так по-моему и осталось. Я в течение года делал два подхода к этому ядру, которое якобы работает, и только в конце 2021 года сумел его завести. Не знаю, взяли они мои правки или нет. При том, там внутри всё работает и нужно было поправить буквально 1-2 строчки. Они там студентам дают задачу починить запуск ядра. Но то, что на сайте оно не работает, о многом говорит.
Кроме того и сам сайт убит, вместо него новый, почти пустой. Старый форум убит, вместо него опять же новый, почти пустой. В общем есть устойчивое ощущение, что где-то в 2014 году они решили похоронить разработку и внесли изменения, после которых куча вещей перестала работать, например, запись ISO-образов на компакт диск (систему стало невозможно поставить с LiveCD). Очень сложно поверить, что это было сделано не нарочно. Единственное неконспирологическое объяснение - что они просто забили на десктоп и сузили область применения. Тогда неиспользуемое просто отвалилось. Русскоязычные специалисты объясняют это тем, что проект академический и развивается по циклу «попробовали - защитили диссер - бросили».
Кроме того, есть 1 или 2 китайских форка, но они приватные. Некоторые из них существенно доработаны, например, порт на STM32 и большие доработки в языке (интерфейсы и прочее).
Примерно такой. Некоторые фичи не совсем уникальны, уникальна комбинация.
можно собрать как ОС и как приложение
перенацеливаемая на разное железо
хороший ЯП (гораздо лучше Си)
врождённый тулчейн, который относительно легко менять при необходимости.
поскольку нет Си, нет и FFI для Си со всеми присущими ему недостатками
дуболомная система сборки даёт плюсы в постижимости того, как организован код. Не существует такой задачи, как изучение мейкфайлов
можно допилить так, чтобы скрипты можно было писать на том же языке, что и код, тогда не будет баша и всей радости программирования на нём. Сейчас это скорее потенциальная фича, хотя скрипты писать уже можно.
полностью пересобирается за 2 минуты
при этом исполняется машинный код, а не байт-код
маленький суммарный объём кода (1млн строк на всё, включая гуй, сеть и тулчейн) - потенциально лучше ситуация с безопасностью
Для эмбедщины, включая умный дом. Для роутеров возможно (это мне сказали ИБ-шники). Для доверенного компилятора (вы будете смеяться, когда gcc станет доверенным российским компилятором, но я думаю, что этим всё и закончится - ведь линукс уже стал доверенной российской операционкой). Для обучения программированию.
Я не тот аноним, что задавал вопросы по оберону, но меня давно интересует такой вопрос: правда ли что оберон не компилируется в обычную программу, а в некую мини-ОС, т.к. без рантайма язык не работает?
Вообще оберон прикольный, но слишком уж разрозненный. Есть как минимум три живые реализации (A2, 07 и Blackbox). Ему бы модную страничку в интернете с коротким самоучитилем и ссылкой на живые компиляторы.
Никакой язык не работает без рантайма. Просто рантайм Си более органичен для линукса, поэтому мене заметен. Насчёт мини-ос я думаю, что это всё же во многом условность, но пусть скажут те, кто лучше знает разные виды Оберона. A2/ЯОС - это точно операционная система, у неё есть чётко выраженный слой абстракции. Т.е. когда она собрана в виде приложения, это можно считать своего рода «ОС в виртуальной машине».
Наиболее модная страничка - это oberon.org, а наиболее живой форум - oberoncore.ru Там есть ссылка на реализацию Оберона в браузере, где можно попробовать язык без установки. ЯОС можно увидеть в браузере тут: https://semantic-dict.ru/static/v86 (это эмулятор x86, там скачивается 200Мб, но это всё же веб-страница, и работает она в 10 раз медленнее установленной ЯОС).
Оберонов появилось много по той причине, что он маленький и легко форкается. O7 также легко реализуется с нуля. Так что это семейство языков, а не один язык. Ну и плюс Вирт делал разные для разных задач.
Оберонов появилось много по той причине, что он маленький и легко форкается.
ЕМНИП, все обероны, за исключением Оберон-2 и Компонентного Паскаля, появились как исследовательские проекты. Их не так уж много: Oberon, Oberon-2, Component Pascal, Active Oberon, Zonnon, Oberon-07.
Оберон язык интересный, но, насколько я помню, ни в классическом Обероне, ни в Компонентном Паскале не определена модель памяти, а в стандартных библиотеках BlackBox отсутствуют даже «стандартные» средства межпоточного взаимодействия типа мьютексов, не говоря уже о примитивах синхронизации. В современных условиях, когда даже на пользовательских машинах ядра исчисляются десятками, это весьма печально…
Я, вероятно, неточно выразился. Упоминая примитивы синхронизации, я имел ввиду атомарные примитивы, такие как CAS, FAA, etc. Кстати, интересно то, что в Обероне и Компонентном Паскале, корутины не упоминаются, хотя в Modula присутствуют. По всей видимости, от этого фичи избавились…