OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 22 Октябрь, 2018 23:55

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Творческая идея и проект
СообщениеДобавлено: Среда, 19 Октябрь, 2016 04:12 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2190
Откуда: Красноярск
Сделать транслятор Компонентного Паскаля в Oberon-07.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Среда, 19 Октябрь, 2016 08:23 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1066
Откуда: СССР v2.0 rc 1
Ты говоришь о трансляторе (переводчике) или о полноценной кросс-компиляции?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Среда, 19 Октябрь, 2016 09:50 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2190
Откуда: Красноярск
prospero78 писал(а):
Ты говоришь о трансляторе (переводчике) или о полноценной кросс-компиляции?

Трансляторе. Просто ведь есть компилятор Оберон-07 в RISС от Вирта, и компилятор Александра под ARM. Еще развиваются компиляторы Оберон-07 под другие платформы, так что со временем это позволило бы использовать эти наработки для портирования КП. Точнее, это бы позволило упросить компилятор КП, чтобы на входе они принимал реально Оберон-07, и взять для него пару готовых бэкендов, Вирта и Ширяева.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Среда, 19 Октябрь, 2016 09:54 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1066
Откуда: СССР v2.0 rc 1
Я бы сделал анализ-AST-синтез.
Входной и выходной языки можно сделать хоть Basic, хоть ассемблер.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Среда, 19 Октябрь, 2016 13:41 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2524
Откуда: Россия, Ярославль
Транспилер!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Среда, 19 Октябрь, 2016 18:06 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 713
Откуда: Казань
На самом деле нужно сделать немного другое. Нужно договориться об интерфейсе между компилятором и кодогенератором. Затем, если реализовать данный интерфейс вызовов кодогенератора в Black Box и использовать кодогенератор от другого компиляторы под специфическую платформу, то они будут стыковаться друг с другом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Среда, 19 Октябрь, 2016 18:27 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1066
Откуда: СССР v2.0 rc 1
Rifat писал(а):
На самом деле нужно сделать немного другое. Нужно договориться об интерфейсе между компилятором и кодогенератором. Затем, если реализовать данный интерфейс вызовов кодогенератора в Black Box и использовать кодогенератор от другого компиляторы под специфическую платформу, то они будут стыковаться друг с другом.

Идея из разряда "классика", но Ваня говорит пока про вещи попроще: просто привести текст на Компонентном Паскале к семантически равному на Обероне-07.
Я так, подозреваю, он хочет всех напрячь, чтобы получить транспилер за счёт коллективного разума для личных целей)))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Среда, 19 Октябрь, 2016 18:50 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2190
Откуда: Красноярск
Не хочу никого напрячь, и чтобы снять любые подозрения, мне такая штука пока совсем не нужна. Но в перспективе Oberon-07 может стать неким стандартом, как LLVM. Идея навеяна обсуждениями, что Оберон-07 может быть альтернативой Си. Поэтому вместо того, чтобы делать транслятор КП в Си или LLVM, лучше сделать транслятор КП а Oberon-07. А уже для Oberon-07 делать оптимизаторы и компиляторы в AMD64, ARM, x86 и т.п. Не знаю насколько эта идея правильная, но родилась такая творческая мысль. Критика приветствуется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Среда, 19 Октябрь, 2016 21:40 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 713
Откуда: Казань
Идея интересная, критика только в том, что будет двойной парсинг, сначала исходники парсятся чтобы преобразовать КП в Оберон-07, а затем исходники Оберон-07 будут компилироваться. При этом, скорее всего, будут некоторые вещи, которые не могут быть преобразованы один в один. Например, в КП есть WCHAR, которого нет в Обероне-07. Это не единственная нестыковка может быть. В любом случае, нужно будет городить какие-нибудь специальные модули, которые должны будут собираться с преобразованной программой, чтобы поддерживать какие-нибудь фичи КП, которых нет в Обероне-07.

