My friends find it pretty hard to believe that C is a low level language. Now even I cannot say with full confidence that C is a low level language but it definitely is not high level. Here are quite a few points in support of the inclination of C to being a low level language rather than a high level language.
- 1.Firstly C can implement asm applications and codes. No other high level language can work with assembly or assembly level data. –Friend says it is a feature. Feature! Having a tail makes a monkey. Not a featured human! This ability of C to implement low level execution proves that data in C can be manipulated at various registers which is definitey not a feature or whatsoever of a high level language!
- 2.Secondly, in C all data input is taken at memory references. So the data is put into a particular offset in the memory in the write cycle and is read by different offset identifiers-namely variables in the read cycle. The data read and write are poorly linked resulting in buffer overflows and read operations of the overflowing data as well. –We have seen this in case of arrays. An array has no bounds(upper or lower). So any code can read and write into the whole of the code stack,just like in asm we can read instructions at all addresses(through the IP register) and execute them as well as modify them. So basically, while reading data, C does not even know what it is doing!
- 3.In C we have a concept of a memory variable-a pointer and reference variables. Now this is a direct copy of the IP register of asm. In asm moving the IP register alone we can access instruction codes all over the memory. Likewise moving the pointer we can access all variables in C, as they are allocated sequentially. No high level language provides this level of direct interaction. In high level languages there is no concept of memory interaction.
- 4.We bring back the monkey for a simple example. Monkey looks good on trees. Or lets say it is a terrestrial animal. Now we all know a monkey can jump. Now jumping from the ground does not take the monkey to the sky! It reaches, maybe a certain height from the ground. Likewise, C is the monkey which can jump to certain levels, even climb trees but ultimately is a terrestrial low level creature. What i want to say is that C is definitely not a high level language. If the need is really felt, it can be called a mid level language, or a low level language with some high level attributes purely implemented for ease of coding(writing the code), but not for the execution of the code.
- 5.C is very famous for its’ remarkable speed and time efficiency. Now any high level language cannot offer the speed of C, that is for sure. A simple java code, takes a good long time to load, python, ruby, basic..you name it. In hand experience say all high level languages have a good amount of initialization time during runtime. But C, here is so amazingly fast! The reason here is the closeness to the machine. Let us not call this a feature as well!
