Size: a a a

Compiler Development

2021 April 05

卜根 in Compiler Development
То есть, допустим, в языке Ада я однажды написал record Field_Name : Integer; end record; а потом Field_Name может стать примитивной функцией. А если некий массив перебирался for-of-loop, то потом это может стать не массив, а контейнер с итератором. А вот Pattern Matching такая поганая штука, что вынь да положь покажи все кишки, и потом не поменять.
источник

KR

K R in Compiler Development
Нет, хорошо.
источник

AT

Alexander Tchitchigi... in Compiler Development
В Haskell есть Pattern Synonyms. 😉
В F# -- Active Patterns, в Scala -- Unapply.
источник

卜根 in Compiler Development
гипотетически можно устроить интерфейс из

function Check_Some_Option_Match (Item : Some_Type; Check_Deep_Match : not null access function (Field_Name : Another_Type) return Boolean) return Boolean;

компилятор, если встречает оператор поиска соответствия со вложенными элементами, генерит замыкания Check_Deep_Match, внутри которого, если глубокая проверка не пройдена, возвращается False
источник

卜根 in Compiler Development
а в Ocaml?
источник

AT

Alexander Tchitchigi... in Compiler Development
Interprocedural analysis -- такая штука, которую в любом случае придётся писать руками. Как и прочий loop unrolling. 🤷‍♀
источник

卜根 in Compiler Development
вроде бы F# от Ocaml произведён
источник

AT

Alexander Tchitchigi... in Compiler Development
Не знаю, не специалист.
источник

AT

Alexander Tchitchigi... in Compiler Development
Это только так говорится, на самом деле общего мало. 😒
источник

卜根 in Compiler Development
да, почитал, похоже, что оно

но там владением данных и областями видимости указателя не обременяли себя, поэтому активный распознаватель делает возврат; а в нативном языке типа Ады, чтоб залезть в какой-нибудь контейнер-карту и удерживать курсором, это в общем случае нужен стиль передачи продолжения
источник

f

for(int c; (c = getc... in Compiler Development
Немного не по теме, но не знаете ли вы какие-нибудь книги (или статьи) которые стоит прочитать для того чтобы лучше понимать как оценивать производительность кода? Т.е. я знаю что существуют конкретные программы наподобие gprof, prof, vallgrind --callgrind и другие (на запрос C performance measurement tools гугл выдает вполне достаточный набор).

Меня интересует вопрос о том как создавать осмысленные тесты (не просто  рекурсивные Фибоначчи или реализации каких-то конкретных алгоритмов [1]) для кода которые делает какую-то определенную вещь - например парсер, или какая-то структура данных и т.д.

Конкретно данный вопрос интересует в контексте приложений написанных на компилируемых языках

PS: я понимаю что вопрос несколько пространно сформулирован, но может быть есть какие-то конкретные термины по которым можно найти статьи по этой теме, или действительно есть книги на эту тему.

[1]_ Имеется ввиду что-то типа https://github.com/kostya/benchmarks или https://benchmarksgame-team.pages.debian.net/benchmarksgame/index.html - для того чтобы сделать осмысленное сравнение нужно не только реализовать алгоритм на нескольких языках, но при этом еще и написать это достаточно идиоматично.
источник

KR

K R in Compiler Development
Ну это постановка эксперимента и обработка данных эксперимента. Надо учитывать то, что сам факт измерений может изменять систему.
источник

A

Alex in Compiler Development
источник
2021 April 06

AG

Alex Gryzlov in Compiler Development
мультикор без алг эффектов уже в общем то есть
источник

KR

K R in Compiler Development
Насколько я понимаю, ещё не для промышленного использования.
источник

AG

Alex Gryzlov in Compiler Development
ну тем не менее немного поближе термояда
источник

KR

K R in Compiler Development
Термояд в некотором смысле уже несколько миллиардов лет работает. ;-)

Ну да, ещё пара лет осталась.
источник

AG

Alex Gryzlov in Compiler Development
это сравнение было верным последние лет 5, но в прошлом году они прям активно начали его со всех со сторон дорабатывать, и код мержить, и статьи писать, и модель памяти сделали
источник

AG

Alex Gryzlov in Compiler Development
я планирую в ближайшее время покрутить его с дальним прицелом на параллелизацию каких нибудь кусков cooltt
источник

KR

K R in Compiler Development
Можно будет тогда вас попросить сделать небольшой обзор multicore?
источник