Size: a a a

Compiler Development

2020 May 02

VM

Victor Miasnikov in Compiler Development
MaxGraey
При том что он весьма нишевой и стало быть информации мало, комьюнити небольшое, библиотек не много. Взять тот же непопулярный Dlang. Так там хотя бы есть нормальная интеграция со всеми современными БД, фреймворками и вообще более не менее нормальный FFI
А комбинация кузена Оберонов ( их целое семейство) Modula-3 и утилиты SWIG не даст ли тот же результат?
источник

AN

Alexander Nasonov in Compiler Development
Ну и эффекты в самом компилятора, как уже было сказано. Обычно при смеси горячего и холодного кода компилятор (например register allocator) не отдаёт предпочтение горячему коду и по моей практике, холодного кода обычно больше и он давит своим весом.
источник

АЕ

Артур Ефимов... in Compiler Development
MaxGraey
Я все равно не понию зачем выбирать Оберон? Какие у него преимущества по сравнению с современными ЯП? Цикл Дейкстры? Простой компилятор?
Простой и чёткий язык, который целиком укладывается в голове. Простой компилятор.
Возможность написать (или переделать) свою операционную систему, которая полностью прозрачна, и которую может полностью в одиночку изучить один человек.
источник

M

MaxGraey in Compiler Development
Артур Ефимов
Простой и чёткий язык, который целиком укладывается в голове. Простой компилятор.
Возможность написать (или переделать) свою операционную систему, которая полностью прозрачна, и которую может полностью в одиночку изучить один человек.
ОС можно написать даже на JS (os.js, jslinux от Фабриса)=) Я бы не ставил это в преимущество. Хотя я понимаю о чем вы
источник

AN

Alexander Nasonov in Compiler Development
Или, например flow analysis увидит возможность "улучшить" код, который на самом деле смесь горячего и холодного. А окажется, что для горячего кода этот код не оптимальный. Например, мог бы быть простой cmov, а стал с бранчами.
источник

ИЧ

Илья Чистяков... in Compiler Development
Интересно, есть формализованный и продуктивный способ сравнивать языки и вообще возможность такого сравнения. 🤔
источник

A

Alex in Compiler Development
Илья Чистяков
Интересно, есть формализованный и продуктивный способ сравнивать языки и вообще возможность такого сравнения. 🤔
Короткий ответ - нет. Длинный - долго расписывать
источник

PS

Peter Sovietov in Compiler Development
Alex
Да, похоже. Откопал тут публикацию по inline'у: https://ispranproceedings.elpub.ru/jour/article/view/922.

"Основным недостатком инлайн-подстановки является рост размера кода, что
приводит к увеличению времени компиляции. Чрезмерный рост кода
приводит к возникновению блокировок из-за более частых промахов в кэш
кода. Кроме того, в некоторых случаях перемешивание холодного и горячего
кода может приводить к неоптимальному планированию последнего."
Спасибо за статью! Особенно приятно, что один из ее авторов есть в нашем чате :)

Inline-подстановку легко осуществить, сложно понять — когда это сделать. Судя по всему, без обратной связи без профилировщика не обойтись. Как раз в духе моей реплики по поводу self-tuning.

Кстати, а вот с этой работой Вы знакомы? https://www.researchgate.net/publication/225220586_An_Adaptive_Strategy_for_Inline_Substitution
источник

АЕ

Артур Ефимов... in Compiler Development
MaxGraey
ОС можно написать даже на JS (os.js, jslinux от Фабриса)=) Я бы не ставил это в преимущество. Хотя я понимаю о чем вы
Я же не сказал «написать ОС» и больше ничего, я дал характеристику этой ОС. Такую на JS вы не напишете. Приёмку не пройдёт. К тому же на Обероне Вирт создал весь вычислительный комплекс: язык, компилятор, ОС и процессор. Вся система прозрачна снизу доверху. Называется Project Oberon (2013).
источник

АЕ

Артур Ефимов... in Compiler Development
Илья Чистяков
Интересно, есть формализованный и продуктивный способ сравнивать языки и вообще возможность такого сравнения. 🤔
Есть сравнение по количеству ключевых слов. Оно позволяет увидеть развитие языков. Например, Алгол-60 — Паскаль — Модула-2 — Оберон — это единственная линейка языков, которые постоянно упрощались.
источник

АЕ

Артур Ефимов... in Compiler Development
Оттуда, например, видно, что Си++ на 70% сложнее, чем Си.
источник

АЕ

Артур Ефимов... in Compiler Development
Можно проследить увеличение сложности языка Ява
источник

M

MaxGraey in Compiler Development
цитата: «установили на станцию, прошло испытание, и сразу было введено в промышленную эксплуатацию и как бы было все хорошо, вопросов небыло, замечаний небыло, Дай Бог… дай Бог» =)
Вопрос из зала: «Приходилось отлаживать, тестировать?»
Докладчик: «нет. Заказчик был удовлетворен. Обычно они воодят как опытно-промышленное, но сейчас сказали сразу в промышленное» =)

