Classification of computer languages (I)
Tags: computerscience, devlive, software, webdev
Published: 2020-04-11 18:49:01

Computer language allows communicate with the computer. It is made up of a set of symbols and words that follow some syntax rules, in the same way as it exists in natural languages. There is no classification adopted by the majority of the experts, there are big differences. 

If you want to see the whole thread of this post, here I leave the table of contents:

| <center> Content </center>       |
|-----------------------------------|
|<center>[**Classification Part II**] (https://dev.to/vplentinax/classification-of-computer-languages-ii-2201)</center>|
|<center>[**Classification Part III**] (https://dev.to/vplentinax/classification-of-computer-languages-iii-3ali)</center>|

A possible classification would be the following:

| Classification Computer Languages|    
|----------------------------------|
|**Markup Languages:** They allow to place marks, badges or signs in the text that they will be interpreted by applications or processes. (HTML, XHTML, XML, Markdown...)                      |
|**Specification or style languages:** They are languages ​​that they specify the presentation or style of a document written in one of the aforementioned markup languages. (CSS, XSL-FO, DSSL...)  | 
|**Query languages:** They allow to extract or manipulate data from a group of information.(SQL, CQL, XQUERY, DMX) |
|**Transformation languages**: They act on an initial information to obtain another new. (XSLT, TXL, DMS...)    |
|**Programming languages:**  They allow communication with hardware devices so that we can carry out a certain process. For this they can handle data structures stored in internal or external memory, and use control structures. They have a lexicon, and they have to follow rules syntactic and semantic. (Java, Javascript, C, C++, C#, Python...)     |

On many occasions I have heard some web developers say that they "program" in programming language as HTML and CSS. This is incorrect, HTML and CSS are not programming languages, as we have seen. If you are one of those developers, don't say it again 😊. 

**Programming languages** ​​also have various forms of classification. 
- Distance to hardware.
- Generations.
- Programming paradigm.
- Way of translating into machine language and to run.
- Server-client architecture


Let's see it in more detail.

### **Classification of programming languages**
#### Distance to hardware
Within this classification, there is another:

| Low-level languages | High-level languages |
|---------------------|----------------------|
|It is based directly on the electronic circuits of the machine. Programs written for one machine cannot be used on others, that is, it is not cross-platform. (Machine languages ​​and Assembly language.)|They tend to get closer to human language and separate of the internal knowledge of the machine, that's why they need to be translated into machine language. This translation makes execution slower than in low-level languages ​​but without depending on the processor, they can be run in different computers. They are cross-platform languages (Modern programming languages) |

**Machine language** is **binary code** (zeros and ones) and acts directly about hardware. It is the only language that does not need translation since the processor recognizes instructions directly.

**Assembly language.** Coding in assembly language is **mnemonic**, that is, uses labels to describe certain operations. It's just a translation of strings of 0 and 1 almost impossible to remember by names that allow you to identify the instructions. It is necessary to translate the assembly code into the machine language so that the processor recognizes the instructions.

This is an example of the 3 + 5 **addition operation** in **assembly language**, **machine language** and a general representation in **high-level languages**. The machine code is represented in hexadecimal for having a shorter representation.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/00e3zjn1co75dfpzysgh.png)

#### By Generations

|               Five generations           | 
|------------------------------------------|
|**1st generation (1GL):** formed by the languages ​​of programming used in the first computers: machine and assembler language.  |
|**2nd generation (2GL):** formed by language macroassembler which is the assembly language combined with control and operating instructions of more complex data. Each computer model has a language own assembler different from the others, for which the program can only be used on the machine to which was scheduled. They are still used to program the cores (kernel) of operating systems and drivers of some devices (device drivers). |
|**3rd generation (3GL)**: made up of most of today's high-level languages. The code is machine independent and language programming is similar to human language.                                          |
|**4th generation (4GL):** made up of languages ​​and environments designed for a very task or purpose specific as access to databases, report generation, interface generation user etc. For example: SQL, Informix 4GL, Progress 4GL.                                       |
|**5th generation (5GL):** natural languages, formed for the languages ​​in which the programmer sets the problem to be solved and the conditions to comply. Mechanisms that allow communication between people and machines through languages natural It is used in artificial intelligence, systems based on knowledge, expert systems, mechanisms of inference or natural language processing. Examples: Prolog, Smalltalk and Lisp.                                          |

In the next post, we will study the other classifications in more depth. See you soon.