The first generation computers made use of low level programming. Low level programming involves writing code that communicates directly with the computer's hardware components, such as the processor and memory. This was necessary because first generation computers used vacuum tubes and punch cards, which required very specific instructions to operate correctly. Programmers had to write code in binary language, which is composed of only two digits (0 and 1), to perform simple tasks such as adding and subtracting numbers. This required a lot of technical knowledge and was very time-consuming. However, low level programming was the only way to make the first generation computers function properly.