Combination of low level (assembly) and high-level programming languages, can be used to write applications and interact with low-level system memory and hardware, can be written on practically any operating system and even works in most handheld devices