Remember that in the 1950s, computer scientists use punch cards to store programs. These punch cards represented bits that the CPU would read and then perform a series of instructions based on what the program was. The binary code, could look like this, and the instructions would be translated to this. Grab some input data from this location in memory, using the input data, do some math, then put some output data into this location in memory. But storing programs on punch cards was a long and tedious task. The programs had to be kept on stacks and stacks of punch cards. Computer scientists needed a better way to send instructions to a machine, but how? Eventually, a language was invented called Assembly language, that allowed computer scientists to use human readable instructions, assembled into code that the machines could understand. Instead of generating binary code, computer scientists could program using machine instructions, it is like this, take integer from register one, take integer from register two, add integer from register one and register two and output to register four. This example makes it look like a human can read it, but don't be fooled. Let's take an example of saying something simple like, hello world, in Assembly language. It looks pretty robotic. Don't get me wrong, that's still an improvement over it's binary code cousin. But Assembly language will still register thin veil from machine code. It's still didn't let computer programmers use real human words to build a program. And a program that was written for a specific CPU, could only be run on that CPU or family of CPUs. A program was needed that could run on many types of CPUs. Enter compiled programming languages. A compiled programming language uses human readable instructions, then sends them through a compiler. The compiler takes the human instructions and compiles them into machine instructions. Admiral Grace Hopper, invented this back in 1959, to help make programming easier. Compilers are a key component to programming, and helped to pave the road that led us to today's modern computing. Thanks to compilers, we can now use something like this, and it will be the same thing as this. Computer scientists have developed hundreds of programming languages in the past couple of decades to try and abstract the different CPU instructions into it's simpler commands. Along the way, another type of language emerged that was interpreted rather than compiled. Interpreted languages aren't compiled ahead of time. A file that has code written in one of these languages is usually called a Script. The script is run by an interpreter, which interprets the code into CPU instructions just in time to run them. You'll learn how to write code using a scripting language later in this program. As an IT support specialist, scripting can help you by harnessing the power of a computer to perform tasks on your behalf, allowing you to solve a problem once and then move on to the next thing. Programming languages are used to create programs that can be run to perform a task or many tasks. There are lots of types of programs and in the next lesson, we'll talk about how to manage them.