- 19 апреля я добавил в транслятор возможность генерации исполняемого файла и возможность его сразу же запустить
- 25 апреля добавил возможность указать команду модуля - экспортированную процедуру без параметров, что приблизило "Восток" к более удобному понятию программы в оригинальном Обероне в противовес традиционному пониманию программы с единой точкой входа.
- 5 июля была добавлено скриптовое исполнение, то есть, появилась возможность вызова последовательности экспортированных из разных модулей процедур с параметрами.
-
24 июля
была добавлена опция командной строки -infr (инфраструктура), позволяющая для простых случаев сократить количество параметров, нужных для запуска кода на Оберон. Можно писать так:
Или, подготовив shell соответствующей функцией$VOSTOK/result/ost run "Out.Int(1234 * 4567 + 89ABH, 0); Out.Ln" -infr $VOSTOK
писать так:function ost { $VOSTOK/result/ost run "$1" -infr $VOSTOK; }ost "Out.Int(1234 * 4567 + 89ABH, 0); Out.Ln"
понедельник, 24 июля 2017 г.
Скриптовый режим
понедельник, 14 ноября 2016 г.
Скорость ООП сортировки вставками на Oberon, Objective-C, C++, Go
Продолжаю тестировать транслятор Оберона из проекта "Восток". На сей раз мой взор пал на производительность при использовании объектно ориентированного подхода. Ранее я уже проводил сравнение для Си, Objective-C, C++ на примере сортировки вставками. Недостатком того воплощения было то, что в нём испытывался только вызов виртуального метода, а безопасного приведения от общего типа к расширенному не было. Для Си это требовало написания большего количества текста, чем нужно, поэтому и для остальных языков оно было исключено. Теперь, когда у меня есть транслятор Оберона в Си, эту возможность задействовать куда проще, поэтому я соответствующим образом подправил тест, также заменив Си на Оберон.
Результаты интересные, судите сами.
воскресенье, 13 ноября 2016 г.
Скорость пузырьковой сортировки на Oberon, C++, Go, Rust
Воспользовавшись тестом на производительность с форума oberspace, реализованного для разных языков, проверил свой транслятор. Тест представляет собой написанную в лоб пузырьковую сортировку.
Одним из преимуществ использования транслятора Оберона перед непосредственным написанием кода на C/C++ является лёгкая возможность добавления проверок границ массива и использования неинициализированных переменных. Современные компиляторы Си тоже не так просты и позволяют добавлять некоторые проверки (-fsanitize), впрочем, рассматриваемые авторами больше как отладочная возможность. Сравним эти возможности.
четверг, 20 октября 2016 г.
Проект Восток. Поехали
Выложил на github исходный код проекта "Восток", который представляет из себя транслятор Оберона. Это нулевая версия, и пока весьма нестабильная. Впрочем, транслятор может не так уж и мало - собрать сам себя, так как в лучших паскалевских традициях написан на собственном входном языке - Oberon-07.
Проект задумывался для возможности партизанского программирования в тылу у противника - коммерчески востребованных языков программирования, используя его как генератор C, C++, Javascript, Java кода и других. Для этого у Oberon есть все предпосылки: язык достаточно прост, чтобы его транслятор можно было создать 1-му человеку, отсутствие навороченных абстракций и низкоуровневых возможностей на уровне ядра языка позволяет относительно легко отображать его на другие языки программирования - как низкоуровневые, так и высокоуровневые, и при этом сам язык достаточно мощен, гибок и защищён от ошибок, чтобы программирование на нём было вполне удобным. Практический смысл этого - возможность использовать один и тот же код на самых разных платформах. Ранее для такой цели я использовал C, но было сложно назвать это удобным и надёжным.
Так как я задумывал транслятор с возможностью дальнейшего развития, то для него я выбрал более сложную архитектуру, чем возможно для Oberon. Трансляция проходит в два этапа - сначала разборщик исходного кода формирует синтаксическое дерево, затем по нему производится выходной код. Это отсрочило выход 0-й версии, но в дальнейшем позволит легче добавлять другие диалекты Oberon в качестве входных языков, а также другие целевые платформы.
Но пока предстоит немало потрудиться над стабильностью транслятора и над качеством производимого C-кода, поэтому о других целях говорить рано.
Расширение командного режима
Расширены возможности кода Oberon-команд в трансляторе Восток. Эти возможности являются альтернативой частным и в то же время однообразным р...
-
Добавлено свойство проверяемости при работе с низкоуровневыми адресами в процедурах из SYSTEM — ADR, BIT, GET, PUT, COPY. Прове...
-
На примере языка Oberon представлен общий подход [0] , позволяющий на основе высокоуровневых средств создать безопасную по памяти программну...
-
Воспользовавшись тестом на производительность с форума oberspace , реализованного для разных языков, проверил свой транслятор . ...

