Я сидел в начале урока информатики на этой неделе и думал о чем-то:
Существует ли компилятор, который активно исправляет ошибки компиляции, возникающие в коде (фактически, цикл обратной связи по уменьшению / устранению ошибок в коде)?
Это делается пассивно с предложениями (например, красное подчеркивание при неизвестном синтаксисе, автозаполнение при вводе кода) в некоторых средах программирования, но есть ли примеры того, как компилятор делает это активно (то есть напрямую переписывает код)?
Размышления об этом заставляют меня думать о чем-то еще:
Насколько сложно это реализовать? Я представляю себя чрезвычайно сложным, поскольку он сводится к анализу кода и точности балансировки (например, точно определить, что именно пользователь хочет - задает вопросы и получает обратную связь от программиста) с удобной общностью (например, решение «в общем» того, что хочет пользователь, и внесение изменений в код - программист может затем вернуться и изменить код, чтобы он был более специфичным для их задачи). Это грубые идеи, так как очень сложная, сфокусированная программа включает в себя множество сложных идей, приоритеты которых не всегда легко обнаружить в коде (и легко анализировать).
В качестве крайнего примера можно было бы проанализировать не содержащий синтаксиса фрагмент кода, такой как «нарисовать прямоугольник», а затем с помощью ввода от программиста (получить обратную связь от программиста по таким вопросам, как «рисовать где?», «Прямоугольник какого размера?»). ", или" 2d или 3d space? ") программа может быть написана (предпочтение точности над общностью). Или могут быть значения по умолчанию низкого уровня, которые используются для создания кода, когда обнаруживаются ключевые слова («рисовать», «прямоугольник») (преимущество универсальности над точностью).