Software is usually written in high-level programming languages that are easier and more efficient for humans to use (closer to natural language) than machine language.[2] High-level languages are compiled or interpreted into machine language object code. Software may also be written in a low-level assembly language, essentially, a vaguely mnemonic representation of a machine language using a natural language alphabet. Assembly language is converted into object code via an assembler.