You could say that all computer programs learn a little. The grade varies on the kind of algorithm. In this case, particularly, we’re interested in programs that learn from experience, seeing examples and generalizing from them instead of having to program that generalization ourselves.
In “regular” programming we program so that the system can process data (that we also provide) to generate output. In machine learning, we want to provide data and output so that the computer generates a program.
Memorization is declarative knowledge, it’s the accumulation of individual facts. It is limited by the time to observe them and the memory required to store them.
Generalization, instead, is imperative knowledge. Is to deduce new facts from old facts, limited just by the accuracy of the deduction process. It assumes that the past predicts the future.