Size: a a a

Compiler Development

2019 December 29

AV

Alexey Veselovsky in Compiler Development
Kir
Всё что угодно, включая компиляторы
компиляторы в первую очередь. хотя, иногда, когда у тебя нет парсера у компилятора, ибо язык без грамматики, то хочется какой-нибудь грязи и мутабельности для реализации всяких смешных оптимизационных алгоритмов. а для этого в хаскелле придется вывернуться из собственной тени.
источник

BD

Berkus Decker in Compiler Development
Kir
Прототипировать проще на хаскелле, я гарантирую это
Да, в прод тоже. Хотя бы один компилятор С++ на хаскеле подскажете?
источник

PS

Peter Sovietov in Compiler Development
... Поэтому Ocaml "идеальнее" Haskell для написания компиляторов. К тому же, есть отличный учебник и несколько действительно выдающихся компиляторов.
источник

M

MaxGraey in Compiler Development
Kir
Благо обычно преобразование одного AST в другое можно выразить как катаморфизм.
Для начала нужно разобраться что такое катаморфизм, а в совокупности еще и хоть что то про теорию категорий. Пару лет попрограмировать на хаскеле в режиме «исследователь» хотя бы ну и потом можно и что то практичное начать писать)
источник

MM

Mikhail Maltsev in Compiler Development
Kir
Благо обычно преобразование одного AST в другое можно выразить как катаморфизм.
Компиляторы удобно прототипировать на чём угодно с pattern matching. Rust, например, изначально был написан на ocaml
источник

MM

Mikhail Maltsev in Compiler Development
Всякие около-языковые тулзы типа frama c тоже
источник

PS

Peter Sovietov in Compiler Development
Некоторое заблуждение состоит в том, что pattern matching из Haskell/Ocaml _достаточен_ для нужд продвинутого оптимизирующего компилятора. Это далеко не так.
источник

M

MaxGraey in Compiler Development
Mikhail Maltsev
Компиляторы удобно прототипировать на чём угодно с pattern matching. Rust, например, изначально был написан на ocaml
Это да, вообще очень много чего было на Ocaml написано, тот же flow и ReasonML
источник

PS

Peter Sovietov in Compiler Development
Haxe.
источник

I

Ilmir in Compiler Development
Berkus Decker
выглядит интересно, я давно за перловселенной не следил
Я сам практически случайно наткнулся.
источник

M

MaxGraey in Compiler Development
MaxGraey
Для начала нужно разобраться что такое катаморфизм, а в совокупности еще и хоть что то про теорию категорий. Пару лет попрограмировать на хаскеле в режиме «исследователь» хотя бы ну и потом можно и что то практичное начать писать)
А на python или julia ты можешь начинать писать что то полезное уже сейчас, достаточно быть знакомым с Си, паскалем или бейсиком
источник

MM

Mikhail Maltsev in Compiler Development
Peter Sovietov
Некоторое заблуждение состоит в том, что pattern matching из Haskell/Ocaml _достаточен_ для нужд продвинутого оптимизирующего компилятора. Это далеко не так.
Во фронтэнде сильно помогает, в peephole оптимизациях тоже. Для остального нужен "просто" хороший general purpose language
источник

PS

Peter Sovietov in Compiler Development
Mikhail Maltsev
Во фронтэнде сильно помогает, в peephole оптимизациях тоже. Для остального нужен "просто" хороший general purpose language
Это только для самых простых трансляторов. Анализ потоков данных таким образом не сделаешь. Это не какая-то примитивная статическая проверка типов, которая делается одним обходом AST. А анализ потоков данных нужен, хотя бы, для распределения регистров. На уровне AST серьезные оптимизации не делаются.
источник

FO

FORTRAN ONE LOVE in Compiler Development
а на чём стоит писать тулзы для авторефакторинга кода?
источник

AV

Alexey Veselovsky in Compiler Development
зависит от того, для какого яп делаешь
источник

FO

FORTRAN ONE LOVE in Compiler Development
Fortran :D
источник

AV

Alexey Veselovsky in Compiler Development
и есть ли для него готовая инфраструктура
источник

K

Kir in Compiler Development
Для того, чтобы разобраться с катаморфизмом, не нужно теорката. Это просто свёртка дерева.
источник

AV

Alexey Veselovsky in Compiler Development
что там, у flang есть ли доступ к AST и типам для сторонних утилит?
источник

FO

FORTRAN ONE LOVE in Compiler Development
Alexey Veselovsky
что там, у flang есть ли доступ к AST и типам для сторонних утилит?
он не может собрать софт %) слишком плохо все написано
источник