C is called middle-level language because it is actually bind the gap between a machine level language and high-level languages. User can use c language to do System Programming (for writing operating system) as well as Application Programming (for generate menu driven customer billing system ). That's why it is called middle level language.
High level - Ada , Modula-2 , Pascal, COBOL, FORTRAN, BASIC
Middle level - Java, C++, C, FORTH, Macro-assemble
Low level - Assembler
Key points about the terminology used in this article
Low, high, blah-level is all just vague terminology with no deterministic factor behind it. Traditionally, low-level languages refer to machine code and assembly, and high-level refers to everything else. Now we are also using "very high level" term which is used for scripting languages (anything interpreted rather than compiled).
What do you think?
I hope, now you have better understanding of middle, high and low level languages. Comments and suggestions regrading this article are welcome.