Program-centric abstraction represents problems through discrete executable structures that support reasoning, planning, causal understanding, and strong algorithmic generalization. It complements value-centric abstraction, which captures continuous similarity, perception, and intuition. section 19.4.3 section 19.5
Sorting versus recognizing digits
A sorting algorithm can be written in a few lines, validated on a small number of examples, and applied reliably to numeric vectors of any length. Training a deep learning model to sort even five-number vectors requires substantial data and may still fail on new inputs; changing to ten-number vectors requires retraining. Conversely, classifying MNIST digits with a pure R program demands manually encoding visual features such as closed loops and centers of mass, making perception a poor fit for discrete rules. section 19.4.3
Program-centric abstraction is characterized by several design implications:
- Generalizes through reusable algorithms rather than relying only on similarity learned from large datasets. section 19.4.3
- Uses program synthesis to search for executable solutions from input–output examples, potentially requiring only a few demonstrations. section 19.5
- Favors hybrid systems that combine algorithmic modules for reasoning, search, memory, and abstraction with geometric modules for perception and pattern recognition. section 19.4.7 section 20.3
- Supports modular recombination through libraries of reusable subroutines, enabling models to adapt to new tasks with little data. section 19.4.7 section 20.3
