Higher level programming languages allow the programmer to express the idea behind the task. They are independent of the underlying machine language representation, consequently more portable. Each processor type uses its own version of assembler code which will not be compatible with other processors. For example, an assembler code program written for an Intel processor will not run on a Sparc or Motorola processor. Higher level languages like C++ allow programs to be developed which can be compiled and run on different processors. Also, higher level languages can perform tasks in fewer, less complicated steps than with assembler code.