Scott Page on John Holland:
Holland observed that an adaptive environment can be modeled as a population of problems and that many of these problems were high dimensional and complex. To solve these larger problems, systems would need to somehow self-construct subproblems that, when solved, would point to the solution of larger problems–not an easy task.
Holland’s idea in retrospect seems obvious. He used evolution as a metaphor for an algorithm that could be used to solve problems, and in doing so defined the field of evolutionary computation.
Holland’s Adaptation in Natural and Artificial Systems is pretty great and not as difficult to enjoy as it seems like it could be considering it’s density. You should read it.