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