Assembly

Assembly language is any low-level programming language which translates more or less directly to machine language.

Computers only understand machine language (that's ones and zeros).

Humans have a very hard time understanding machine language, so some brave soul, somewhere, long ago, once took the time to write a program in actual machine language: a program that converts simple commands (more easily readable and typable by humans) into machine language. This program was called an assembler because it assembed machine language from something else. That something else is called assembly language, or just "assembly" for short.

Assembly made programming easier, but, at the time, was critized by "oldtimers" such as John von Neumann. This was because computers were so expensive and slow that the time grad students (who did the grunt work of coding in those days) saved programming was less expensive than the computer time needed to run the assembler. Also, assembly can't be optimized as closely as machine language - as recorded in the Story of Mel. However, that much optimization also made the code very hard to maintain. As computers became cheaper and more powerful, assembly became more popular.

Programming languages such as C are even more high level than assembly- it's even easier for humans to understand than assembly. For a program written in C to run on a computer, it first has to get compiled into assembly, and then the assembly gets assembled into machine language (which the computer can then recognize and run as an executable).

Finally, yes, there are programming languages even more high level than C, and even easier for humans to write and understand (though, some might be harder, depending on who you ask. :) ).

= External Links =
 * LinuxAssembly.org
 * for many resources to program in Assembly on Linux