An interesting tidbit from a recent IEEE Spectrum magazine https://spectrum.ieee.org/from-punch-cards-to-python: The very first "A-0 Compiler" literally compiled the program by pulling out its fragments from various tapes. As the article says:
But she needed a library of frequently used instructions for the
computer to reference and a system to translate English to machine code.
That way, the computer could understand what task to complete.
Such
a library didn’t exist, so Hopper built her own. It included tapes that
held frequently used instructions for tasks that she called
subroutines. Each tape stored one subroutine, which was assigned a
three-number call sign so that the UNIVAC I could locate the correct
tape. The numbers represented sets of three memory addresses: one for
the memory location of the subroutine, another for the memory location
of the data, and the third for the output location, according to the
Stanford presentation.
“All I had to do was to write down a set
of call numbers, let the computer find them on the tape, and do the
additions,” she said in a Centre for Computing History article. “This
was the first compiler.”