Computer programs can be written in a variety of different languages. Different languages are optimized for different tasks. Common languages include Java, , , ForTran, Pascal, Lisp, and BASIC. Some people classify languages into two categories, higher-level and lower-level. These people would consider assembly language and machine language lower-level languages and all other languages higher-level. In general, higher-level languages can be either interpreted or compiled; many languages allow both, but some are restricted to one or the other. Many people do not consider machine language and assembly language at all when talking about programming languages.