И вы сказали про оптимизирующие компиляторы для Оберон-07. Лично я пока такие не знаю. Обычно большинство реализаций компилируют без всяких оптимизаций.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Четверг, 20 Октябрь, 2016 09:35 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9011
Откуда: Россия, Орёл
У меня давно есть желание описать рантайм КП-шный на С++ (или на С, как коллега Comdiv тут показывал ООП недавно, но скорее С++) - условно, чтобы КП-шное приложение отображалось туда в виде class MyModule: CP::Module {...
class Type: CP::Type...

- и могло как использоваться внятно из С++ кода, так и наоборот, легко биндится с плюсами (если нужно при некотором оборачивании, редукции плюсового класса).

В принципе, всё это реализуемо достаточно очевидным образом.

Плюсы: переносимость максимальная, оптимизаторы кода, использование существующих библиотек, внедрение в сфере встроенки в виде DSL-надстройки над существующей С++-экосистемой... А ещё... Эльбрусы ))

Просьба покритиковать идею.

UPD: не доформулировал мысль-то.. Можно это понять, как фреймворк в плюсах.
Нет, естественно, речь о трансляторе КП в код на базе этого С++-рантайма


Последний раз редактировалось Илья Ермаков Четверг, 20 Октябрь, 2016 10:50, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Четверг, 20 Октябрь, 2016 10:24 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1066
Откуда: СССР v2.0 rc 1
При всём желании Илья -- не смогу)) Я могу только строить предположения, как в Компонентном Паскале сделан рантайм)).
Про С++ прошёлся только по вершкам, так что здесь я чуть ли не ещё менее полезен.
Единственно, что могу написать: Компонентный Паскаль в С++ придаст больше структуры и предсказуемости. Это лучше чем просто С++)))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Четверг, 20 Октябрь, 2016 12:50 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 195
Откуда: Украина, Днепропетровская обл.
Иван Денисов писал(а):
Поэтому вместо того, чтобы делать транслятор КП в Си или LLVM, лучше сделать транслятор КП а Oberon-07.
Меня терзают смутные сомнения касательно самой возможности существования такого транслятора. Хорошо транслировать в Си, там есть не только оператор выхода из цикла, но даже и goto. А при КП-в-O7 во что будет транслироваться выход по RETURN из середины процедуры? А EXIT из LOOP? Чувствуете принципиальную нерешаемость этой задачи? Не, её наверное даже можно решить, но не средствами чистого Оберона-07, а какими-то системными средствами, подобными использованным в Active BlackBox:

Код:
Cp.Loop;
...
  Cp.Exit;
...
Cp.End;
Внутри - всякие стеки и ядрёные возможности. Но непереносимо. ;-)

