OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 17 Ноябрь, 2019 08:30

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




Начать новую тему Ответить на тему  [ Сообщений: 117 ]  На страницу 1, 2, 3, 4, 5, 6  След.
Автор Сообщение
СообщениеДобавлено: Понедельник, 18 Март, 2019 14:58 
Аватара пользователя

Зарегистрирован: Суббота, 26 Ноябрь, 2016 17:01
Сообщения: 34
Предлагайте темы в комментариях к этому посту или голосуйте за темы, которые вам понравились.
Темы, набравшие больше всего голосов, мы постараемся обсудить в выпуске.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 20 Март, 2019 22:00 
Аватара пользователя

Зарегистрирован: Суббота, 26 Ноябрь, 2016 17:01
Сообщения: 34
Ждем в гости Владимира Лося и Олега Чередниченко


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 25 Март, 2019 11:52 
Аватара пользователя

Зарегистрирован: Суббота, 26 Ноябрь, 2016 17:01
Сообщения: 34
Выпуск вышел без ваших тем и вопросов: http://obertone.ru/radio

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 08:58 

Зарегистрирован: Пятница, 22 Март, 2019 07:50
Сообщения: 33
После прослушивания возник вопрос Олегу: о каких размерах выигрыша (в скорости, в размере кода) может идти речь если компилировать не сразу в машинный код, а через компиляцию в Си?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 10:10 
Аватара пользователя

Зарегистрирован: Суббота, 26 Ноябрь, 2016 17:01
Сообщения: 34
Prospero78su попросил меня опубликовать свой отзыв на подкаст из личного чата в Телеграм.
В виде исключения, я выкладываю отзыв. Он послужит примером:

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

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


Последний раз редактировалось Sergey Volkov Вторник, 26 Март, 2019 10:13, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 10:11 
Аватара пользователя

Зарегистрирован: Суббота, 26 Ноябрь, 2016 17:01
Сообщения: 34
Сразу спрошу :D Prospero78su, а кому нужен "новый промышленный компилятор Оберона"?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 10:52 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1133
Откуда: СССР v2.0 rc 1
Мне.
Такой компилятор позволит вести вполне промышленную разработку с меньшей головной болью, чем это происходит сейчас у меня лично и у всех тех бедолаг, которые пользуются JavaScript, python, и т. п.
golang тоже местами вовсе не блещет (разбор от коллег по цеху есть на хабре, а также в чате Телеграм-канала, где Олег был модератором (тролли набежали, канал испортили).

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 13:33 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 952
Откуда: Киев
Sergey Volkov писал(а):
2. Си — это переносимый ассемблер.
Кто-то запустил эту манипуляцию в массы, и теперь все повторяют. Но
1. Си - это не ассемблер.
2. Любой язык ассемблера переносимый.
3. Транслировать можно в любой алгоритмически полный язык


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 13:44 
Аватара пользователя

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

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



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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 15:19 
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 16:28 
Аватара пользователя

Зарегистрирован: Суббота, 26 Ноябрь, 2016 17:01
Сообщения: 34
Я могу понять не любовь Никлауса Вирта к языку ассемблера и вынужденное "сотрудничество" с ним.

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 17:45 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 952
Откуда: Киев
Для этого нужно организоваться. Большинство нынешних разработчиков трансляторов Оберона хочет всё делать либо в одиночку, либо "объединять" сообщество вокруг своего проекта.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 17:50 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 19:07 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 347
Откуда: Украина, Днепропетровская обл.
Валере большое спасибо за отзыв! :-) Да, 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 раза быстрее.



Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 19:47 

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

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 20:26 
Аватара пользователя

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 20:49 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 952
Откуда: Киев
Я дал достаточно информации, Олег. Из Вашего ответа можно судить, что даже если я брошусь в более подробные объяснения, мы не добьёмся понимания.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 21:04 
Аватара пользователя

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


Последний раз редактировалось Oleg N. Cher Вторник, 26 Март, 2019 21:57, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 21:17 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Надо определить понятия.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Март, 2019 22:00 
Аватара пользователя

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


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


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

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


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

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


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

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