OberonCore
https://forum.oberoncore.ru/

Oberon-07M for Windows
https://forum.oberoncore.ru/viewtopic.php?f=115&t=3341
Страница 2 из 2

Автор:  Rifat [ Вторник, 22 Март, 2011 13:23 ]
Заголовок сообщения:  Re: Oberon-07M for Windows

Кратко отвечу на некоторые вопросы:

* Возможен ли динамический массив, элементами которого являются статические массивы?
Да возможны: POINTER TO ARRAY OF ARRAY 10 OF CHAR
Проверьте по грамматике языка, это должно следовать из грамматики

* Как пользоваться ImportedProcedure?
Также можно посмотреть в грамматике и как пример файл WinApi.ob7

* На какие целевые архитектуры и ОС рассчитан компилятор (учитывая, что австралийский аналог производит исполнимый код только для микроконтроллеров)?
Расчитан на x86 под Windows

* Не помню, был ли LONGREAL в исходном Oberon-07. Если нет, то это надо указать в "добавлениях".
Было.

* Ничего не сказано о том, в какой файл помещается среда времени выполнения, а также о том, в каком формате создаются исполнимые файлы (exe, dll).
Сборщик мусора располагается в модуле Memory. Проверки времени выполнения размещены в коде, рядом с кодом, которые они проверяют. Исполнимые файлы создаются в формате PE (EXE).

* Какой аллокатор памяти используется, и если свой собственный, то как он работает.
Память запрашивается у системы, при помощи VirtualAlloc. Детали можно посмотреть в коде в файле Memory.

* Как насчет встраивания компилятора в какие-нибудь IDE или редакторы под Windows/Linux?
Под Linux компилятор пока не работает. Насчет встаивания в IDE, думаю что возможно, так как многие консольные компиляторы можно вызывать из IDE, но я этим пока не занимался.

Автор:  Сергей Прохоренко [ Вторник, 22 Март, 2011 19:32 ]
Заголовок сообщения:  Re: Oberon-07M for Windows

Rifat писал(а):
Кратко отвечу на некоторые вопросы:
* Ничего не сказано о том, в какой файл помещается среда времени выполнения, а также о том, в каком формате создаются исполнимые файлы (exe, dll).
Сборщик мусора располагается в модуле Memory. Проверки времени выполнения размещены в коде, рядом с кодом, которые они проверяют. Исполнимые файлы создаются в формате PE (EXE).


То есть, все модули, включая модуль Memory, содержащий сборщик мусора, компилятся в один большой exe-шник, содержащий в себе и прикладную программу, и проверки времени выполнения? Правильно ли я понял?

Автор:  Alexey Veselovsky [ Вторник, 22 Март, 2011 19:52 ]
Заголовок сообщения:  Re: Oberon-07M for Windows

Сергей Прохоренко писал(а):
То есть, все модули, включая модуль Memory, содержащий сборщик мусора, компилятся в один большой exe-шник, содержащий в себе и прикладную программу, и проверки времени выполнения? Правильно ли я понял?

Да, очень большой. 40Кб.
Вообще то лучше один раз пощупать чем долго выспрашивать. Компилятор доступен всем.

Автор:  Сергей Прохоренко [ Понедельник, 25 Апрель, 2011 22:49 ]
Заголовок сообщения:  Re: Oberon-07M for Windows

Rifat писал(а):
Появился новый компилятор для языка программирования Oberon-07M. "M" означает, что язык разширен, в частности разрешены одномерные динамические массивы.


Только сейчас я обратил внимание на то, что обе имеющиеся реализации Oberon-07 расширяют его, в частности, динамическими массивами: Oberon for LPC2000 Microcontrollers. Может быть, и некоторые другие расширения из указанной реализации имеет смысл включить в реализацию для Windows? Не выхолащивая "дух" языка, "букву" можно подправить для расширения его потенциальной области применения. Не секрет, что Вирт всегда делал языки под какую-то конкретную текущую потребность, и им подчас не хватает универсальности. Я не призываю возвращать в язык отвергнутые по принципиальным соображениям конструкции или добавлять что-то из "неродственных" языков.

Автор:  Евгений Темиргалеев [ Вторник, 26 Апрель, 2011 09:11 ]
Заголовок сообщения:  Re: Oberon-07M for Windows

Сергей Прохоренко писал(а):
Не секрет, что Вирт всегда делал языки под какую-то конкретную текущую потребность, и им подчас не хватает универсальности.
С первой частью согласен, вторую считаю ошибочной. Смотря как рассматривать универсальность.

У Вирта универсальность = баланс --- самое существенное (необходимое)/простота (make it simple but not simpler --- лучше тут не выразишь). Благодаря чему инструмент можно легко применить в произвольной области (портировать, доработать под специфику, пр.). Последнее --- доработку общего инструмента под специфику Вирт сам практикует. Как пример, его же компилятор Оберон-07: http://oberoncore.ru/wiki/lang/oberon-07

Если же Вы будете трактовать универсальность как наличие готового решения на любой случай, то... По-моему, такой подход --- утопия.


