Computers are made up of hardware components like processors, graphics cards, and memory, as well as software programs. Computer programs are sequences of instructions that are understood by hardware. There are different generations of programming languages at various levels of abstraction from machine code to high-level languages. Language translators help convert programs written in source code into executable object code understood by computers, with assemblers translating assembly code, compilers translating entire high-level programs, and interpreters analyzing code line-by-line at runtime.