Thousands of programming languages have been written till date. Each for some specific purpose. Some programming languages provide less or no abstraction from the hardware. Whereas some provide higher abstraction. To separate programming languages on the basis of level of abstraction from hardware, they are classified into various categories.
Programming languages are basically classified into two main categories – Low level language and High level language. However, there also exists another category known as Middle level language. Every programming language belongs to one of these category and sub-category.
Read more about low, high and middle level languages in next chapter.
Below image describes the abstraction level of programming languages from hardware. As you can see machine language provides no abstraction. Assembly language provide less abstraction from the hardware. Whereas high level language provides a higher level of abstraction.