Я знаю, что опаздываю на эту вечеринку, но я бы хотел сделать пару замечаний. Мне повезло работать с Джоном Коза над его книгой «Генетическое программирование 4».
Тип программирования, который большинство из нас делает изо дня в день - подключение событий графического интерфейса, добавление пикселей, создание баз данных и т. Д., Безусловно, не тип программ, которые GP планирует создавать.
Что Джон Коза делает со своим кластером из примерно ста машин (если я правильно помню!), Так это поиск решений интересных проблем (подумайте NP-hard). Это печально, но большинство проблем, с которыми мы, программисты, работаем каждый день, не очень интересные или сложные, в основном просто раздражающие и отнимающие много времени.
То, что Бен Джексон сказал о генно-инженерном электронном генераторе, является самой близкой вещью в этой теме к тому, что на самом деле делают доктор Коза и его команда. В серии книг GP было много примеров схем.
То, что Том Касл сказал здесь об императивных программах, не совсем верно. Оригинальным примером этого от Джона и компании является проектирование антенны. Это в значительной степени программа для трехмерного рисования с такими командами, как язык рисования LOGO, который создает антенну. У него есть команды типа moveto, lineto для перемещения и выталкивания матриц в стеке. Пакет GP, который я только что посмотрел на прошлой неделе, jgap, имеет прямую поддержку: нетерминал типа контейнера, который может содержать пустые операторы return, а затем в конце имеет оператор return. Я полагаю, что у него даже есть что-то вроде локальных переменных, хотя я не слишком внимательно присматривался.
Оригинальный дизайн LISP, вокруг которого работает ранний GP, время от времени является чем-то вроде боли, что, безусловно, верно. Это что-то вроде обряда, я думаю, что меня раздражает перевод вывода результатов GP в более удобный код.
TL; DR: GP на самом деле не система автоматического программирования. Это автоматизированная система изобретение .