Computer language generations are characterization of programming languages according to increasing easiness of solving a given problem in a specific domain. This characterization does not necessarily mean that a language in a higher generation is more powerful than one in a lower generation.
At the current times, we can characterize programming languages into five generations such that languages in a generation have their unique features and programming styles.
The first generation languages
This generation refers to machine level programming languages and were mostly used to program first generation computers. In this languages, the programs are written as a series of binary numbers i.e in terms of 0's and 1's , this makes the programs direct and suitable for computers to process but far more difficult for humans to learn,use and write.
Programs written in this languages do not need any translation since they are already in their most basic form and computers can understand and process the instructions in them directly.
The second generation languages
This generation is used to categorize assembly languages which are also known as symbolic machine code.Programs written in this languages are converted into machine code by the Assembler.
Each language in this generation is dependent to a particular hardware architecture because it is used as a mapping to a particular machine code, therefore programs written for a particular computer architecture will not work in others.
In today's software development, assembly languages are used minimally in large systems in order to gain direct control over hardware in a way not supported by higher level languages, they can as well be used in performance critical systems where a small performance issue can cause major losses.
Third generation programming languages
These are programming languages which tend to be less machine dependent and more programmer friendly. These languages strives to make the computer to take care of the non-essential details so that a programmer can focus more on implementing their solution than on caring about low-level issues.
Programs written in this languages are easier for humans to read , write and maintain because of how they shares close resemblance to human languges.Programs are eventually translated to their equivalent machine code in order for computers to process and are therefore slower and less efficient than those written in machine or assembly languages
Some languages in this generations includes COBOL, C, ALGOL, FORTRAN Java, Basic, C++,Pascal etc
Fourth generation languages
Fourth generation languages have high level of abstraction and deals mostly with large datasets. Unlike third generation languages which are normally used in many fields of programming, 4GL's are usually designed for a specific field and cannot be applied outside that field for example one cannot use SQL outside databases.
These languages are mostly found in domains such as report generation, Web development, GUI development and operations with modern databases. They are designed to be highly human friendly and mostly ignores low level features , this makes them accessible for use to humans who have little formal training as programmers.
Pure 4rth generation languages includes languages such as
- SQL
- Clarion
- Harbour
- FOCUS
- FileMaker
- Unix Shell
- Xojo
- MATLAB
- Mathematica
and many others.
Fifth generation programming languages
A fifth generation language is a language which is designed such that programmers describes the required results while the computers does most of the problem solving part.
As of current, this languages have a lot of limitations because computers are so limited at problem solving and decision making.
They are mainly used in artificial intelligence research and are not popular to programmers in other fields. Mercury is an example of a fifth generation language.