The only language computers can understand directly is called machine code. it is known to consist of the ls and 0s (binary code) that are processed by the cpu. however, machine code as a means of communication is very difficult to write. that is why it is necessary to use symbolic languages that are easier to understand. then, by using a special program, these languages can be translated into machine code. basic languages, in which the program is similar to the machine code version, are known as low-level languages. in these languages, each instruction is equivalent to a single machine code instruction, and the program is converted into machine code by a special program called an assembler. these languages are considered to be still quite complex and restricted to particular computers. to make the program easier to write and to overcome the problem of intercommunication between different types of machines, higher-level languages were developed such as basic, cobol,fortran, pascal, ada, c and others. a higher-level language is a problem oriented programming language, whereas a low-level language is machine oriented. this means that a high-level language is a convenient and simple means of describing the information structures and sequences of actions to be performed for a particular task. a high-level language is independent of the architecture of the computer which supports it. this has two advantages. firstly, the person writing the program does not have to know anything about the computer the program will be run on. secondly, programs are portable, that is, the same program can (in theory) be run on different types of computer. programs written in one of these languages should b e converted by means of a compiler into a lower-level language or machine code so that the cpu could understand it. c, a high-level programming language, seems to be very popular today because it is small, so it is not too hard to learn, it is very efficient and portable so one can use it with all kinds of computers. a lot of software engineers use c to write commercial applications programs for mini, micro and personal computers. there are also various versions of c - c++ and objective c, which represent a new style of programming. at present there is a tendency towards an even higher level of programming languages, which might be called specification languages, and an increasing use of software development tools.