Интересный доклад Дмитрия Завалишина по архитектуре Эльбрус 2000
https://youtu.be/6SZZ7ASOR7s
| ОС A2 | Модульные системы | Вики |
https://youtu.be/6SZZ7ASOR7s
| ОС A2 | Модульные системы | Вики |
YouTube
Архитектура процессора Эльбрус 2000 / Дмитрий Завалишин (Digital Zone)
Приглашаем на конференцию Saint HighLoad++ 2025, которая пройдет 23 и 24 июня в Санкт-Петербурге!
Программа, подробности и билеты по ссылке: https://highload.ru/spb/2025
________
HighLoad++ Весна 2021
Крупнейшая профессиональная конференция для разработчиков…
Программа, подробности и билеты по ссылке: https://highload.ru/spb/2025
________
HighLoad++ Весна 2021
Крупнейшая профессиональная конференция для разработчиков…
Прослушал очередной доклад Завалишина. Умный дядька. Надо весь молодняк им, прямо, пытать 🙂
Правда, он всё склоняет, в итоге, к языку Java, но это дело такое.
Критика других языков/технологий у него отменная.
О, похоже, телеграм понимает тайм-коды к видео. Удобно 🙂
11:17 Внеэкономические и экономические факторы выбора языка программирования. PHP, C;
22:46 Зависимость стоимости сопровождения систем от выбора языка программирования;
25:55 Очень любопытный "злой тезис" про пользу внесения в код некоторой избыточности при помощи строгой типизации, который помогает в обнаружении ошибок на стадии компиляции;
29:38 Тезис из которого следует прямой вывод, что Oberon принадлежит к языкам "высшей лиги" 🙂;
46:24 Боль стартаперов: написать и выкинуть 😄;
48:42 О персистентности.
| ОС A2 | Модульные системы | Вики |
Правда, он всё склоняет, в итоге, к языку Java, но это дело такое.
Критика других языков/технологий у него отменная.
О, похоже, телеграм понимает тайм-коды к видео. Удобно 🙂
11:17 Внеэкономические и экономические факторы выбора языка программирования. PHP, C;
22:46 Зависимость стоимости сопровождения систем от выбора языка программирования;
25:55 Очень любопытный "злой тезис" про пользу внесения в код некоторой избыточности при помощи строгой типизации, который помогает в обнаружении ошибок на стадии компиляции;
29:38 Тезис из которого следует прямой вывод, что Oberon принадлежит к языкам "высшей лиги" 🙂;
46:24 Боль стартаперов: написать и выкинуть 😄;
48:42 О персистентности.
| ОС A2 | Модульные системы | Вики |
YouTube
Языки программирования: прошлое, настоящее и будущее / Дмитрий Завалишин (ГК Digital Zone)
Saint HighLoad++ 2022
Презентация и тезисы:
https://highload.ru/spb/2022/abstracts/9483
Качество и ценность языков программирования обычно рассматриваются с точки зрения возможностей языка, применимости его в той или иной парадигме разработки. То есть…
Презентация и тезисы:
https://highload.ru/spb/2022/abstracts/9483
Качество и ценность языков программирования обычно рассматриваются с точки зрения возможностей языка, применимости его в той или иной парадигме разработки. То есть…
Реализовал некоторые контейнеры для A2 на дженериках и написал для них тесты. Но ещё надо некоторое число предварительных исправлений сделать, чтобы это можно было отправить в репозиторий
| ОС A2 | Модульные системы | Вики |
| ОС A2 | Модульные системы | Вики |
👍5
Для тех, кто ещё не знаком с языком Active Oberon и операционной системой A2, пример решения простейшей задачи "Вывести все простые числа в диапазоне [2;n)":
module NPrimes;Вывод программы будет следующий:
import Math, Commands;
procedure Eratosthenes(var b: array of boolean; const n1, n2: signed32);
var i, j : signed32;
begin
for i := n1 to entier(Math.sqrt(n2) + 0.5) do
if b[i] then
j := i * i;
while j < n2 do
b[j] := false;
inc(j, i)
end
end
end
end Eratosthenes;
procedure Do*;
var context : Commands.Context;
n, i : signed32;
sift : pointer to array of boolean;
begin
context := Commands.GetContext();
if context.arg.GetInteger(n, false) then
new(sift, n);
for i := 0 to n - 1 do
sift[i] := true
end;
Eratosthenes(sift^, 2, n);
for i := 2 to n - 1 do
if sift[i] then
context.out.Int(i, 0);
context.out.Char(20X)
end
end;
context.out.Ln
end
end Do;
end NPrimes.
NPrimes.Do 50 ~
System.Free NPrimes ~
| ОС A2 | Модульные системы | Вики |
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
👍5❤1
Options.Execution.Test
1.6 KB
Хорошее дело перед внесением существенных изменений в код, написать для этого кода тесты. Так поступил и я. В ОС A2 есть тестовая подсистема, и надо активно её использовать.
Это тест для модуля Options.Mod, по-моему, хороший пример и для ваших тестов.
В файле теста после ключевого слова options идёт набор параметров для запуска. А запустить данный тест можно выполнив следующую команду:
| ОС A2 | Модульные системы | Вики |
Это тест для модуля Options.Mod, по-моему, хороший пример и для ваших тестов.
В файле теста после ключевого слова options идёт набор параметров для запуска. А запустить данный тест можно выполнив следующую команду:
FoxTest.Compile Options.Execution.Test ~
| ОС A2 | Модульные системы | Вики |
А тем временем народ всё играется в High Load библиотечки... и ловит уязвимости как из рога изобилия https://news.1rj.ru/str/WebPwnChat/175325
| ОС A2 | Модульные системы | Вики |
| ОС A2 | Модульные системы | Вики |
Telegram
Кавычка in WebPwnChat
Есть такая штука для хайлоада - MinIO
Объектное хранилище с открытым исходным кодом на Go.
Забавно, как POST запрос на ручку /minio/bootstrap/v1/verify раскрывает его секреты.
Бага прогремела (CVE-2023-28432) в Китае (вот разбор), а у нас чет не встречал…
Объектное хранилище с открытым исходным кодом на Go.
Забавно, как POST запрос на ручку /minio/bootstrap/v1/verify раскрывает его секреты.
Бага прогремела (CVE-2023-28432) в Китае (вот разбор), а у нас чет не встречал…
👍4
Швейцарская компания HighDim активно использует язык Active Oberon, операционную систему A2 и технологию ActiveCells в своих продуктах. Компания специализируется на производстве медицинского оборудования
| ОС A2 | Модульные системы | Вики |
| ОС A2 | Модульные системы | Вики |
👍7
Где-то между орбитами Марса и Юпитера есть астероид, названный в честь Никлауса Вирта
| ОС A2 | Модульные системы | Вики |
| ОС A2 | Модульные системы | Вики |
🔥5👍2
Потребности нейросетей (необходимость огромного объёма вычислений) диктуют использование аналоговых компьютеров? Интересное видео (с 13:20) про использование чипов памяти для матричных вычислений
| ОС A2 | Модульные системы | Вики |
| ОС A2 | Модульные системы | Вики |
YouTube
Аналоговые компьютеры возвращаются? Часть 2 [Veritasium]
Помощь проекту: https://www.patreon.com/VertDider
Смотреть часть 1: https://youtu.be/mBgk8vGL6ic
Аналоговые вычислительные машины известны с глубокой древности и даже повлияли на ход Второй мировой войны, но сейчас в мире доминируют цифровые. Тем не менее…
Смотреть часть 1: https://youtu.be/mBgk8vGL6ic
Аналоговые вычислительные машины известны с глубокой древности и даже повлияли на ход Второй мировой войны, но сейчас в мире доминируют цифровые. Тем не менее…
👍2
Появился новый проект компилятора. Ожидается поддержка кросс-компиляции с языков Oberon, Oberon-2 и Active Oberon в рамках одного компилятора. Предполагается написание самого компилятора на языке Rust, а библиотеки на языке Active Oberon. Пока разработка находится в самой начальной стадии, опубликован лишь начальный код сканера для Active Oberon. Проект, теоретически, может дать хороший толчок развитию кода библиотеки системы A2. С интересом проследим за развитием данного проекта
| ОС A2 | Модульные системы | Вики |
| ОС A2 | Модульные системы | Вики |
GitHub
GitHub - stenbror/active_oberon
Contribute to stenbror/active_oberon development by creating an account on GitHub.
👍6
Часто задают вопросы по установке системы A2 на компьютер.
Но самым быстрым и рекомендованным способом ознакомиться с системой будет её запуск в виде приложения под Windows / Linux. В таком варианте можно будет практически всё запускать, писать и компилировать программы, за исключением частей взаимодействующих непосредственно с оборудованием. Для этого достаточно клонировать основной репозиторий разработки себе на компьютер и из него распаковать соответствующую сборку из zip архивов на выбор: Linux32, Linux64, LinuxARM, Win32 и Win64.
После первоначального знакомства с системой можно будет из любой из этих сборок собственноручно собрать нативный образ системы в вариантах загрузки с: ISO, ISO (мини), HDD и USB.
Команды для сборки нативных образов находятся в
Нужно просто создать папку для выходных файлов и выполнить команды по шагам: 1, 2, 3a / 3b / 3c / 3d.
Видео установки A2 ISO в QEMU
| ОС A2 | Модульные системы | Вики |
Но самым быстрым и рекомендованным способом ознакомиться с системой будет её запуск в виде приложения под Windows / Linux. В таком варианте можно будет практически всё запускать, писать и компилировать программы, за исключением частей взаимодействующих непосредственно с оборудованием. Для этого достаточно клонировать основной репозиторий разработки себе на компьютер и из него распаковать соответствующую сборку из zip архивов на выбор: Linux32, Linux64, LinuxARM, Win32 и Win64.
После первоначального знакомства с системой можно будет из любой из этих сборок собственноручно собрать нативный образ системы в вариантах загрузки с: ISO, ISO (мини), HDD и USB.
Команды для сборки нативных образов находятся в
data/Build.Tool
Нужно просто создать папку для выходных файлов и выполнить команды по шагам: 1, 2, 3a / 3b / 3c / 3d.
Видео установки A2 ISO в QEMU
| ОС A2 | Модульные системы | Вики |
GitLab
Felix Oliver Friedrich / Oberon A2 · GitLab
D-INFK GitLab Service
👍6
Судя по приведённому примеру для "проблемы" Java, в ней вообще всё плохо...
Похоже, разработчики Java не понимают, что такое полиморфизм.
Перепишем код на Active Oberon:
Присвоение v := c в AO невозможно, так как v и c разных типов. Компилятор выдаст incompatible assignment.
А присвоение v[0] := new Bus() вполне законно, так как Bus является расширением типа Vehicle.
Ваша Java сломалась, несите другую 😂
PS. Как оказалось, полиморфизм тут ни при чём, а проблема в том, что Java сложно устроена "под капотом". Виновники: ковариантность массивов в Java и то, что в строчке Vehicle[] v = c; "затёрся" изначальный тип массива.
Где сложно всё устроено, там ненадёжно
| ОС A2 | Модульные системы | Вики |
Перепишем код на Active Oberon:
module vehicles;
type
Vehicle = object
end Vehicle;
Car = object(Vehicle)
end Car;
Bus = object(Vehicle)
end Bus;
var
c : pointer to array of Car;
v : pointer to array of Vehicle;
begin
new(c, 1);
c[0] := new Car();
(* v := c; *) (* incompatible assignment *)
new(v, 1);
v[0] := new Bus();
end vehicles.
Присвоение v := c в AO невозможно, так как v и c разных типов. Компилятор выдаст incompatible assignment.
А присвоение v[0] := new Bus() вполне законно, так как Bus является расширением типа Vehicle.
Ваша Java сломалась, несите другую 😂
PS. Как оказалось, полиморфизм тут ни при чём, а проблема в том, что Java сложно устроена "под капотом". Виновники: ковариантность массивов в Java и то, что в строчке Vehicle[] v = c; "затёрся" изначальный тип массива.
Где сложно всё устроено, там ненадёжно
| ОС A2 | Модульные системы | Вики |
🔥3👍1
Из диссертации Питера Мюллера 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 | Модульные системы | Вики |