Из диссертации Питера Мюллера 2002-го года. Сравнение накладных расходов на выполнение минимального системного вызова в A2 (тогда она называлась Aos) и Linux.
В A2 системный вызов дешевле в 30 раз!
| ОС A2 | Модульные системы | Вики |
В A2 системный вызов дешевле в 30 раз!
| ОС A2 | Модульные системы | Вики |
🔥3
Можно, не значит нужно...)
Я тут подумал... а зачем в дженерики прямо в параметрах, помимо типов, передавать и функции сравнения, в том числе?
Всё же можно сделать значительно проще. Параметризовать лишь типами ключа и значения (а функции сравнения и вычисления хеш кода передавать непосредственно в инициализатор конкретного контейнера).
И тогда имена параметризованных модулей становятся значительно короче, и необходимость снятия ограничений на длину имён в системе уже не будет столь критична. Во всяком случае, она уже не блокирует возможность использовать дженерики.
Тесты проходят. Думаю, в ближайшее время можно будет отправить изменения в репозиторий.
Вот, на примере теста Hash контейнера можно видеть, как будет выглядеть код с использованием дженериков:
| ОС A2 | Модульные системы | Вики |
Я тут подумал... а зачем в дженерики прямо в параметрах, помимо типов, передавать и функции сравнения, в том числе?
Всё же можно сделать значительно проще. Параметризовать лишь типами ключа и значения (а функции сравнения и вычисления хеш кода передавать непосредственно в инициализатор конкретного контейнера).
И тогда имена параметризованных модулей становятся значительно короче, и необходимость снятия ограничений на длину имён в системе уже не будет столь критична. Во всяком случае, она уже не блокирует возможность использовать дженерики.
Тесты проходят. Думаю, в ближайшее время можно будет отправить изменения в репозиторий.
Вот, на примере теста Hash контейнера можно видеть, как будет выглядеть код с использованием дженериков:
MODULE Test;
IMPORT
Random, SizeGenerics := Generics(SIZE, SIZE);
PROCEDURE Less(l, r: SIZE): BOOLEAN;
BEGIN RETURN l < r END Less;
PROCEDURE HashCode(k: SIZE): SIZE;
BEGIN RETURN k END HashCode;
PROCEDURE Hash;
VAR
vector: SizeGenerics.Vector;
hash: SizeGenerics.Hash;
rand: Random.Generator;
i, n, key, val: SIZE;
bOk: BOOLEAN;
BEGIN
n := 100;
NEW(vector, Less);
NEW(hash, Less, HashCode);
NEW(rand);
ASSERT((vector # NIL) & (hash # NIL) & (rand # NIL));
FOR i := 0 TO n - 1 DO
key := rand.Dice(SIGNED32(10 * n));
IGNORE vector.Add(key);
IF ~hash.Contains(key) THEN
hash.Add(key, key)
END
END;
FOR i := 0 TO vector.Count() - 1 DO
vector.Get(i, key);
ASSERT(hash.Get(key, val));
ASSERT(key = val)
END
END Hash;
BEGIN
Hash
END Test.
| ОС A2 | Модульные системы | Вики |
Forwarded from BlackBox Oberon
С 13 ноября начинается онлайн конференция «Неделя Оберона».
Завтра в 20.00 (GMT+3) состоится первая сессия в формате круглого стола, где участники обсудят варианты применения Оберона для веб-разработки. Ожидаются участники: Артур Ефимов (движок для сайтов на Обероне-07), Антон Шелин (подсистема Crypto), Иван Денисов (как работает мультиязычный сайт oberon.org на Блэкбоксе).
Для участия в конференции, подключайтесь по ссылке:
https://meet.oberon.org/week
Мы рекомендуем использовать браузер Chrome или Chromium для подключения, либо специальное приложение для телефона:
https://play.google.com/store/apps/details?id=org.jitsi.meet
https://apps.apple.com/us/app/jitsi-meet/id1165103905
Завтра в 20.00 (GMT+3) состоится первая сессия в формате круглого стола, где участники обсудят варианты применения Оберона для веб-разработки. Ожидаются участники: Артур Ефимов (движок для сайтов на Обероне-07), Антон Шелин (подсистема Crypto), Иван Денисов (как работает мультиязычный сайт oberon.org на Блэкбоксе).
Для участия в конференции, подключайтесь по ссылке:
https://meet.oberon.org/week
Мы рекомендуем использовать браузер Chrome или Chromium для подключения, либо специальное приложение для телефона:
https://play.google.com/store/apps/details?id=org.jitsi.meet
https://apps.apple.com/us/app/jitsi-meet/id1165103905
Solving_the_structured_control_flow_problem_once_and_for_all_by.mhtml
340.5 KB
Исходные предпосылки данной статьи напомнили один из приёмов представления ДРАКОН-схем силуэт в виде кода с циклом, внутри которого огромный case (switch). Оказывается, для оптимизации подобного кода придуман алгоритм Stackifier. Видимо, и из ДРАКОН-схем можно оптимальный код генерировать. А статьи на сайтах я, лично, люблю в mhtml сохранять, для лучшей сохранности :)
| ОС A2 | Модульные системы | Вики |
| ОС A2 | Модульные системы | Вики |
Хороший пример обобщённого LIFO стека на базе связного списка массивов фиксированной длины.
Обобщённый модуль:
Использование:
| ОС A2 | Модульные системы | Вики |
Обобщённый модуль:
MODULE Stacks(TYPE T);
TYPE
P = POINTER TO R;
R = RECORD a: ARRAY 16 OF T; next: P END;
Stack* = OBJECT
VAR
vals: P;
count: SIZE;
PROCEDURE &New*();
BEGIN
Reset()
END New;
PROCEDURE Reset*();
BEGIN
count := 0;
vals := NIL
END Reset;
PROCEDURE Count*(): SIZE;
BEGIN
RETURN count
END Count;
PROCEDURE Push*(val: T);
VAR p: P; i: SIZE;
BEGIN
i := count MOD LEN(vals.a);
INC(count);
IF i = 0 THEN
NEW(p);
p.next := vals;
vals := p
END;
vals.a[i] := val
END Push;
PROCEDURE Pop*(VAR val: T): BOOLEAN;
VAR ok: BOOLEAN; i: SIZE;
BEGIN
i := count;
ok := i > 0;
IF ok THEN
DEC(i); count := i;
i := i MOD LEN(vals.a);
val := vals.a[i];
IF i = 0 THEN
vals := vals.next
END
END;
RETURN ok
END Pop;
END Stack;
END Stacks.
Использование:
MODULE StacksUse;
IMPORT Commands, Strings,
StrStacks := Stacks(Strings.String),
IntStacks := Stacks(INTEGER);
PROCEDURE Do*;
VAR
context : Commands.Context;
strStack : StrStacks.Stack;
intStack : IntStacks.Stack;
str : Strings.String;
int : INTEGER;
BEGIN
context := Commands.GetContext();
context.out.Ln;
NEW(strStack);
strStack.Push(Strings.NewString("One"));
strStack.Push(Strings.NewString("Two"));
strStack.Push(Strings.NewString("Three"));
WHILE strStack.Pop(str) & (str # NIL) DO
context.out.String(str^);
context.out.Ln
END;
NEW(intStack);
intStack.Push(1);
intStack.Push(2);
intStack.Push(3);
WHILE intStack.Pop(int) DO
context.out.Int(int, 0);
context.out.Ln
END
END Do;
END StacksUse.
StacksUse.Do ~
System.Free StacksUse Stacks(Strings_String) Stacks(@Integer32) ~
| ОС A2 | Модульные системы | Вики |
👍4
На Хабре пересказ на нынешние реалии статьи «A Plea for Lean Software» Prof. Niklaus Wirth
https://habr.com/ru/articles/789550/
| ОС A2 | Модульные системы | Вики |
https://habr.com/ru/articles/789550/
| ОС A2 | Модульные системы | Вики |
Хабр
Призыв писать компактное ПО, версия 2024 года (с примером кода)
Этот пост посвящён памяти Никлауса Вирта , первопроходца в сфере вычислительных наук, ушедшего от нас 1 января этого года. В 1995 году он написал важную статью A Plea for Lean Software , и в своём...
👍4
Forwarded from BlackBox Oberon
Дорогие подписчики, напоминаю, что наш проект клуба oberon.org предполагает, что вы можете получить бесконечный домен для своего оберон-проекта, сделав единоразовое пожертвование на продление нашего основного домена в размере 1000 рублей. Каждый год напоминаю про такую возможность, когда делаю продление OBERON.ORG. По этому вопросу пишите в личку @iadenisov или на почту iadenisov@oberon.org
Отдел кибер-безопасности при Белом Доме ONCD (The White House Office of the National Cyber Director) решил поставить жирную точку в истории языков Си/Си++. Выпущен финальный отчёт, в котором данные языки признаны небезопасными. Их использование связано с серьёзными уязвимостями.
| ОС A2 | Модульные системы | Вики |
| ОС A2 | Модульные системы | Вики |
👍3
We have good new article (?) on GitHub
FROM C++ TO MODULA-3 ... (28 March 2024)
It placed inside Discussion #1177 , i.e.
https://github.com/modula3/cm3/discussions/1177
| ОС A2 | Модульные системы | Вики |
FROM C++ TO MODULA-3 ... (28 March 2024)
It placed inside Discussion #1177 , i.e.
https://github.com/modula3/cm3/discussions/1177
| ОС A2 | Модульные системы | Вики |
GitHub
FROM C++ TO MODULA-3 ... (28 March 2024) · modula3 cm3 · Discussion #1177
(* FROM C++ TO MODULA-3 --- (28 March 2024) *) Greetings Modula-3 community, this is my first post. This post may appear long-winded, but I have chronicled the early stages of my potential "Mo...
🔥2
Интересное видео 1979-го года о создании информационно-поисковой системы по органическим соединениям
| ОС A2 | Модульные системы | Вики |
| ОС A2 | Модульные системы | Вики |
YouTube
Информационно-поисковая система химиков Новосибирска. Время. Эфир 28 апреля 1979
Репортаж из Новосибирского Академгородка о создании учеными автоматизированной информационной системы для опознания органических соединений. Интервью с академиком Валентином Коптюгом о преимуществах новой информационной системы.
Информационный сюжет программы…
Информационный сюжет программы…
👍4
Возможный претендент на дополнение OpenGL стека в A2, в дополнение к существующим биндингам для Win/Lin/Mac
https://t.me/A2OperatingSystem/22173
| ОС A2 | Модульные системы | Вики |
https://t.me/A2OperatingSystem/22173
| ОС A2 | Модульные системы | Вики |
Telegram
Sergey Durmanov in A2 Operating System
Выпуск PortableGL 0.98, реализации OpenGL 3 на языке Си https://opennet.ru/61131/
Флориан сделал это! ECS теперь поддерживает ESP32
https://t.me/A2OperatingSystem/22402
| ОС A2 | Модульные системы | Вики |
https://t.me/A2OperatingSystem/22402
| ОС A2 | Модульные системы | Вики |
Telegram
Sergey Durmanov in A2 Operating System
Флориан сделал это! ECS теперь поддерживает esp32:
Development Version 0.0.41 of the Eigen Compiler Suite is available for evaluation. It fixes various issues and includes the following improvements.
General:
Added Xtensa back-end
C++:
Added support for…
Development Version 0.0.41 of the Eigen Compiler Suite is available for evaluation. It fixes various issues and includes the following improvements.
General:
Added Xtensa back-end
C++:
Added support for…
👍2
Ряд экспертов сходится в мысли, что нейросети, – продвинутый алгоритм поиска, не более, для которого, тем не менее, тоже есть своё применение, но это не ИИ.
Сергей Савельев
Шелия Губерман
| ОС A2 | Модульные системы | Вики |
Сергей Савельев
Шелия Губерман
| ОС A2 | Модульные системы | Вики |
YouTube
Почему лучше не создавать настоящий ИИ? / Сергей Савельев // Два в уме
Подписывайтесь на телеграм-канал RTVI: https://t.me/+f45ODW6gl60zY2My
Поговорили с нейробиологом, доктором биологических наук Сергеем Савельевым об искусственном интеллекте. Чем он отличается от человеческого мозга? По каким алгоритмам работает? Из-за чего…
Поговорили с нейробиологом, доктором биологических наук Сергеем Савельевым об искусственном интеллекте. Чем он отличается от человеческого мозга? По каким алгоритмам работает? Из-за чего…
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Шелия Губерман о машине Цетлина
| ОС A2 | Модульные системы | Вики |
Михаил Львович Цетлин (1924—1966) — советский математик. Крупный учёный и выдающийся инженер, много сделавший в таких разных областях, как математика, физика, биология и медицина. Открыл новое продуктивное научное направление — коллективное поведение автоматов.
| ОС A2 | Модульные системы | Вики |
👍2
Возникла насущная потребность в представлении языка Active Oberon на GitHub. Для этого у файлов исходного кода должно быть уникальное расширение. Расширение .Mod сейчас у слишком большого числа диалектов
Anonymous Poll
28%
Сделать расширение .ao
25%
Сделать расширение .aob
9%
Сделать расширение .oba
0%
Сделать расширение .aobj
6%
Сделать расширение .aos
3%
Сделать расширение .Module
0%
Свой вариант в комментарии
9%
Ничего не менять
19%
Посмотреть результаты
Forwarded from Sergey Durmanov
Dear all,
with the work of Prof. Gutknecht and our group at ETH a significant amount of research has been conducted with regards to how to program systems involving many processors/cores/compute units in the spirit of Oberon.
Please consider reading the following theses in order to understand how a multicore system could be programmed (in the spirit of Oberon)
"The Active Object System Design and Multiprocessor Implementation" by Pieter Muller (2001)
--http://e-collection.library.ethz.ch/eserv/eth:26082/eth-26082-02.pdf
"Combining Lock-Free Programming with Cooperative Multitasking for a Portable Multiprocessor Runtime System" by Florian Negele (2014)
https://www.research-collection.ethz.ch/handle/20.500.11850/154828
and, if you like, you may also want to have a glance on our papers on the FPGA-based / heterogeneous systems high level programming approach:
Felix Friedrich, Oleksii Morozov, Patrick Hunziker, A Compute Model for Generating High Performance Computingng SoCs on Hybrid Systems with FPGAs. Third International Workshop on FPGAs for Software Programmers (FSP 2016), August 29, 2016, Lausanne, Switzerland,
https://www.inf.ethz.ch/personal/felixf/pdfs/2016_FSP_ComputeModelHPSoCFPGA.pdf
Felix Friedrich, Ling Liu, Jürg Gutknecht: Active Cells: A Computing Model for Rapid Construction of On-Chip Multi-core Systems. ACIS-ICIS 2012: 463-469,
https://www.inf.ethz.ch/personal/felixf/pdfs/2012_ActiveCells.pdf
Sorry for the advertising. But really, a lot of the questions that I currently see on the mailing list might have been answered there.
Rgds
Felix Friedrich
with the work of Prof. Gutknecht and our group at ETH a significant amount of research has been conducted with regards to how to program systems involving many processors/cores/compute units in the spirit of Oberon.
Please consider reading the following theses in order to understand how a multicore system could be programmed (in the spirit of Oberon)
"The Active Object System Design and Multiprocessor Implementation" by Pieter Muller (2001)
--http://e-collection.library.ethz.ch/eserv/eth:26082/eth-26082-02.pdf
"Combining Lock-Free Programming with Cooperative Multitasking for a Portable Multiprocessor Runtime System" by Florian Negele (2014)
https://www.research-collection.ethz.ch/handle/20.500.11850/154828
and, if you like, you may also want to have a glance on our papers on the FPGA-based / heterogeneous systems high level programming approach:
Felix Friedrich, Oleksii Morozov, Patrick Hunziker, A Compute Model for Generating High Performance Computingng SoCs on Hybrid Systems with FPGAs. Third International Workshop on FPGAs for Software Programmers (FSP 2016), August 29, 2016, Lausanne, Switzerland,
https://www.inf.ethz.ch/personal/felixf/pdfs/2016_FSP_ComputeModelHPSoCFPGA.pdf
Felix Friedrich, Ling Liu, Jürg Gutknecht: Active Cells: A Computing Model for Rapid Construction of On-Chip Multi-core Systems. ACIS-ICIS 2012: 463-469,
https://www.inf.ethz.ch/personal/felixf/pdfs/2012_ActiveCells.pdf
Sorry for the advertising. But really, a lot of the questions that I currently see on the mailing list might have been answered there.
Rgds
Felix Friedrich
Работа со стандартным форматом отладочной информации (редкость в пост Modula-2 эпохе) , x64dbg и программа на cm3 Modula-3
P.S. И традиционное (хотя и не связанное с новостью): ссылки на OS A2 , на канал и на Вики
| ОС A2 | Модульные системы | Вики |
P.S. И традиционное (хотя и не связанное с новостью): ссылки на OS A2 , на канал и на Вики
| ОС A2 | Модульные системы | Вики |
👍2🔥1