Assembly languages were a popular choice amongst programmers sometime ago when writing code for Operating System or Processor related tasks. This is because high-level programming languages are not adept at handling such tasks in an efficient manner, and are designed to develop applications and thus are very good at “talking” to the OS but not to the system architecture itself.
However, in 1972, Brian W. Kernighan and Dennis M. Richie, working for Bell Labs at the time, developed the C Programming language using concepts poached from BASIC, FORTRAN and PASCAL. Yet it is a well-known fact that it is to ALGOL68 that that C owes much to, as it is derived from that language.
C is a very versatile language as it is machine architecture independent and only requires a compiler to execute its instructions. The language also enables greater program control with use of data structures much like those found in high-level programming languages. This coupled with its great portability makes C very popular amongst programmers.
C is very powerful in the sense that it allows you to manipulate hardware regardless of which machine architecture is being used and executed on. It is developed in such a way that it gives you the control of Assembly with the comfort of coding in a higher level programming language. C is so versatile that it has been used for developing word processors, databases and even operating systems (the most famous of these, being the UNIX kernel).
The fact that C is still around today in many differing versions is a testament to the sound concepts that initially went into developing this language.
