Size: a a a

Compiler Development

2020 February 26

AT

Alexander Tchitchigin in Compiler Development
Михаил Бахтерев
А о каком Nanopass идёт речь?
О том, который на Racket.
источник

AT

Alexander Tchitchigin in Compiler Development
А есть другие Nanopass? 😳
источник

PS

Peter Sovietov in Compiler Development
Ну... вообще-то процитированный выше ChezScheme это как раз первый случай использования Nanopass %))
источник

AT

Alexander Tchitchigin in Compiler Development
Гм... OK. 🤔
источник

PS

Peter Sovietov in Compiler Development
Михаил Бахтерев
Ага. Готов. Вот DSL в LLVM для описания машины лично меня крайне напрягает. В основном, потому что он требует последующего согласования его логики с логикой кода на Си++. А это согласование... Эмс... Ну. Ограниченное, что ли? Нельзя сделать слишком многих вещей, которые хотелось бы. Действлительно ли без этого DSL описание машины бы упёрлось в какие-то непреодолимые трудности?

В той же ChezScheme машины описаны на том же Scheme в виде табличек. И ничего, вроде хорошо. И делать с ними можно всё, что алгоритмической душе угодно.
Видите, как получилось. Оказалось, что в ChezScheme-то целый фреймворк для создания компиляторных DSL скрывался. Поэтому сравниваете Вы плохо построенный DSL с хорошо построенным.
источник

AT

Alexander Tchitchigin in Compiler Development
Peter Sovietov
Видите, как получилось. Оказалось, что в ChezScheme-то целый фреймворк для создания компиляторных DSL скрывался. Поэтому сравниваете Вы плохо построенный DSL с хорошо построенным.
Тут скорее разница между внешним DSL и eDSL. У eDSL имеется очевидное преимущество, что при необходимости можно сделать что угодно, используя Тьюринг-полный внешний ЯП. И очевидный недостаток, что таким макаром можно поломать любую семантику и любые гарантии этого eDSL. В строго типизированных языках с контролем эффектов с этим, конечно, получше.
источник

PS

Peter Sovietov in Compiler Development
Alexander Tchitchigin
Тут скорее разница между внешним DSL и eDSL. У eDSL имеется очевидное преимущество, что при необходимости можно сделать что угодно, используя Тьюринг-полный внешний ЯП. И очевидный недостаток, что таким макаром можно поломать любую семантику и любые гарантии этого eDSL. В строго типизированных языках с контролем эффектов с этим, конечно, получше.
Я совершенно согласен, что в разработке компиляторов гораздо удобнее применять eDSL. В динамически типизированных языках, с другой стороны, строить эти самые eDSL гораздо проще. Некоторые очень мощные компиляторные eDSL до сих пор не могут нормально реализовать в языке со статической типизацией. Тут, в целом, вопрос, какие задачи у нас стоят.
источник

YS

Yuriy Syrovetskiy in Compiler Development
Михаил Бахтерев
Идея с DSL в математике не очень понятна. Можно ли пояснить? В мэйнстриме же используется стандартный язык множеств, последовательностей и функуий. И, вроде, во всех разделах (ну, кроме оснований математики, которые ближе к PLT) нотация однообразна. Всякие закорючки математики, конечно, добавляют, но обычно это просто удобные идентификаторы функций.

В DSL же не так. У какого-нибудь TeX семантика резко отличается от семантики какого-нибудь troff, они заставляют думать иначе, чтобы выразить одно и то же. В математике такого не встречал. Ну... Это развитая дисциплина, там давно известно, как правильно. А ещё категорщики помогают уточнять.
наверно, потому что в воображаемом языке математики можно функцией назвать гораздо больше вещей, чем в конкретных языках программирования. из-за ограничений реальности приходится семантику расширять в разные стороны
источник

МБ

Михаил Бахтерев in Compiler Development
Чувствую, что нужно какое-то более или менее формальное определение [e]DSL. Вот в том же nanopass всего с гулькин нос syntax-rules, которые, весьма условно, можно считать определениями DSL, потому что они, в основном, для табличек всяких.
источник

PS

Peter Sovietov in Compiler Development
Кстати, забавно, что LLVM'овцы даже не стыдятся своего DSL для выбора команд. Наоборот — гордятся им! В одном из документов по MLIR я читал, как планируется этот язык еще больше усложнить.
источник

МБ

