Assembly language is seldom needed except in imbedded applications where computing power is limited due to hardware cost, power, cooling, or physical space. Such programs are usually written "stand-alone" (The overhead of any OS is unacceptable). The programmer has the freedom to make the processor do anything that it is capable of. On the other side, he has the onus to do everything. (Input of a single character can be complicated.) It is possible to write very efficient code, but this depends on the skill of the programmer. (Remember, he has no tools to optimize his code.) Few programmers can optimize their code better than the compiler of almost any modern language can.