OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 09:40

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




Начать новую тему Ответить на тему  [ Сообщений: 65 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Вторник, 05 Март, 2019 21:55 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Это все хорошо и правильно. Но смущает вот что
Цитата:
Для начала однопроходная, методом рекурсивного спуска. А затем — тот же метод рекурсивного спуска, но для построения абстрактного синтаксического дерева.

Мне кажется, при таком подходе труднее добиться
Цитата:
Достаточно прост во внутреннем устройстве и понимании


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Вторник, 05 Март, 2019 22:55 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
kekc_leader писал(а):
Блэкбокс есть, но он ограничен архитектурой 486-х процессоров.
Вы мало понимаете в предмете, лучше не начинайте компилятор Оберона, назовите это как-нибудь иначе, чтобы тень на исходный язык не отбрасывало.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Вторник, 05 Март, 2019 23:10 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
kekc_leader писал(а):
Компилирует в машинный код, а не в другой язык программирования
Я на всякий случай уточню, что машинный код - это программа на машинном языке программирования, то есть, трансляция в машинный код - это, опять-таки, трансляция "в другой язык программирования". Даже формат абстрактного синтаксического дерева - это тоже язык программирования, хотя и задаваемый по другому.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Вторник, 05 Март, 2019 23:21 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Trurl писал(а):
Мне кажется, при таком подходе труднее добиться
Цитата:
Достаточно прост во внутреннем устройстве и понимании
Кстати, встречал людей, которым, наоборот, было проще работать с синтаксическим деревом, чем напрямую выполнять действия или генерировать код. Да и полезно было бы зафиксировать разные стадии развития транслятора. В принципе, полезно одновременно иметь и наиболее простую - оперативную версию транслятора и многостадийную версию.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Среда, 06 Март, 2019 03:46 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
Trurl писал(а):
Это все хорошо и правильно. Но смущает вот что
Цитата:
Для начала однопроходная, методом рекурсивного спуска. А затем — тот же метод рекурсивного спуска, но для построения абстрактного синтаксического дерева.

Мне кажется, при таком подходе труднее добиться
Цитата:
Достаточно прост во внутреннем устройстве и понимании

Отнюдь. В итоге останется только абстрактное синтаксическое дерево. Однопроходный компилятор будет строиться в начале книги, да и для нас самих, как для начинающих разработчиков компилятора, написание однопроходного компилятора было необходимым шагом. Диалектический материализм учит, что любую вещь надо показывать в развитии, а не в застывшем, «готовом» виде.

Пётр Кушнир писал(а):
Вы мало понимаете в предмете, лучше не начинайте компилятор Оберона, назовите это как-нибудь иначе, чтобы тень на исходный язык не отбрасывало.

Это недоказанное утверждение. Подавляющее большинство существующих компиляторов Оберона, Оберона-2 и Оберона-07, а также Компонентного Паскаля, нами изучены. В теме мы разбираемся хорошо. Более того, если проследить за нашей деятельностью, то можно увидеть, что опубликованный в репозитории код не представляет основную ветвь проекта, а является новым кодом, начатым заново. Основная версия уже компилирует простейшие программы в исполняемый ELF-файл (Линукс, x86), не используя трансляцию в другой язык программирования или какую-либо другую вспомогательную утилиту. Работают все арифметические операции, обработка сложных выражений, присваивание, вызов процедур из модулей In, Out. Соответственно есть (и работает) библиотека времени выполнения.

Comdiv писал(а):
kekc_leader писал(а):
Компилирует в машинный код, а не в другой язык программирования
Я на всякий случай уточню, что машинный код - это программа на машинном языке программирования, то есть, трансляция в машинный код - это, опять-таки, трансляция "в другой язык программирования". Даже формат абстрактного синтаксического дерева - это тоже язык программирования, хотя и задаваемый по другому.

Там и написано «в машинный код, а не в другой язык программирования», так что вашему утверждению это не противоречит.
Из контекста, однако, должно быть ясно, что имеется в виду язык программирования высокого уровня, такой, например, как Си. Машинный код таким языком не является. Но спасибо за уточнение.

Comdiv писал(а):
...Да и полезно было бы зафиксировать разные стадии развития транслятора. В принципе, полезно одновременно иметь и наиболее простую - оперативную версию транслятора и многостадийную версию.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Среда, 06 Март, 2019 12:00 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
kekc_leader писал(а):
Это недоказанное утверждение. Подавляющее большинство существующих компиляторов Оберона, Оберона-2 и Оберона-07, а также Компонентного Паскаля, нами изучены. В теме мы разбираемся хорошо.
Во-первых, в собственном деле никто не может быть судьей. Во-вторых, доказательством, кхм, является приведённая мной цитата из вашего поста.
kekc_leader писал(а):
Блэкбокс есть, но он ограничен архитектурой 486-х процессоров.
Она говорит о том, что вы либо предвзяты и расчитываете на частные успехи вашей собственной команды (занять своей разработкой полянку ББ, например), либо не изучили нихрена, на самом деле, и теперь, в результате этого, просто будете делать кучу лишней работы вместо создания кодогенератора для компилятора ББ или компилятора А2.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Среда, 06 Март, 2019 12:24 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Пётр Кушнир писал(а):
вместо создания кодогенератора для компилятора ББ или компилятора А2.

Вот только для книги они мало подходят.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Среда, 06 Март, 2019 12:38 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Trurl писал(а):
Пётр Кушнир писал(а):
вместо создания кодогенератора для компилятора ББ или компилятора А2.

Вот только для книги они мало подходят.
Это неизвестно и непонятно, почему разработка нормального компилера с AST и сменными кодогенераторами по мотивам Compiler Construction должна привести к чему-то, отличному от OP2.Paper (кажется, так она называлась)?
И это (тут уже просто мысли вслух) ведь без slim binaries, без планов на стандартную библиотеку уровня 2019 года, без чего-то революционного, как в rust или kotlin, просто ещё один оберон-компилятор, который конечно же будет лучше чем ББ ваш мерзкий-под-винду.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Среда, 06 Март, 2019 13:56 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Для книжки кодогенератор делать лучше в виртуальную машину...
Иначе придется много конкретики писать для конкретного типа компьютера...
Я так понимаю, что отдельный модуль - это отдельный объектный файл?
А собираться будет стандартными средствами в конкретной оси?
Почему бы не рассмотреть вариант LLVM?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Среда, 06 Март, 2019 14:23 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Валерий Лаптев писал(а):
Почему бы не рассмотреть вариант LLVM?

Какой версии?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Четверг, 07 Март, 2019 03:54 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
Пётр Кушнир писал(а):
...Доказательством, кхм, является приведённая мной цитата из вашего поста.

Блекбокс действительно выдаёт код только для архитектуры 486 (не ниже). К нему можно подключать другие модули кодогенератора, но мы новые модули кодогенератора для Блекбокса писать (пока) не хотим.
Для того, чтобы это сделать, надо как следует разобраться в компиляторе Блекбокса, а также в компиляторах как таковых, в машинных кодах, форматах исполняемых файлов. Краткий путь к этому состоит в том, чтобы написать свой компилятор с нуля. Для этого Вирт даже книгу написал. Если вы считаете, что можно вполне освоить инженерную дисциплину без надлежащей практики, то вы ошибаетесь.

Пётр Кушнир писал(а):
Она говорит о том, что вы либо предвзяты и расчитываете на частные успехи вашей собственной команды (занять своей разработкой полянку ББ, например), либо не изучили нихрена, на самом деле, и теперь, в результате этого, просто будете делать кучу лишней работы вместо создания кодогенератора для компилятора ББ или компилятора А2.

Логики в этом высказывании нет, есть только брызганье ядом. В чём смысл тратить кучу времени, занимаясь бесплатной работой, чтобы в итоге произвести бесплатный и открытый компилятор? Здесь вы при всём желании не найдёте корыстного умысла. По себе не судите.

Блекбокс и А2 — замечательные проекты, но почему-то в большой степени боршенные и не доведённые до того состояния, до которого их бы можно было довести. Видимо, одна из причин — небольшое сообщество компиляторостроителей, т. к. тема очень сложная, а подходящих книг, при всём уважении к Вирту, Свердлову и другим авторам, недостаточно. Книги тоже очень хорошие, даже, пожалуй, гениальные. Перечитаны и проштудированы не один раз. Эта тема обсуждалась на форуме раньше (в том числе и в связи с работой над новым компилятором). Если бы был замчетальный законченный Блекбокс или А2, или к их доработке можно было бы преступить как-то иначе, кроме как создав сначала свой компилятор, это было бы замечательно. Весь опыт Вирта учит нас, что, чтобы овладеть созданием компиляторов, надо проделывать этот путь самому.
Брызганье ядом по этому поводу и какие-то смешные обвинения вызывают не более, чем жалость.



P. S. Посмотрел сообщения Петра Кушнира (а он уже перешёл на личности). Видимо он просто ненормальный — все его сообщения выглядят примерно так: «Я всегда знал, что вы негодяй и подлец!» и «А вот и ещё один недоумок». Предлагаю вообще закончить с ним разговор.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Четверг, 07 Март, 2019 04:11 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
Валерий Лаптев писал(а):
Для книжки кодогенератор делать лучше в виртуальную машину...

Уже есть много замечательных книжек, которые компилируют в виртуальную машину (та же книга Вирта или Свердлова). Основы компиляторостроения там хорошо показаны. Не показана там реальная ситуация, реальные возникающие в работе затруднения, когда речь заходит о комплияции под конкретный процессор (однако есть такие книги для процессоров семейства ARM). Отдельная глава книги будет посвящена программированию на ассемблере, в том числе на конкретных процессорах. Хороших всеобъемлющих справочников по машинным кодам тоже нет (по крайней мере, сколько ни искали, не нашли). Мы такой справочник по ходу работы уже во многом создали для x86 (как кодировать различные инструкции).

Валерий Лаптев писал(а):
Я так понимаю, что отдельный модуль - это отдельный объектный файл?

Да, причём, в случае, если модуль должен быть пригоден для динамической подгрузки (в какой-то момент после начала выполнения программы), то это ещё должен быть и DLL/so-файл.

Валерий Лаптев писал(а):
А собираться будет стандартными средствами в конкретной оси?

Пока что собираем сами, но сейчас у нас всего один объектный файл + библиотека времени выполнения.
Формат объектных файлов может быть стандартный «.o», чтобы его можно было подключать к программам на Си, или же может быть свой формат. Во втором случае должен быть и свой компоновщих.

Валерий Лаптев писал(а):
Почему бы не рассмотреть вариант LLVM?

Увы, это исключено (хотя, как один из выходных форматов — почему бы и нет?).
Если представить себе альтернативную вселенную, где мы писали бы компилятор языка PL/1 или PHP, то такой вариант был бы вполне подходящим. Однако преимущество Оберона состоит именно в его надёжности. Язык-посредник типа LLVM или Си ликвидирует саму возможность такой надёжности. То есть если транслятор Оберона в такой язык посредник будет аккуратно написанным, выверенным, даже верифицированным, про код компилятора LLVM такое сказать уже будет нельзя. Трансляция в Си и LLVM даёт большие возможности для портирования программ (да и самого компилятора) на другие платформы, но сама по себе не может служить основой, вполне соответствующей идее Оберона.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Четверг, 07 Март, 2019 09:44 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
kekc_leader писал(а):
Логики в этом высказывании нет, есть только брызганье ядом.
Полезное свойство логыки в интернетных спорах - кто первый вспомнил про логику, тот и самый логычный.
kekc_leader писал(а):
Если вы считаете, что можно вполне освоить инженерную дисциплину без надлежащей практики, то вы ошибаетесь.
Вы уж определитесь, вы разбираетесь в предмете или не разбираетесь, а то ведь если не разбираетесь, или диалектично разбираетесь и не разбираетесь одновременно, какого чёрта вы вообще тут высказываете оценочные суждения, молчите и слушайте, что вам говорят.
kekc_leader писал(а):
Если бы был замчетальный законченный Блекбокс или А2, или к их доработке можно было бы преступить как-то иначе, кроме как создав сначала свой компилятор, это было бы замечательно
Не вам судить, вы не разбираетесь в предмете достаточно глубоко, не вполне освоили ещё.
kekc_leader писал(а):
P. S. Посмотрел сообщения Петра Кушнира (а он уже перешёл на личности). Видимо он просто ненормальный — все его сообщения выглядят примерно так: «Я всегда знал, что вы негодяй и подлец!» и «А вот и ещё один недоумок». Предлагаю вообще закончить с ним разговор.
Разменивать вежливость на осмысленность это такая позднесоветская псевдоинтеллектуальная причуда или что? Или вы со своим серпом и молотом самый нормальный тут? Еще раз предлагаю, заткнитесь. Это не от грубости, это вам на пользу пойдёт. Думаете, выучили пару ленинских оборотов и сразу стали утончённым полемистом? Вы не первый и не последний гипер-активист с шизоидными противоречиями в многословных высказываниях на этом форуме. Только выхлоп от вас, как всегда. Всех я уже и не вспомню, и каждый спотыкался об простые вопросы, типа последнего, полулиспера, который ast от исходников не отличает. А уж как рассуждать умеет, и про ББ, и про сообщество, и меня сразу раскусил. Шиза.


Последний раз редактировалось Пётр Кушнир Четверг, 07 Март, 2019 09:56, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Четверг, 07 Март, 2019 09:48 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
kekc_leader писал(а):
К нему можно подключать другие модули кодогенератора

Если быть точным, у него можно заменить модуль кодогенератора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Четверг, 07 Март, 2019 12:37 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
kekc_leader писал(а):
P. S. Посмотрел сообщения Петра Кушнира (а он уже перешёл на личности). Видимо он просто ненормальный — все его сообщения выглядят примерно так: «Я всегда знал, что вы негодяй и подлец!» и «А вот и ещё один недоумок». Предлагаю вообще закончить с ним разговор.
Пётр Кушнир писал(а):
Разменивать вежливость на осмысленность это такая позднесоветская псевдоинтеллектуальная причуда или что? Или вы со своим серпом и молотом самый нормальный тут? Еще раз предлагаю, заткнитесь. Это не от грубости, это вам на пользу пойдёт. Думаете, выучили пару ленинских оборотов и сразу стали утончённым полемистом? Вы не первый и не последний гипер-активист с шизоидными противоречиями в многословных высказываниях на этом форуме. Только выхлоп от вас, как всегда. Всех я уже и не вспомню, и каждый спотыкался об простые вопросы, типа последнего, полулиспера, который ast от исходников не отличает. А уж как рассуждать умеет, и про ББ, и про сообщество, и меня сразу раскусил. Шиза.

Так, товарищи, завязывайте со взаимными разборками. Хочется словесно друг другу набить морду -- в ЛС.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Четверг, 07 Март, 2019 15:06 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
Нет никакого желания разводить споры не по существу вопроса.

Товарищи, есть ли ещё вопросы по компилятору?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Четверг, 07 Март, 2019 15:26 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Если кто-то захочет присоединиться, то на каком сайте регистрироваться? Где вы обсуждения ведете на форуме, телеграме или где-то еще?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Четверг, 07 Март, 2019 18:53 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
Rifat писал(а):
Если кто-то захочет присоединиться, то на каком сайте регистрироваться? Где вы обсуждения ведете на форуме, телеграме или где-то еще?

Сейчас все участники проекта живут в Риге, поэтому обсуждение и работу ведём вживую. Можно создать чат в Телеграме.
Писать можно мне или через сайт freeoberon.su.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Пятница, 08 Март, 2019 19:58 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 592
Цитата:
Хороших всеобъемлющих справочников по машинным кодам тоже нет (по крайней мере, сколько ни искали, не нашли).

По ARM это Architecture Reference Manual - всеобъемлющее не бывает; берутся с сайта ARM, причём на каждую версию - отдельный документ, к примеру DDI0403E_C для v7M, а DDI0406C_C для v7A и v7R.


Вложения:
DDI0403E_C_ARM_v7M_ArchitectureRefMan.pdf [5.75 МБ]
Скачиваний: 359
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Суббота, 09 Март, 2019 01:50 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
Спасибо. Да, с ARM всё гораздо проще.


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

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


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

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


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

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