Programming
Languages
A
programming language defines a set of instructions that are compiled together
to perform a specific task by the CPU (Central Processing Unit).
The
programming language mainly refers to high-level languages such as C, C++,
Pascal, Ada, COBOL, etc.
Each
programming language contains a unique set of keywords and syntax, which are
used to create a set of instructions. These languages vary in the level of
abstraction they provide from the hardware. Some programming languages provide
less or no abstraction while some provide higher abstraction.
Based
on the levels of abstraction, they can be classified into two categories:
- Low-level language
- High-level language
Assembly
language provides less abstraction whereas high-level language provides a
higher level of abstraction.
Low-level language
The
low-level language is a programming language that provides no abstraction from
the hardware, and it is represented in 0 or 1 forms, which are the machine
instructions. The languages that come under this category are the Machine level
language and Assembly language.
a. Machine-level
language
The
machine-level language is a language that consists of a set of instructions
that are in the binary form 0 or 1. As we know that computers can understand
only machine instructions, which are in binary digits, i.e., 0 and 1, so the
instructions given to the computer can be only in binary codes. Creating a
program in a machine-level language is a very difficult task as it is not easy
for the programmers to write the program in machine instructions. It is
error-prone as it is not easy to understand, and its maintenance is also very
high. A machine-level language is not portable as each computer has its machine
instructions, so if we write a program in one computer will no longer be valid in
another computer.
The
different processor architectures use different machine codes, for example, a
PowerPC processor contains RISC architecture, which requires different code
than intel x86 processor, which has a CISC architecture.
b. Assembly
Language
The
assembly language contains some human-readable commands such as mov, add, sub,
etc. The problems which we were facing in machine-level language are reduced to
some extent by using an extended form of machine-level language known as
assembly language. Since assembly language instructions are written in English
words like mov, add, sub, so it is easier to write and understand.
As
computers can only understand the machine-level instructions, a translator is
required to convert the assembly code into machine code. The translator used
for translating the code is known as an assembler.
The
assembly language code is not portable because the data is stored in computer
registers, and the computer has to know the different sets of registers.
The
assembly code is not faster than machine code because the assembly language
comes above the machine language in the hierarchy, so it means that assembly
language has some abstraction from the hardware while machine language has zero
abstraction.
The
following are the differences between machine-level language and assembly
language:
Machine-level language
|
Assembly language
|
The machine-level
language comes at the lowest level in the hierarchy, so it has zero
abstraction level from the hardware.
|
The assembly language
comes above the machine language means that it has less abstraction level
from the hardware.
|
It cannot be easily
understood by humans.
|
It is easy to read,
write, and maintain.
|
The machine-level
language is written in binary digits, i.e., 0 and 1.
|
The assembly language
is written in simple English language, so it is easily understandable by the
users.
|
It does not require
any translator as the machine code is directly executed by the computer.
|
In assembly language,
the assembler is used to convert the assembly code into machine code.
|
It is a
first-generation programming language.
|
It is a
second-generation programming language.
|
High-Level Language
The
high-level language is a programming language that allows a programmer to write
the programs which are independent of a particular type of computer. The
high-level languages are considered as high-level because they are closer to
human languages than machine-level languages.
A
compiler is required to translate a high-level language into a low-level
language.
Advantages of a high-level language
- The high-level language is easy
to read, write, and maintain as it is written in English like words.
- The high-level languages are
designed to overcome the limitation of low-level language, i.e., portability.
The high-level language is portable; i.e., these languages are
machine-independent.
o The following are the differences between
low-level language and high-level language:
Low-level language
|
High-level language
|
It is a machine-friendly language, i.e., the
computer understands the machine language, which is represented in 0 or 1.
|
It is a user-friendly language as this
language is written in simple English words, which can be easily understood
by humans.
|
The low-level language takes more time to
execute.
|
It executes at a faster pace.
|
It requires the assembler to convert the
assembly code into machine code.
|
It requires the compiler to convert the
high-level language instructions into machine code.
|
The machine code cannot run on all machines,
so it is not a portable language.
|
The high-level code can run all the platforms,
so it is a portable language.
|
It is memory efficient.
|
It is less memory efficient.
|
Debugging and maintenance are not easier in a
low-level language.
|
Debugging and maintenance are easier in a
high-level language.
|