Каковы возможности самостоятельной модификации кода Java?

Не могли бы вы перечислить возможности для изменения кода Java? Сценарий, в котором это будет использоваться, представляет собой обучающую программу. В ответ на ввод пользователя программа изучает новый алгоритм:

  1. он ищет существующую кодовую базу для аналогичного алгоритма
  2. если в кодовой базе нет похожего алгоритма, программа просто добавляет новый алгоритм
  3. если подобный алгоритм существует, программа (возможно, с некоторой помощью пользователя) модифицирует существующий алгоритм, чтобы он мог служить как старой, так и новой цели.

Аналогичный вопрос существует Самоизменяющийся код в Java , но в то время доступна последняя версия Java было 6, и этот вопрос был закрыт как слишком широкий.


person Serge Rogatch    schedule 12.10.2014    source источник
comment
Ни в одном из этих сценариев не подразумевается, что программе необходимо изменять саму себя.   -  person Oliver Charlesworth    schedule 12.10.2014
comment
Если программа не модифицирует себя, ей придется интерпретировать вновь выученные алгоритмы, что как минимум медленно.   -  person Serge Rogatch    schedule 12.10.2014
comment
Как было предложено в нескольких ответах на другой вопрос, у вас есть возможность генерировать и загружать байт-код во время выполнения. Интерпретация не требуется.   -  person Oliver Charlesworth    schedule 12.10.2014
comment
Возможно, вас интересует генетическое программирование. Это подполе эволюционных алгоритмов и имеет дело с созданием алгоритмов, но не имеет ничего общего с самомодифицирующимся кодом...   -  person tsabsch    schedule 12.10.2014
comment
Меня несколько интересует генетическое программирование, спасибо, но это отдельная тема. В этом вопросе я пытаюсь сосредоточиться только на средствах самомодификации в Java. Эволюция компьютерных программ — еще один сценарий использования самомодификации.   -  person Serge Rogatch    schedule 12.10.2014


Ответы (1)


Программа Java может динамически компилировать и загружать автоматически сгенерированные классы (см. JavaCompiler), но я не думаю, что это то, что могла бы делать программа машинного обучения. Скорее всего, программист создает алгоритм, зависящий от нескольких параметров для оценки, и выполнение программы просто состоит в поиске оптимальных значений этих параметров.

person Dici    schedule 12.10.2014
comment
Текущие алгоритмы машинного обучения еще не выполняют самомодификацию - правда. Но в сценарии программы, которая будет изучать алгоритмы, программе нужно будет выполнять эти алгоритмы. - person Serge Rogatch; 12.10.2014