Илья Евгеньевич, а Вы видели транслятор КП-в-Си от OMinc? Он может оттранслировать кернел BlackBox в Си. Я не пробовал, но наверное может. Судя по некоторым моим опытам он нуждается в некоторой полировке, однако вполне работоспособен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Четверг, 20 Октябрь, 2016 13:32 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1066
Откуда: СССР v2.0 rc 1
Я бы вообще задумался про то, что есть странности работы в 3В (BlackBox Builder) и я бы рискнул повторить его (если сделать что-то другое) на основе консольной версии 3В.
По-моему, вопрос вполне можно решить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Четверг, 20 Октябрь, 2016 13:38 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 708
Откуда: Киев
Илья Ермаков писал(а):
У меня давно есть желание описать рантайм КП-шный на С++ (или на С, как коллега Comdiv тут показывал ООП недавно, но скорее С++) - условно, чтобы КП-шное приложение отображалось туда в виде class MyModule: CP::Module {...
class Type: CP::Type...

- и могло как использоваться внятно из С++ кода, так и наоборот, легко биндится с плюсами (если нужно при некотором оборачивании, редукции плюсового класса)

Идея транслятора Оберона в mainstream языки посещала меня давно. Скромная продуманность Оберона позволяет относительно ровно отображать его на другие языки и при этом не испытывать сильных ограничений, блокирующих разработку.

Был у меня проект, на котором в разные периоды времени было целесообразно использовать: C, Objective-C, Java, Typescript, Go. С для микроконтроллера, Objective-C для iOS, Java для Android, Go для сервера, Typescript -> Javascript для веб-приложения, а затем и для замены Objective-C и Java на мобильных платформах. У всех приложений была довольно существенная общая часть. В нашем случае лучшим кандидатом для написания общей части был C. С++ подходит гораздо хуже, даже если в чём-то он предоставляет больше контроля и удобств.

Но если для микроконтроллера и iOS С подходил хорошо, в Go был терпим, то с Java возникло много проблем, а c Javascript было много нетипизированной возни, потребовавшей добавления новых возможностей. В отличии от C, Oberon мог бы гораздо бесшовней лечь на все названные языки. Но для С - есть все нужные инструменты и весьма хорошие, а для Оберона - нет. Пожалуй, так будет не всегда.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Четверг, 20 Октябрь, 2016 13:57 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 708
Откуда: Киев
Oleg N. Cher писал(а):
Меня терзают смутные сомнения касательно самой возможности существования такого транслятора. Хорошо транслировать в Си, там есть не только оператор выхода из цикла, но даже и goto. А при КП-в-O7 во что будет транслироваться выход по RETURN из середины процедуры? А EXIT из LOOP? Чувствуете принципиальную нерешаемость этой задачи? Не, её наверное даже можно решить, но не средствами чистого Оберона-07

Тут нет непреодолимых препятствий, но, наверное, и не нужно перетаскивать эти возможности, а следует переписать неугодные части.

Если же есть острая необходимость, то транслятор будет делать что-то вроде:
Код:
IF c1 THEN
   RETURN r1
END;
IF c2 THEN
   st2
END;
RETURN r2

брюки превращаются в
Код:
VAR
   returnValue: Type;
   returnCalled: BOOLEAN;
...
returnCalled := FALSE;
IF c1 THEN
   returnValue := r1;
   returnCalled := TRUE
END;
IF ~returnCalled & c2 THEN
   st2
END;
IF ~returnCalled THEN
    returnValue := r2
END;
RETURN returnValue

Подобные преобразования не сложны для транслятора и не требуют лезть во внутренности системы. Об оптимизации можно забыть, но это и правильно, ибо нечего писать неструктурно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Четверг, 20 Октябрь, 2016 14:52 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 195
Откуда: Украина, Днепропетровская обл.
Comdiv писал(а):
Тут нет непреодолимых препятствий, но, наверное, и не нужно перетаскивать эти возможности, а следует переписать неугодные части.
Если мы говорим о полном трансляторе КП-в-О7, то подразумевается возможность трансляции КП без изменений и переписываний, как есть. Не так ли? Сама ценность его в том, что можно транслировать готовый код без его модификации.

Если же это будет транслятор подмножества КП, тогда уже, ясно, другой перец.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Четверг, 20 Октябрь, 2016 16:02 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 708
Откуда: Киев
Про полный транслятор я тоже ответил. Трансляция без преобазований в общем случае возможна только в строго более мощный язык. Вы писали, что хорошо транслировать в Си, потому что там есть goto, но перевести и в Си, и в С++ без преобразований тоже не получится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Четверг, 20 Октябрь, 2016 17:57 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9011
Откуда: Россия, Орёл
Oleg N. Cher писал(а):
Илья Евгеньевич, а Вы видели транслятор КП-в-Си от OMinc? Он может оттранслировать кернел BlackBox в Си. Я не пробовал, но наверное может. Судя по некоторым моим опытам он нуждается в некоторой полировке, однако вполне работоспособен.


Нет, не видел, большое спасибо за наводку!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Четверг, 20 Октябрь, 2016 18:00 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9011
Откуда: Россия, Орёл
prospero78 писал(а):
Я бы вообще задумался про то, что есть странности работы в 3В (BlackBox Builder) и я бы рискнул повторить его (если сделать что-то другое) на основе консольной версии 3В.
По-моему, вопрос вполне можно решить.


Прошу прощения, но не понял этого тезиса вообще.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Творческая идея и проект
СообщениеДобавлено: Четверг, 20 Октябрь, 2016 19:10 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1066
Откуда: СССР v2.0 rc 1
Ну например: при выделении текста и удержании мышки -- тормозится анимация, приложения все пилят в один поток (а хорошо бы графику в основном, таймеры в другом, и полезные процессы со своими сборщиками мусора в n-потоках).

Как-то так)))


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2018, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB