ReduKtor — автоматическая отладка для Kotlin


Нет, это не подход ИИ, а старый добрый инженерный подход к локализации ошибок. Это метод, который можно применить вручную, но как автоматический инструмент — даже лучше.

Меня всегда удивляет, что отладке часто преподают не иначе, как расплывчатую инструкцию «попытаться найти, где что-то идет не так». Отладка — это второстепенная задача по сравнению с обучением программированию, но это не обязательно. Что мне показалось особенно интересным в недавней исследовательской статье Санкт-Петербургского политехнического университета и JetBrains Research об автоматизации одного из аспектов отладки, так это то, как много в ней говорится о процессе отладки.

Основная идея — это редукция. Вы сталкиваетесь с ошибкой, и первым шагом к выяснению того, в чем может быть причина, является попытка свести пример к его простейшей форме, которая все еще вызывает ошибку. Это всегда звучит легко, но это не так, и это обычно называется дельта-отладкой. Часто, когда вы находите минимальный случай, вызывающий проблему, вы можете ясно увидеть ошибку, не делая ничего другого.

В этом исследовании дельта-отладка применялась к Котину как автоматизированный процесс, в результате чего был создан прототип под названием ReduKtor. Это автоматически выполняет преобразования в программе, чтобы уменьшить ее размер, сохраняя при этом ошибку. Интересно отметить, что даже нелегко определить, действительно ли преобразование сохраняет ошибку. Некоторые изменения приводят к немного другим сообщениям об ошибках, которые программист сразу же распознает как ту же проблему с небольшими отклонениями, но автоматическая процедура будет затруднена. В этом случае утверждается, что структура отчетов об ошибках Kotlin упрощает это.

ReduKtor использует конвейер преобразований, некоторые из которых не зависят от языка, а некоторые очень сильно зависят от Kotlin, и, похоже, он работает:

«Результаты оценки подтверждают практическую применимость нашего подхода к дельта-отладке Kotlin, а также показывают важность использования как языковых, так и языковых методов для достижения максимальной эффективности сокращения и производительности».

Единственная печальная часть заключается в том, что прототип слишком нестабилен, чтобы его можно было использовать по-настоящему, но команда компиляторов Kotlin сотрудничает со встроением ReduKtor в компилятор, поэтому в будущем у него может быть практический дополнительный доход.

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

Майк Джеймс — автор Руководства по программированию на Kotlin (I / O Press), написанного для Java-программистов, разработчиков Android и программистов, желающих узнать, почему Kotlin лучше Java, и Android Programming in Kotlin: Starting With An App (I / O Press) ).


Добавить комментарий