What are the characteristics of a low level programming language?