two types of low level programming languages