Афигеть!
источник

VM

Victor Miasnikov in Compiler Development
MaxGraey
Я все равно не понию зачем выбирать Оберон? Какие у него преимущества по сравнению с современными ЯП? Цикл Дейкстры? Простой компилятор?
У Дм.Дагаева тоже были сомнения: заменять ли целиком ПО  могиторинга блока АЭС.

Но шансов "выловить всех" насекомых в реализации CORBA на Си просто не было.

На мой взгляд, в новом Oberon решении большую роль сыгрыл выбор в пользу кооперативной многозадачности.

( Я специально изучал видео-доклад в поисках конкретики  по тому, что подвело Си ).

В Oberon-7 не совсем цикл Дейкстры: там нет случайного выбора ветвей.

Для переусложнёных языков ведь тяжело написать простой компилятор, не так ли? К Оберонам это не относится: да, язык рекордно компактен, без особого ущерба функционалу.

Задача написать компилятор Oberon разрешима. Даже малыми силами, например, в одиночку.

Это - явный плюс.

( А, кстати, почему вы решили, что Обероны некие специализированные языки? Мне кажется, что "вполне классические". )
источник

VM

Victor Miasnikov in Compiler Development
MaxGraey
цитата: «установили на станцию, прошло испытание, и сразу было введено в промышленную эксплуатацию и как бы было все хорошо, вопросов небыло, замечаний небыло, Дай Бог… дай Бог» =)
Вопрос из зала: «Приходилось отлаживать, тестировать?»
Докладчик: «нет. Заказчик был удовлетворен. Обычно они воодят как опытно-промышленное, но сейчас сказали сразу в промышленное» =)

Афигеть!
И что смущает?

ПО Дм.Дагаева работало лучше чем аналог с соседнего блока АЭС.

Я думаю, что допуск, минуя некотрые этапы, к пром. эксплуатации - это ответственность  для людей поставивших свою подпись под этим решением.

Например: освятили пуск ракеты.
Он неудачный. Священник сразу же лишается сана и т.п.

А здесь - ещё неприятнее последствия для подписавшегося.
источник

VM

Victor Miasnikov in Compiler Development
MaxGraey
цитата: «установили на станцию, прошло испытание, и сразу было введено в промышленную эксплуатацию и как бы было все хорошо, вопросов небыло, замечаний небыло, Дай Бог… дай Бог» =)
Вопрос из зала: «Приходилось отлаживать, тестировать?»
Докладчик: «нет. Заказчик был удовлетворен. Обычно они воодят как опытно-промышленное, но сейчас сказали сразу в промышленное» =)

Афигеть!
А можно вопрос о буднях Парижа?

Там есть одно знаменитое ПО.
Версии 1.0

Как долго его отлаживали "на людях"? Насколько помогло в его разработке тестирование?
источник

АЕ

Артур Ефимов... in Compiler Development
Про священника здорово. Всё остальное тоже.
источник

A

Alex in Compiler Development
Peter Sovietov
Спасибо за статью! Особенно приятно, что один из ее авторов есть в нашем чате :)

Inline-подстановку легко осуществить, сложно понять — когда это сделать. Судя по всему, без обратной связи без профилировщика не обойтись. Как раз в духе моей реплики по поводу self-tuning.

Кстати, а вот с этой работой Вы знакомы? https://www.researchgate.net/publication/225220586_An_Adaptive_Strategy_for_Inline_Substitution
Нет, но просмотрел по диагонали. Статья интересная. Я бы сказал, что большинство оптимизаций требуют профильной информации. У нас компилятор так спроектировано что её не может не быть.

Кстати, любопытно, я так понял это они делал для борландовского компилятора, а алгоритм потом идёт в итоговую версию?
источник

VM

Victor Miasnikov in Compiler Development
Артур Ефимов
Про священника здорово. Всё остальное тоже.
Там ещё неприятнее последствия. Для будущей загробной жизни. ( я изложил вариант минимальных последствий).

--

 Возвращаясь к тестированию: да, можно было, долго, нудно пытаться  "вытянуть" решение на Си.

Но не было гарантий достижения результата.

Ставка на Оберон была рискованной ( т.к. разработка с нуля;   не только самого ПО, но и библиотек и прочих базисных вещей), но ставка "сработала".
источник

M

MaxGraey in Compiler Development
> Я думаю, что допуск, минуя некотрые этапы, к пром. эксплуатации - это ответственность  для людей поставивших свою подпись под этим решением.

ЧАЭС кстати строил «Полесск-Строй» который до этого только коровники возводил) Последствия я даже на себе ощутил, когда мне было 3 года. А осудили всех трех человек, которые кстати к строительству не имели отношения)
источник