Kinds of programming languages