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

These languages can be seen as an advancement  to third generation languages, there is actually an overlap between the two generations.Some third generation languages such as Python , Perl and Ruby supports some  features of fourth generation which would make them pass as  partly 4rth 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
  • FileMaker
  • Unix Shell
  • Xojo
  • 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.