Михаил Бахтерев in Compiler Development
Peter Sovietov
Кстати, забавно, что LLVM'овцы даже не стыдятся своего DSL для выбора команд. Наоборот — гордятся им! В одном из документов по MLIR я читал, как планируется этот язык еще больше усложнить.
Вот! А если бы у них не было DSL (это я фантазирю) нечего бы было усложнять, и пришлось как-то более адекватно выражать всё на самом Си++. Си++ к такому не очень приспособлен, конечно, но всё же. Ладно... Это я просто задолбался воевать с ТеХом от того у меня такое антидсльное настроение. Умолкаю
источник

PS

Peter Sovietov in Compiler Development
Михаил Бахтерев
Вот! А если бы у них не было DSL (это я фантазирю) нечего бы было усложнять, и пришлось как-то более адекватно выражать всё на самом Си++. Си++ к такому не очень приспособлен, конечно, но всё же. Ладно... Это я просто задолбался воевать с ТеХом от того у меня такое антидсльное настроение. Умолкаю
А чем плох TeX? Взять ту же математическую нотацию от TeX — разве есть что-то лучше? Word Equation? Хотя, в новом Ворде уже худо-бедно можно использовать TeX-овскую нотацию в формулах.

Кстати, чтобы не разводить оффтопик — есть ли чат для обсуждений всей этой канцелярской деятельности "научных работников": создание-оформление научных статей, графиков, таблиц, формул, библиографии... ? Нужен ли такой чат?
источник

YS

Yuriy Syrovetskiy in Compiler Development
Peter Sovietov
А чем плох TeX? Взять ту же математическую нотацию от TeX — разве есть что-то лучше? Word Equation? Хотя, в новом Ворде уже худо-бедно можно использовать TeX-овскую нотацию в формулах.

Кстати, чтобы не разводить оффтопик — есть ли чат для обсуждений всей этой канцелярской деятельности "научных работников": создание-оформление научных статей, графиков, таблиц, формул, библиографии... ? Нужен ли такой чат?
ТеХ плох всем, кроме математической нотации
источник

МБ

Михаил Бахтерев in Compiler Development
Peter Sovietov
А чем плох TeX? Взять ту же математическую нотацию от TeX — разве есть что-то лучше? Word Equation? Хотя, в новом Ворде уже худо-бедно можно использовать TeX-овскую нотацию в формулах.

Кстати, чтобы не разводить оффтопик — есть ли чат для обсуждений всей этой канцелярской деятельности "научных работников": создание-оформление научных статей, графиков, таблиц, формул, библиографии... ? Нужен ли такой чат?
Дело не в синтаксисе, а в семантике. Движок там... Эмс. Феерический по числу крайних и специальных случаев.
источник

MM

Mikhail Maltsev in Compiler Development
Peter Sovietov
Кстати, забавно, что LLVM'овцы даже не стыдятся своего DSL для выбора команд. Наоборот — гордятся им! В одном из документов по MLIR я читал, как планируется этот язык еще больше усложнить.
DSL для выбора команд - это обычные S-выражения. Почему их надо стыдиться? Или вы про tablegen в целом?
источник

PS

Peter Sovietov in Compiler Development
Mikhail Maltsev
DSL для выбора команд - это обычные S-выражения. Почему их надо стыдиться? Или вы про tablegen в целом?
В целом. Вообще, они немножко стыдятся, все-таки :) https://llvm.org/docs/TableGen/Deficiencies.html
источник

KR

K R in Compiler Development
Peter Sovietov
Кстати, забавно, что LLVM'овцы даже не стыдятся своего DSL для выбора команд. Наоборот — гордятся им! В одном из документов по MLIR я читал, как планируется этот язык еще больше усложнить.
У большинства проектировщиков простота не является какой-то оптимизационной целью. Только у «академиков».

То есть, намеренное и ненамеренное усложнение везде, кроме научных и околонаучных проектов.
источник

I

Ilmir in Compiler Development
Зато не лисп, да, в отличие от: https://gcc.gnu.org/onlinedocs/gccint/RTL.html
источник

M

Mr. Oybek 👨‍💻 in Compiler Development
Приветь. Кто из Белорусси?
источник

MM

Mikhail Maltsev in Compiler Development
K R
У большинства проектировщиков простота не является какой-то оптимизационной целью. Только у «академиков».

То есть, намеренное и ненамеренное усложнение везде, кроме научных и околонаучных проектов.
Надо ещё про производительность не забывать. Тот же самый выбор команд. В LLVM на этапе компиляции паттерны преобразуются в байт-код. Это позволяет сэкономить время в рантайме
источник