The Classification of Programming Language

Photo by Susan Q Yin on Unsplash

The Classification of Programming Language

·

3 min read

The classification of programming language ​​is a topic I really enjoy discussing. There are two reasons. First, the category express how we look at the world; second, important differences between categories reveal their key qualities.

If a person can understand each category and master at least one language in each category, does that mean he can quickly get the overview of the whole world of programming languages? With this question in mind, I set out on this journey of discovery.

There are many classification methods, but by now people doesn't find a arching classification scheme.This point also makes the exploration process particularly interesting. I will talk about some of them. You can also find the complete category list on wikipedia.

In this article, I will write down my understanding of classification of programming languages and continue update it.

Classification 1: by Abstraction level

This classification method divide languages into three groups by their level of abstraction. It means how much it resembles the way of machine communciate and how far away form human language. The three groups are:

Machine language:
only zeros and ones (binary) so the machines can understand directly.

Low-level languages:
a little more abstract, very close to the way machines communicate, but do not reach binary. These languages are specific to each machine so we can't migrate easily from one machine to another machine. Within this group, the most characteristic language is the assembly language.

High-level languages:
Also named "advanced language", most closer to human language. They are easily writing, reading and modifying. For example, C, Java and Python.

Classification 2 : by Paradigm

This classification method divide languages into two groups by paradigms, which determine different ways of structuring and ordering the actions that a program must perform. The two groups are:

Imperative languages: programmers specify the sequence of operations (How)that the program must perform to solve the problem or get the result (What). C, Java or Python are some examples of imperative languages.

Declarative languages: programmer specify a desired result (What)and the language is responsible for getting what it takes to achieve it(How). Prolog, SQL,Lisp and Haskell are declarative languages.
Functional Programming languages is a subset of declarative programming languages. In functional programming language, programs are constructed by applying and composing functions. It discourage changes in the value of variables through assignment, making a great deal of use of recursion instead.A example of functional programming language is Haskell.

Classification 3 : by Compilation

This classification method divide languages into two groups by how they convert high-level code and make it readable by a computer. The two groups are:
Interpreted languages: code goes through a program called an interpreter, which reads and executes the code line by line. This tends to make these languages more flexible and platform independent. Examples of interpreted languages include: Python, JavaScript, PHP, Ruby.
Compiled languages: With interpreted languages, Compiled languages go through a build step where the entire program is converted into machine code. This makes it faster to execute, but it also means that you have to compile or "build" the program again anytime you need to make a change. Examples of compiled languages include: C, C++, and C#, Rust, Erlang.

Classification 4 : by Application Domain

This classification method divide languages into two groups by the problem domain they want to solve.The two groups are:
General-purpose programming language (GPL): is designed to be used for building software in a wide variety of application domains, across a multitude of hardware configurations and operating systems. Examples: Python, Java, C.
Domain specific programming languages (DPL):is designed to be used within a specific area, for example, querying databases. For example, SQL.

To be continue…