Почему Вирт из базы убрал дин. массивы --- значит на своём опыте счёл это средство несущественным = неоправдывающим свою сложность. Сейчас я с ним скорее согласен --- после ковыряния в кишках ББ (DevDebug) и приблизит. осознания, чего стоят дин. массивы. Остальных (в т.числе и Вас, Сергей) --- призываю сначала наработать опыт работы без дин. массивов, а потом делать выводы (насчёт нехватки универсальности).

Касательно сделать дин. массивы расширением --- автор компилятора волен делать любые расширения, какие захочет... Но опять же --- считаю, что игнорировать опыт Вирта (не прислушаться) --- глупо; его стоит проверить (касательно дин. массив = универсальное или частное средство)...

Автор:  Евгений Темиргалеев [ Вторник, 26 Апрель, 2011 09:32 ]
Заголовок сообщения:  Re: Oberon-07M for Windows

Кстати, в Виртовском комплияторе для ARM дин. массивы тоже есть в виде расширения. Cамый сложный момент отсутствует.
An Oberon Compiler for the ARM Processor писал(а):
19. Dynamic Arrays
Dynamic arrays are here introduced as an addition to Oberon. An array is called dynamic, if its
length is determined “dynamically”, i.e. at execution time. This is done by a call to the intrinsic
procedure NEW with a second parameter indicating the desired length. Example:
VAR a: ARRAY OF INTEGER;
BEGIN ... NEW(a, len) ...
where len is an expression of type INTEGER and a non-negative value. The mechanism for open
arrays (parameters) is reused.
...
Dynamic arrays cannot be elements of other data structures.

Автор:  Сергей Прохоренко [ Вторник, 26 Апрель, 2011 11:23 ]
Заголовок сообщения:  Re: Oberon-07M for Windows

Евгений Темиргалеев писал(а):
Кстати, в Виртовском комплияторе для ARM дин. массивы тоже есть в виде расширения.


Выходит, Вирт не прислушался к самому себе? :wink:
Просто он более гибок и не связывает себя прецедентами.

Автор:  Евгений Темиргалеев [ Вторник, 26 Апрель, 2011 11:37 ]
Заголовок сообщения:  Re: Oberon-07M for Windows

Сергей Прохоренко писал(а):
Евгений Темиргалеев писал(а):
Кстати, в Виртовском комплияторе для ARM дин. массивы тоже есть в виде расширения.

Выходит, Вирт не прислушался к самому себе? :wink:
Просто он более гибок и не связывает себя прецедентами.
"Выходит, Вирт не прислушался к самому себе? :wink: "
Если Вы сделали этот вывод из моего сообщения (viewtopic.php?p=62755#p62755), то Вы его не поняли. А более вероятно --- не пытались. :wink:

"Просто он более гибок и не связывает себя прецедентами."
Вирт, стараясь оставить в определении языка только самое существенное, не связывает "прецендентами" ВСЕХ (например: попробуйте сделать, реализацию компилятора стандартного Си++, как Rifat сделал Oberon-7).

Автор:  Владислав Жаринов [ Вторник, 26 Апрель, 2011 15:09 ]
Заголовок сообщения:  Re: Oberon-07M for Windows

Евгений Темиргалеев писал(а):
Кстати, в Виртовском комплияторе для ARM дин. массивы тоже есть в виде расширения.
An Oberon Compiler for the ARM Processor писал(а):
19. Dynamic Arrays
...
Dynamic arrays cannot be elements of other data structures.
Т.е. динмассивы только для связки потоков между внешним окружением программы и её внутренними переменными... программа должна брать элементы и "разносить" по внутренним структурам данных прежде, чем использовать (или класть свои результаты в элементы, дабы сделать их доступными окружению) ... а открытость длины - чтобы меньше зависеть от относительного темпа источника и потребителя?.. Кстати, в таком понимании открытость достаточна только по одному измерению вроде.

Автор:  Евгений Темиргалеев [ Суббота, 14 Май, 2011 18:58 ]
Заголовок сообщения:  Re: Oberon-07M for Windows

Евгений Темиргалеев писал(а):
"Просто он более гибок и не связывает себя прецедентами."
Вирт, стараясь оставить в определении языка только самое существенное, не связывает "прецендентами" ВСЕХ
В подтверждение этой мысли:
http://oberoncore.ru/_media/wiki/lang/w ... -07.en.pdf
The Programming Language Oberon Revision 1.11.2008 писал(а):
1. Introduction
...
This report is not intended as a programmer's tutorial. It is intentionally kept concise. Its function
is to serve as a reference for programmers, implementors, and manual writers. What remains
unsaid is mostly left so intentionally, either because it is derivable from stated rules of the
language, or because it would unnecessarily restrict the freedom of implementors.

P.S. Одностраничная сводка про отличия Оберон-07 от Оберон и специфику виртовского компилятора Oberon-07 для ARM: http://oberoncore.ru/_media/wiki/lang/w ... nce.en.pdf

Страница 2 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/