In the not-too-distant past, ENIAC was programmed with switches and a plugboard. Stored program computers soon followed that allowed one to write a program, load it into the computer memory, and run it. Initially, those programs had to be written in or manually translated into binary machine code, but soon assembly languages and assemblers were developed to simplify the process.
Wondering how threading thrives in the real-world? The enormous and highly threaded code base at SAS is an example of an application that benefits from the spelunking and debugging the Intel Thread Checker and Thread Profiler tools offer.