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: Темы и вопросы к шестому выпуску "Радио Оберон" |
Сразу спрошу 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. Транслировать можно в любой алгоритмически полный язык |
Автор: | 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/ |