Неожиданно, комментируя
статью _darkus_ по архитектуре СППР, посмотрел другие материалы
"Записок программиста" и увидел
подкаст с Ильей Ключниковым о суперкомпиляции. Несколько лет назад я вкратце
рассказывал, что это такое. Но в подкасте Илья это раскрывает все гораздо более подробно, включая основные направления исследований, результаты и приложения
(
Read more... )
Comments 13
Я такую штуку для Борланда лет 10 назад ваял, на уровне proof-of-concept оно вполне лихо работало, как раз для Java.
Reply
"Функциональные игрища" -- это не самоцель, а средство. Структура функциональных программ позволяет их анализировать проще, чем императивные и пр.
А как это делается через SSA, объясните поподробнее?
Кстати, если верить википедии, то в HotSpot используется SSA. А ему больше 10 лет.
Reply
Reply
В суперкомпиляции, насколько я понимаю, никто ничего не определяет. Прогонка происходят на всех возможных значениях данных. Если есть некоторые свойства, те же инварианты, то они получаются "как бы" автоматически (ну или доказываются).
Но возможно, я недостаточно это все понимаю. Попробуйте спросить Илью на eax.me. Он отвечал там на вопросы. Регистрация простая.
Reply
В простом случае, например, при анализе в целях дальнейшей оптимизации кода, мы используем что-то навроде следующего набора признаков:
1) маски битов, которые точно 0 и точно 1,
2) верхнюю и нижнюю оценки на значение величины
Если же анализатор предназначен, например, для нахождения проблем в драйверах Линукса, то там анализируется, в частности, тип адреса (на какое адресное пространство он указывает - пользовательское или системное), или значение такого неявного параметра кмк текущий уровень прерываний (позволяет находить ситуации, когда при возникновении ошибки устройства драйвер не восстанавливает исходный уровень прерываний).
То есть, надеяться, что такие штуки будут вычисляться "сами" как-то не приходится.
Reply
Формальная верификация программ тоже теоретически возможна, и проблема, насколько я понимаю, состоит во-первых, в сложности, а во-вторых, что нужно на чем-нибудь описать как программа должна работать правильно, а это порой так же сложно, как написать саму программу.
А вы сейчас где работаете и чем занимаетесь?
Reply
Reply
Reply
Leave a comment