Programming involves encoding algorithms into programming languages so that computers can execute them. An algorithm is needed first to solve a problem before a program can exist. Programming languages provide control constructs like sequential processing, selection, and iteration to represent algorithmic steps. They also provide data types to represent both the process and data used in algorithms.