OberonCore https://forum.oberoncore.ru/ |
|
Оберон-07: вопросы реализации https://forum.oberoncore.ru/viewtopic.php?f=115&t=6352 |
Страница 2 из 5 |
Автор: | Oleg N. Cher [ Суббота, 16 Февраль, 2019 16:47 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
Kemet, видимо, в реальной жизни без зоопарков не обойтись. И что в них плохого? Никогда всё не бывает идеально. Нравится людям пилить компиляторы. Гораздо больше, чем писать библиотеки общего назначения. Что поделаешь. Я не лабаю очередной недокомпилятор. Я лабаю транслятор семейства Оберон-языков в Си промышленного уровня. Оберон-07 там может быть представлен для полноты картины. Поддержать AO тоже заманчиво, но это не в приоритете. Baikal писал(а): Замена сдвига на деление не очень актуальна, так как деление очень медленное, а сдвиг очень быстрый, и как раз наоборот, умножение и деление заменяют на сдвиги где это возможно. Baikal, хороший компилятор оптимизирует деления и умножения на константы, кратные 2. Я бы вообще не пользовался компилятором, который этого не делает. Ofront+ тоже заменяет такие деления и умножения на сдвиги.
|
Автор: | Sergej Durmanov [ Суббота, 16 Февраль, 2019 18:55 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
транслятор АО в Си уже есть |
Автор: | Пётр Кушнир [ Суббота, 16 Февраль, 2019 19:01 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
Kemet писал(а): Непонимание этого простого факта приводит к появленгию очередных свидетелей Ие.., а, ну да, Вирта. Кемет не меняется, такое же трепло, как и пять лет назад. |
Автор: | Comdiv [ Суббота, 16 Февраль, 2019 20:30 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
Oleg N. Cher писал(а): Да я постоянно спорю об этом с Оберонцами-07, но они очень упёртые Не существует "Оберонцев-07". Вы спорите с призраками, созданными в Вашей голове, образы которых Вы накладываете на настоящих собеседников.Kemet писал(а): Непонимание этого простого факта приводит к появленгию очередных свидетелей Ие.., а, ну да, Вирта Тут та же проблема, Вы создаёте свой собственный образ по мотивам действительности, а затем его увлечённо изобличаете.Kemet писал(а): Студентам нужно лабать очередной шедевр. Поэтому у каждого свой вариант Оберона07 или Активного Оберона/А2. Это не даёт развиваться экосистемам. Существует большое количество учебных компиляторов Си и профессиональных тоже с несколько десятков, каждый со своими несовместимыми особенностями, но инфраструктура развивается и очень хорошо, потому что полно людей, который могут и хотят её развивать.
|
Автор: | Oleg N. Cher [ Суббота, 16 Февраль, 2019 21:39 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
Comdiv писал(а): Не существует "Оберонцев-07". Вы спорите с призраками, созданными в Вашей голове, образы которых Вы накладываете на настоящих собеседников. А как ещё называть людей, которые считают Оберон-07 абсолютно полноценным и самодостаточным языком программирования? И скрупулёзно ведут пространные дискуссии о каждом его аспекте, находя всё больше и больше достоинств по сравнению с Модулой-2, Обероном-2 и КП. Фанатиками?
|
Автор: | Comdiv [ Суббота, 16 Февраль, 2019 21:52 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
То, что он полноценный и самодостаточный это простое следствие алгоритмической полноты, достижение чего не является чем-то сложным, а, скорее, наоборот. Цитата: И скрупулёзно ведут пространные дискуссии о каждом его аспекте, находя всё больше и больше достоинств по сравнению с Модулой-2, Обероном-2 и КП Покажите, пожалуйста, такие дискуссии, в которых всё именно так, как Вы описываете.
|
Автор: | Trurl [ Суббота, 16 Февраль, 2019 21:56 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
Интересно, если убрать 07, что-то изменится? |
Автор: | Oleg N. Cher [ Суббота, 16 Февраль, 2019 23:09 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
Comdiv писал(а): Покажите, пожалуйста, такие дискуссии, в которых всё именно так, как Вы описываете. Поваритесь маленько на IRC-канале #oberon на freenode, там постоянно происходят такие беседы.
|
Автор: | Info21 [ Воскресенье, 17 Февраль, 2019 10:26 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
Потребность трепать языком у т.наз. "сапиенсов" -- эволюционно-фундаментальная. Возбуждаться, наблюдая её, -- нонсенс. |
Автор: | Oleg N. Cher [ Четверг, 21 Февраль, 2019 23:58 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
Покритикуйте, пожалуйста, мою реализацию циклического сдвига вправо. Может можно проще? Код: PROCEDURE Ror* (x, n: INTEGER): INTEGER; BEGIN ASSERT((0 <= n) & (n <= 31)); WHILE n > 0 DO IF ODD(x) THEN x := ASH(x, -1); IF x >= 0 THEN INC(x, MIN(INTEGER)) END ELSE x := ASH(x, -1); IF x < 0 THEN DEC(x, MIN(INTEGER)) END END; DEC(n) END; RETURN x END Ror; P.S. SYSTEM.ROT не предлагать, я про него знаю. Вопрос не об этом. |
Автор: | Comdiv [ Пятница, 22 Февраль, 2019 01:20 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
Должно быть воплощение без цикла. |
Автор: | Kemet [ Пятница, 22 Февраль, 2019 06:43 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
как-то так Код: n := n MOD 0b100000;
SYSTEM.VAL( INT32, SYSTEM.VAL( SET32, LSH( x, 32 - n )) + SYSTEM.VAL( SET32, LSH( x, -n ))); |
Автор: | Oleg N. Cher [ Пятница, 22 Февраль, 2019 08:15 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
Kemet, про SYSTEM.LSH я тоже наслышан... Хорошо, усложним проблему. Нужен RorLong для 64-битных значений. SYSTEM.LSH и SYSTEM.ROT не предлагать — они умеют только 32-битные сдвиги (хотя в Ofront'е+ и 64-битные тоже). Только ASH нормально заточен под LONGINT. Насчёт того, чтобы избавиться от цикла — согласен. В Ofront сдвиг SYSTEM.ROT реализован так: Код: #define __ROTL(x, n, t) ((t)((__U_##t)(x)<<(n)|(__U_##t)(x)>>(8*sizeof(t)-(n)))) (__U_##t)(x) это приведение к беззнаковому типу нужной битности.#define __ROTR(x, n, t) ((t)((__U_##t)(x)>>(n)|(__U_##t)(x)<<(8*sizeof(t)-(n)))) #define __ROT(x, n, t) ((n)>=0? __ROTL(x, n, t): __ROTR(x, -(n), t)) Но это на Си. А нужно на Компонентном Паскале. P.S. Про то, что в Обероне-07 нет типа LONGINT, я в курсе. |
Автор: | Kemet [ Пятница, 22 Февраль, 2019 09:15 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
Oleg N. Cher писал(а): Хорошо, усложним проблему. Нужен RorLong для 64-битных значений. SYSTEM.LSH и SYSTEM.ROT не предлагать — они умеют только 32-битные сдвиги (хотя в Ofront'е+ и 64-битные тоже). Только ASH нормально заточен под LONGINT. Если так, то нужно правильно сделать эти сдвиги. Или разбить число на 32-битные сегменты и сдвигать их последовательно.
|
Автор: | Artyemov [ Суббота, 23 Февраль, 2019 17:33 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
Kemet писал(а): Oleg N. Cher писал(а): Хорошо, усложним проблему. Нужен RorLong для 64-битных значений. SYSTEM.LSH и SYSTEM.ROT не предлагать — они умеют только 32-битные сдвиги (хотя в Ofront'е+ и 64-битные тоже). Только ASH нормально заточен под LONGINT. Если так, то нужно правильно сделать эти сдвиги. Или разбить число на 32-битные сегменты и сдвигать их последовательно.А перенос где сохранять? Слово состояния процессора же вне доступных "сущностей" |
Автор: | Oleg N. Cher [ Воскресенье, 24 Февраль, 2019 15:19 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
Протестировал такую реализацию RorLong (в BlackBox): Код: PROCEDURE RorLong* (x: LONGINT; n: INTEGER): LONGINT; VAR r: INTEGER; xr: LONGINT; BEGIN ASSERT((0 <= n) & (n <= 63)); xr := x; r := n; IF (xr < 0) & (r > 0) THEN xr := ASH(xr, -1) - MIN(LONGINT); DEC(r) END; RETURN ASH(xr, -r) + ASH(x, 64 - n) END RorLong; ASH(x, n) выдаёт ошибку исполнения "undefined real result (F8A1, 37E)" при n > 62. Для арифметического сдвига это нормально — получилось арифметическое переполнение, результат врезался в бит знака. Похоже, использовать ASH для логического сдвига битов — плохая идея. Будут ещё предложения? |
Автор: | Trurl [ Воскресенье, 24 Февраль, 2019 16:01 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
В BlackBox же LONGINT реализован на FPU. Не уверен, что двигать там биты - хорошая идея. |
Автор: | Oleg N. Cher [ Воскресенье, 24 Февраль, 2019 16:12 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
Это хорошо, что переполнение ловит. Но вот да, как двигать биты (с переносом)? Не иначе как бить число на части и через SYSTEM.LSH... |
Автор: | Илья Ермаков [ Воскресенье, 24 Февраль, 2019 17:07 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
Oleg N. Cher писал(а): А как ещё называть людей, которые считают Оберон-07 абсолютно полноценным и самодостаточным языком программирования? И скрупулёзно ведут пространные дискуссии о каждом его аспекте, находя всё больше и больше достоинств по сравнению с Модулой-2, Обероном-2 и КП. Фанатиками? Если использовать его как "безопасный Си" для микроконтроллеров, да ещё и модульный и с расширяемой системой типов - то он, наверное, реально полноценен. Но это если не хотеть иметь инструменты прикладного абстрагирования повыше уровнем. |
Автор: | Oleg N. Cher [ Воскресенье, 24 Февраль, 2019 20:12 ] |
Заголовок сообщения: | Re: Оберон-07: вопросы реализации |
Илья, ну мы наверное константные массивы не зря в Ofront+ добавляли? Нет этого функционала в Обероне. А для мк он реально нужен. Или извращаться с UUDecode("FFAABB...")? Это потеря памяти на больших массивах. Тройная. А там, где нет файловой системы, из файла ресурс не скачать. Мы тут выходим на скользкий путь того, что всё недостающее можно реализовать в SYSTEM. |
Страница 2 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |