OberonCore
https://forum.oberoncore.ru/

Темы и вопросы к шестому выпуску "Радио Оберон"
https://forum.oberoncore.ru/viewtopic.php?f=156&t=6368
Страница 1 из 6

Автор:  Sergey Volkov [ Понедельник, 18 Март, 2019 14:58 ]
Заголовок сообщения:  Темы и вопросы к шестому выпуску "Радио Оберон"

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

Автор:  Sergey Volkov [ Среда, 20 Март, 2019 22:00 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Ждем в гости Владимира Лося и Олега Чередниченко

Автор:  Sergey Volkov [ Понедельник, 25 Март, 2019 11:52 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Выпуск вышел без ваших тем и вопросов: http://obertone.ru/radio

К нам в гости пришёл Олег Чередниченко. Мы обсдудил языки программирования
от Паскаля до Компонентного Паскаля, поговорили про компиляторы, какие есть
с ними проблемы, в чем выгода трансляции в язык программирования С и, кончно, Ofront+

Автор:  D_S__ [ Вторник, 26 Март, 2019 08:58 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

После прослушивания возник вопрос Олегу: о каких размерах выигрыша (в скорости, в размере кода) может идти речь если компилировать не сразу в машинный код, а через компиляцию в Си?

Автор:  Sergey Volkov [ Вторник, 26 Март, 2019 10:10 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Prospero78su попросил меня опубликовать свой отзыв на подкаст из личного чата в Телеграм.
В виде исключения, я выкладываю отзыв. Он послужит примером:

prospero78su, [26.03.19 07:55]
Ништяк выпуск. Олежа правильный чел))

1. Музон на первых секундах — огонь.
2. Си — это переносимый ассемблер.
3. Не стоит рассматривать Си как врага. Это по Тьюрингу полный язык, а потому его надо использоват ькак переносимый ассемблер.
4. Ассемблер обладает крайне слабой семантикой. (В этом смысле Оберон необходим)
5. Прямая трансляция в машинный код из Оберона возможна. Для этого нужен Оберон-процессор. Си напрямую через свои смысловые конструкции отражал архитектуру ПДП-11.
6. Олег прав. Нужен новый промышленный компилятор Оберона. И тут нужно понимать:
    есть две задачи - семантический разбор,
    и оптимизированная трансляция в машинный код.
Вторая задача уже выполнена, по крайней мере — дважды.

Автор:  Sergey Volkov [ Вторник, 26 Март, 2019 10:11 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Сразу спрошу :D Prospero78su, а кому нужен "новый промышленный компилятор Оберона"?

Автор:  prospero78 [ Вторник, 26 Март, 2019 10:52 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Мне.
Такой компилятор позволит вести вполне промышленную разработку с меньшей головной болью, чем это происходит сейчас у меня лично и у всех тех бедолаг, которые пользуются JavaScript, python, и т. п.
golang тоже местами вовсе не блещет (разбор от коллег по цеху есть на хабре, а также в чате Телеграм-канала, где Олег был модератором (тролли набежали, канал испортили).

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

Автор:  Comdiv [ Вторник, 26 Март, 2019 13:33 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Sergey Volkov писал(а):
2. Си — это переносимый ассемблер.
Кто-то запустил эту манипуляцию в массы, и теперь все повторяют. Но
1. Си - это не ассемблер.
2. Любой язык ассемблера переносимый.
3. Транслировать можно в любой алгоритмически полный язык

Автор:  Sergey Volkov [ Вторник, 26 Март, 2019 13:44 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

prospero78 писал(а):
Мне.
Такой компилятор позволит вести вполне промышленную разработку с меньшей головной болью, чем это происходит сейчас у меня лично и у всех тех бедолаг, которые пользуются JavaScript, python, и т. п.
golang тоже местами вовсе не блещет (разбор от коллег по цеху есть на хабре, а также в чате Телеграм-канала, где Олег был модератором (тролли набежали, канал испортили).

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



А почему BlackBox Component Builder вам не подошёл? Чего такого в нем вам не хватило?

Автор:  Info21 [ Вторник, 26 Март, 2019 15:19 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Comdiv писал(а):
Sergey Volkov писал(а):
2. Си — это переносимый ассемблер.
Кто-то запустил эту манипуляцию в массы, и теперь все повторяют. Но
1. Си - это не ассемблер.
2. Любой язык ассемблера переносимый.
3. Транслировать можно в любой алгоритмически полный язык
4. И не очень-то он (без #) переносимый.

Автор:  Sergey Volkov [ Вторник, 26 Март, 2019 16:28 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Я могу понять не любовь Никлауса Вирта к языку ассемблера и вынужденное "сотрудничество" с ним.

Мне не нужен "промышленный компилятор", достаточно BlackBox, но странно думать,
что у языка Оберон может быть язык программирования С "под капотом".
Это как ставить мотор от (допустим) Рено в Мерседес, только лишь потому,
что кузов и салон Рено не нравится и хочется ездить на Мерседесе.

В чем проблема?
Почему разработчики, активные члены сообщества не могут собраться и создать компилятор промышленного уровня?

Автор:  Comdiv [ Вторник, 26 Март, 2019 17:45 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Для этого нужно организоваться. Большинство нынешних разработчиков трансляторов Оберона хочет всё делать либо в одиночку, либо "объединять" сообщество вокруг своего проекта.

Автор:  Comdiv [ Вторник, 26 Март, 2019 17:50 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Info21 писал(а):
4. И не очень-то он (без #) переносимый.
Если пренебречь производительностью, то переносимый и без условной компиляции. Кроме того, для достижения переносимости условная компиляция не является необходимой. Многие просто не хотят по-другому.

Автор:  Oleg N. Cher [ Вторник, 26 Март, 2019 19:07 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Валере большое спасибо за отзыв! :-) Да, LLVM однозначно здравый путь, но конечно не с точки зрения простоты и каноничности Оберон-вея. И он ждёт своей реализации. Кстати, Джон Гоф (разработчик GPCP) хотел сделать бэк-энд в LLVM для GPCP. Но последний коммит от него был больше года назад. Ему, видимо, не хватило мотивации. А жаль. Хороший проект.

Также прошу Константина прояснить фразу:
Comdiv писал(а):
2. Любой язык ассемблера переносимый.
(а то странно, я вот до сих пор думал, что язык ассемблера это самый НЕпереносимый машинный язык).

D_S__ писал(а):
После прослушивания возник вопрос Олегу: о каких размерах выигрыша (в скорости, в размере кода) может идти речь если компилировать не сразу в машинный код, а через компиляцию в Си?
Я так понимаю, что этот вопрос про Оберон. Тут всё зависит от качества компилятора Оберона и компилятора Си. Компиляторов Оберона такого класса, как GCC, Clang или Intel C, просто не существует. Это значит, что от трансляции в Си выигрыш по скорости и по размеру кода будет всегда, но вот насколько большой — сложно сказать. И, тем более, сложно представить всё это в наглядных цифрах.

Если Вам нужен очень маленький размер исполняемого файла, посмотрите в сторону Ofront+. Линкер BlackBox конечно тоже может дать маленький исполняемый файл, но весь мёртвый код из него не выбросит — просто не умеет. Линкеры A2 или ETH Oberon тоже этого не умеют. Они включают в исполняемый файл код всех использованных модулей. То есть, идёт включение на уровне модулей, а не отдельных процедур.

Если нужна переносимость между таргетами, тоже посмотрите в сторону Ofront+, особенно если Вам нужна большая производительность, например, в расчётах или 3D-графике.

Пока не очень понятно как лучше использовать Ofront+, если нужно разрабатывать переносимые программы со сложным графическим интерфейсом пользователя.

P.S. Иван Денисов тестировал код от BlackBox и код от CPfront (через Си). Пишет, что алгоритм сортировки пузырьком работает в 1.5 раза быстрее.


Автор:  Comdiv [ Вторник, 26 Март, 2019 19:47 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Oleg N. Cher писал(а):
Также прошу Константина прояснить фразу:
Comdiv писал(а):
2. Любой язык ассемблера переносимый.
(а то странно, я вот до сих пор думал, что язык ассемблера это самый НЕпереносимый машинный язык)
Без теории люди часто не видят за деревьями леса, но я не хочу вдаваться в теорию, поясняя, что означает алгоритмическая полнота. Скажу только, что в мире было сделано много самых разных средств для запуска программ, изначально написанных для других архитектур. Это и есть переносимость.

Ещё можно почитать про ассемблер в Go, это может навести на определённые мысли
Цитата:
Вот код для 64-разрядной архитектуры MIPS, вот – для 64-разрядной архитектуры POWER. Вы можете заметить, что они похожи. Причина в том, что они, по сути, являются одним и тем же языком. Отчасти потому, что они так устроены: по сути дела, мы 30 лет использовали ассемблер National 32000, меняя только лишь железо, на котором он использовался. Но ещё и потому, что некоторые из них действительно идентичны. Это просто инструкции, регистры, операнды, константные значения, метки — всё одно и то же. Единственное важное отличие заключается в том, что у инструкций и регистров разные имена. Ещё иногда отличаются смещения, но это зависит от размера машинного слова.

Всё это сводится к ассемблеру National 32000, который написал Кен. Это язык ассемблера National 32000, каким его себе представляет Кен, адаптированный для современного PowerPC. Таким образом, у нас есть всё необходимое — общий язык ввода, библиотека obj в бэкэнде – и мы можем писать на ассемблере. При таком подходе возникает проблема: если взять руководство National или PowerPC и взглянуть на язык ассемблера, то окажется, что он выглядит не так. У него другой синтаксис, иногда другие имена инструкций, потому что на каком-то уровне это фактически псевдоинструкции. На самом деле, это неважно.

Непосвящённого человека внешний вид ассемблера Go — все эти заглавные буквы и странные штуки — может серьёзно смутить. Но поскольку для всех этих компьютеров у нас есть общий язык ассемблера, мы можем получить замечательный результат, о котором речь пойдёт ниже. Поэтому мы считаем, что это оправданный компромисс и достигнуть его не очень сложно. Стоит научиться программировать на 68000 и на ассемблере Кена – и вы автоматически сможете писать программы для PowerPC. Какая разница?

Это лишь малая практическая часть, которая следует из простой теоретической части

Автор:  Oleg N. Cher [ Вторник, 26 Март, 2019 20:26 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Comdiv писал(а):
Без теории люди часто не видят за деревьями леса, но я не хочу вдаваться в теорию, поясняя, что означает алгоритмическая полнота. Скажу только, что в мире было сделано много самых разных средств для запуска программ, изначально написанных для других архитектур. Это и есть переносимость.
Константин, Вы как-то "замылили" ответ. Мы сейчас вообще не о теориях и не об алгоритмической полноте. Мы о том, что ассемблерная конструкция MOV EAX, EBX имеет смысл _только_ на процессорах архитектуры Intel/AMD 80x86. Точка. Всё. Никакой переносимости. Это и есть ассемблер. На других процессорах может не быть такого же набора регистров. Или они там вообще будут 64-битные. Или там будет стековая архитектура. Или Вы будете говорить о переносимости между Intel-совместимыми процессорами?

Ассемблер это мнемоническое представление для машинного кода процессора, более удобное для чтения человеком. Машинный код разных процессоров полностью или частично несовместим. Поэтому ни о какой переносимости, за исключением очень и очень редких и специфических случаев типа аппаратной эмуляции одних архитектур на других, речь не идёт. Любой программный эмулятор это прослойка между двумя архитектурами, но ассемблеры у них разные. Мы о переносимости ассемблера говорим. А не о программной или аппаратной эмуляции.

Цитата:
Вот код для 64-разрядной архитектуры MIPS, вот – для 64-разрядной архитектуры POWER. Вы можете заметить, что они похожи. Причина в том, что они, по сути, являются одним и тем же языком. Отчасти потому, что они так устроены: по сути дела, мы 30 лет использовали ассемблер National 32000, меняя только лишь железо, на котором он использовался. Но ещё и потому, что некоторые из них действительно идентичны. Это просто инструкции, регистры, операнды, константные значения, метки — всё одно и то же. Единственное важное отличие заключается в том, что у инструкций и регистров разные имена. Ещё иногда отличаются смещения, но это зависит от размера машинного слова.
Этот текст — не о том, что все на свете процессоры устроены одинаково. А о том, что у них было такое семейство процессоров. Всё. А то знаете, есть такая украинская пословица: "Похожа свыня на коня, тилькы хвист не такый". ;)

Цитата:
У него другой синтаксис, иногда другие имена инструкций, потому что на каком-то уровне это фактически псевдоинструкции. На самом деле, это неважно.
Нет, на самом деле это самое архиважное. И более того, если даже у вас один и тот же процессор, то другие аппаратные составляющие платформы могут быть совершенно различными и непохожими.

Автор:  Comdiv [ Вторник, 26 Март, 2019 20:49 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Я дал достаточно информации, Олег. Из Вашего ответа можно судить, что даже если я брошусь в более подробные объяснения, мы не добьёмся понимания.

Автор:  Oleg N. Cher [ Вторник, 26 Март, 2019 21:04 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Константин, я пишу на ассемблере с 1995-го года. За эти годы я видел много разных ассемблеров и писал на них. Они все _очень_ разные, как текстовое представление систем команд _разных_ процессоров. И знаете чего сейчас Вы сделали? Взяли, вырвали кусок из контекста, где идёт речь только о двух очень похожих друг на друга семействах и пытаетесь выставить это как аргумент за переносимость ассемблера _вообще_. А когда наткнулись на моё недоумение, сделали с умным видом высокомерную попытку выставить меня недоучкой. Ну-ну. Давайте опросим сообщество, согласятся ли они больше со мной или с Вами.

Автор:  Info21 [ Вторник, 26 Март, 2019 21:17 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Надо определить понятия.

Автор:  Sergey Volkov [ Вторник, 26 Март, 2019 22:00 ]
Заголовок сообщения:  Re: Темы и вопросы к шестому выпуску "Радио Оберон"

Comdiv писал(а):
Для этого нужно организоваться. Большинство нынешних разработчиков трансляторов Оберона хочет всё делать либо в одиночку, либо "объединять" сообщество вокруг своего проекта.


А что мешает привлекать людей к своему проекту?

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