A language is medium of communication which is used for understanding each other’s ideas and is given used to convey the tasks to be done etc. i.e., in absence of a language one cannot really survive, as we need to do various activities, for which we need to communicate with people.
Communicating medium, should be such that one has to understand, what we are expressing and vice versa, i.e., the medium of communication should be common two individuals.
When we talk about programming languages of computers, we can really understand that they are quite similar to our languages, we need these languages for giving instructions to the computer, so that it can do the required processing requested.
Thus one can understand that the computer programming languagesare used for giving instructions that are to be followed by the computer to perform the requested tasks. There are many programming languages which are used by computer professionals for writing programs, each language being distinct in it and have the features which make them popular and useful to program any given task.
Any programming language consists of various symbols, character, and usage rules, which can be used by the programmers to communicate with the computer. There are at least few hundreds of programming languages areapplication specific (special purpose) where as the other programming languages are general purpose languages.
Every programming language should have instruction so that allow users to perform various tasks and these features only make the difference between two or more programming languages. The flexibility and the features of any programming language make it different from other programming languages.
Classification of Programming Languages
Programming languages are classified on the basis of their features, their functions and their capabilities. The scope of language also can be taken as the basis of classification. The classification of programming languages can be as follows:
Machine Languages: These languages are machine dependent language and the programs written in these languages are not portable. These are the languages which are understood by the machine directly as it consists of series of binary digits (0s & 1s).
As these languages are understood by the machine, the processing is faster. Instructions written in any machine language essentially have two parts, the first part being the basic command, instruction or operation, which tells the computer that what has to be done, each computer has operation code for every function it can perform.
The second part of the instruction is the operand, which tells the computer about where it can find the data required by the instruction, where the output has to be stored as well about any other instructions that have to be manipulated by it. The operands that can be used in any instruction vary from computer to computer.
In a single-operand machines, the binary equivalent of “ADD 1123” could be interpreted as that the value in storage location or address 1123 is to be added to a value which in stored in the arithmetic logic unit of the CPU.
In a two-operand machine, the binary equivalent of “ADD 1123 2679” could be interpreted as the value in address 2679 is added to the value in address 1123.
As all the instructions are to be given binary digits only, it becomes very difficult for the programmer to write programs as well it is very time consuming process. Apart from these difficulties, another problem is that the programmer has to remember the codes representing the machine’s instruction set, and the programmer has to keep of the storage locations of the data as well as instruction.
These complexities in the writing of programs, took months to develop the initial code, which is usually error prone, Detection of errors and rectification is very difficult task and is as tedious as writing the program itself. In case of the program has to be updated at a later stage, and then it is very difficult.
With the above reasons, these languages could not really become that popular, in spite of being faster to execute.
With the problems faced by the programmers using machine languages, to ease the complexity, assembly languages come into existence. These languages, which were developed in early 1950, used mnemonic operation codes, which represent the binary operation code. For addresses, symbolic representation was used.
The first step in program preparing process involved in replacing the numeric binary machine language operation with the mnemonic names. This makes mnemonic codes for every computer, which may vary slightly from computer to computer.
Machine code still used by the computer for processing data therefore, we need to have special software, which translates, the programs written in assembly language into machine language equivalent.
Assembler is special software, which helps the programmers to do programs is assembly language rather than machine language which is understood by the computer. Its convert, the program in assembly language(input) into equivalent machine language (output).
Thus assembler removes the need to write programs in machine language.
Even the addressing part of the instruction is represented by symbolic addressing by giving a name to the address, thus the programmers job become simpler.
The program written in assembly language is called “Source Program”, which has to be converted into machine language using Assembler Program and the resultant machine code is known as “Object Program”.
Assembly languages have many advantages over machine languages, as they save time and reduce complexity. The number of errors committed also is reduced the identification and removal becomes quite easy, when the program is written in assembly languages. When it comes to updating these programs, it is easy and less time consuming process.
The major limitation of the assembly languages is that they are machine specific, I.e., they are not portable from one processor type to other. The machine level and assembly languages are usually known as low-level languages.
High Level Languages
When assemblers were in early stages, they produced only one machine instruction for each source program. For spending up coding, later assemblers were developed, so that they could produce a variable amount of machinelanguage instruction for each source code, i.e.,
Macro instruction might produce several lines of machine language code, i.e., if one instruction is given, the background instructions should be automatically provided from already translated programs, which will ensure that the programs, which will ensure that the programmers need not write instructions for every operation.
The development of macro instruction and mnemonic techniquesled to the development of high-level languages, which are oriented towards certain specific processing problems, which are application specific like mathematics problems, file processing, specific applications etc.
The advantage of high level language programs is that they can be portable from computer to computer, with slight variations. The errors are reduced the identification and correcting errors became a still simpler task. The time consumed to write the programs is reduced and the programs are quite easy to maintain. These languages led to a very easy and structured programming, which is bound to save time and the programmers’ troubles are reduced to the lowest level.
As already learnt, the computer cannot understand any other language, other than machine language; therefore the computer is unable to understand the instructions given in high level languages. We need to convert these High Level Language Problems into machine language, which has to be taken care by the software.
Interpreter is a special program/software which is used for translating a high level language program into machine language. The interpreter takes the high level language program code as input line by line and converts it into machine level language, line by line, without producing object code for further use.
If the program needs to be run, then again it has to be interpreted and translated into machine language. This is an advantage, when the program is modified, but this way of interpreting line by line is bit slowly.
To overcome this problem of interpreting the program every time when executing, software is thought of.
It is that program, which converts the program in High Level Language into machine language, and the object program is stored, which can be executed, any time.
These compiler programs are efficient than the interpreter programs, as they take the whole source code and convert it into reusable object code.
Compilers are capable to generate many lines of code, for every line of source code. Thus compilers help the programmer by removing the task of recompiling the program every time it is being executed. Now, almost every high level language comes with own compilers, which make them every efficient. As compilers, convert total source code into object code, it is very fast to execute the program.
The limitation of the use of compilerbeing, that whenever the source program is modified, it has to be again recompiled to include the changes into the object code.
As these high level languages provide the flexibility to write programs, they are becoming very popular day by day. Some of the popular high level languages are Basic, FORTRAN, COBAL, ‘C’ (deemed as middle level as it has features of both low level and high level language) etc.
Loader is that program which loads an object program into primary memory of the computer, and makes it ready for execution. The loader usually loads the programs relocates and links the object programs, thereby making an object program executable.
Linker is the software, which does the important function of linking the object program to various modules, so that a single machine level program can be generated. This program plays an important role as it links various library functions used, various resources etc., and helps the program to execute efficiently and effectively.
- Features of Windows/95/98/2000/NT/XP/VISTA
- Full Explanation of Evolution of Programming Languages in Computers