In the first computers everything was numeric. Memory addresses were numeric, instruction opcodes were numeric, everything had to be translated into number form.
One of the first steps along the path of abstraction was the development of assembly languages. These allowed the programmer to work in a more symbolic fashion, rather than simply with numbers. Addresses could be represented symbolically, as could operation designators (or opcodes). The linking of symbolic names to numeric addresses would then be performed automatically by software, and not by the programmer.
A small step, but a first step.