Long before modern ML, it was not difficult to write a program which would generate programs, test those programs on some task, and make random changes to the programs in an attempt to find programs which perform better on the task.
It was also not difficult to apply such a program to the task of self-improvement, i.e. score how quickly it finds new-and-better programs on a basket of object-level tasks (including the self-improvement task itself).
All that would have been straightforward in the 1970s, if one had access to a machine to run it all. By the 1990s, a bright CS undergrad could do it on their home computer. The loop you’re talking about was easy to code long before modern ML.
Long before modern ML, it was not difficult to write a program which would generate programs, test those programs on some task, and make random changes to the programs in an attempt to find programs which perform better on the task.
It was also not difficult to apply such a program to the task of self-improvement, i.e. score how quickly it finds new-and-better programs on a basket of object-level tasks (including the self-improvement task itself).
All that would have been straightforward in the 1970s, if one had access to a machine to run it all. By the 1990s, a bright CS undergrad could do it on their home computer. The loop you’re talking about was easy to code long before modern ML.