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://news.1rj.ru/str/A2OperatingSystem/22173
| ОС A2 | Модульные системы | Вики |
https://news.1rj.ru/str/A2OperatingSystem/22173
| ОС A2 | Модульные системы | Вики |
Telegram
Sergey Durmanov in A2 Operating System
Выпуск PortableGL 0.98, реализации OpenGL 3 на языке Си https://opennet.ru/61131/
Флориан сделал это! ECS теперь поддерживает ESP32
https://news.1rj.ru/str/A2OperatingSystem/22402
| ОС A2 | Модульные системы | Вики |
https://news.1rj.ru/str/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://news.1rj.ru/str/+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
На forum.oberoncore.ru поднят интересный вопрос:
-- Товарищи, работает ли LLVM достаточно быстро?
Не будет ли он в несколько раз, медленнее, чем 'Y' ?
Как известно, в cm3 Modula-3 есть LLVM backend. Соответственно, мы можем оценить скорость его работы по сравнению с другими.
"Цели компиляции" ( targets) в cm3 обозначаются парой CPU_OS.
Самый быстрый target i386_NT. Он же единственный ( при default settings) не вызывает ( кроме как для низкоуровневых модулей на C language) компилятор Си , m3cc или LLVM13.
AMD64_NT и, например, MIPS64EL_OPENBSD поддерживают только компиляцию через генерацию кода на Си.
ARM64_DARWIN - этот вариант и LLVM13 / LLVM18.
AMD64_LINUX - все варианты, кроме сверх-скоростной компиляции а-ля i386_NT.
По скорости компиляции: при сборке мира компиляция i386_NT бинарных файлов быстрее в 2-5 раз, чем компиляция AMD64_LINUX или AMD64_NT. Напротив, заметной разницы между, например, m3cc и LLVM13 не наблюдается.
На практике выбор между конкретными бекэндами определяет не скорость компиляции, а другие факторы.
В частности, компиляция с m3cc позволяет использовать отладчик m3gdb, а LLVM -- и другие отладчики.
-- Товарищи, работает ли LLVM достаточно быстро?
Не будет ли он в несколько раз, медленнее, чем 'Y' ?
Как известно, в cm3 Modula-3 есть LLVM backend. Соответственно, мы можем оценить скорость его работы по сравнению с другими.
"Цели компиляции" ( targets) в cm3 обозначаются парой CPU_OS.
Самый быстрый target i386_NT. Он же единственный ( при default settings) не вызывает ( кроме как для низкоуровневых модулей на C language) компилятор Си , m3cc или LLVM13.
AMD64_NT и, например, MIPS64EL_OPENBSD поддерживают только компиляцию через генерацию кода на Си.
ARM64_DARWIN - этот вариант и LLVM13 / LLVM18.
AMD64_LINUX - все варианты, кроме сверх-скоростной компиляции а-ля i386_NT.
По скорости компиляции: при сборке мира компиляция i386_NT бинарных файлов быстрее в 2-5 раз, чем компиляция AMD64_LINUX или AMD64_NT. Напротив, заметной разницы между, например, m3cc и LLVM13 не наблюдается.
На практике выбор между конкретными бекэндами определяет не скорость компиляции, а другие факторы.
В частности, компиляция с m3cc позволяет использовать отладчик m3gdb, а LLVM -- и другие отладчики.
🔥2
Forwarded from Wlad
Каковы причины, побудительные мотивы и мотивация вашей заинтерсованности A2?
Anonymous Poll
50%
Интересно всё, что паскалеподобное и виртовское
3%
Небоходимо по проекту по основной работе
21%
Планирую использование в проектах
3%
Сторонний заработок
3%
Научная работа
6%
Использование в преподавательском процессе
41%
Источник идей
26%
Интересно, как один из подходов реализации "многозадачности"
44%
Просто интересно, что не в "мейнстриме"
35%
Хобби
Intel мертва — в ближайшее время компания либо продаст себя Qualcomm либо перестанет производить процессоры. Полная хронология падения гиганта:
— Intel выпускает полностью провальные чипы Core 13-го и 14-го поколения;
— Каждый второй процессор сгорает из-за программной ошибки, компания терпит колоссальные убытки;
— Фикс проблемы вышел месяц назад, спустя почти 2 года (!) после начала сбоев;
— Акции компании упали на 60%, чтобы сдержать убытки, Intel увольняет почти 15 тыс. сотрудников;
— Глава Intel не выдерживает и начинает молиться прямо в Твиттере;
— Qualcomm собирается выкупить бизнес с потрохами.
| ОС A2 | Модульные системы | Вики |
— Intel выпускает полностью провальные чипы Core 13-го и 14-го поколения;
— Каждый второй процессор сгорает из-за программной ошибки, компания терпит колоссальные убытки;
— Фикс проблемы вышел месяц назад, спустя почти 2 года (!) после начала сбоев;
— Акции компании упали на 60%, чтобы сдержать убытки, Intel увольняет почти 15 тыс. сотрудников;
— Глава Intel не выдерживает и начинает молиться прямо в Твиттере;
— Qualcomm собирается выкупить бизнес с потрохами.
| ОС A2 | Модульные системы | Вики |
This media is not supported in your browser
VIEW IN TELEGRAM
🌐 «Новости» 1988 год.
Советско-американский детский компьютерный лагерь в подмосковном Троицке
| ОС A2 | Модульные системы | Вики |
Советско-американский детский компьютерный лагерь в подмосковном Троицке
| ОС A2 | Модульные системы | Вики |
🔥2