Только сейчас получилось написать программу, которая пишет программы, и то она пишет гораздо более примитивный код,
Вообще-то "программа, которая пишет программы" - это вовсе не нейросетка. Это тривиальная штука при разработке на LISP, да почти на любом интерпретируемом языке программирования (сгенерировал файлик с программой и запустил). Это, например, SQL - который генерирует бэкенд по запросу из фронт-енда - например, добавляя условия или ограничения.
Шутка, что в любом сложном программном продукте рано или поздно оказывается самопальный интерпретатор LISP - это вовсе не шутка, так и есть.
Это простейшая лямбда в современных языках (в том числе компилируемых, типа С++) - когда "на лету" генерируется функция, поведение которой известным становится только на момент генерации, но не на момент написания кода, который её генерирует.
А, да, ещё классика жанра: парсеры и генераторы грамматик. flex + bison - это программы, которые генерируют другие программы.