Everything about programming languages: for beginners

Everything about programming languages: for beginners

A programming language is designed to describe a set of consecutive actions executed by a computer. A programming language is, therefore, a practical way for us humans to give instructions to a computer.

What are the differences between languages?

  • Communication protocols

Computers use languages to communicate with each other and have nothing to do with programming languages. They are referred to as communication protocols, which is pretty different from the former. A very strict programming language, wherein each instruction corresponds to one processor action.

  • Machine code

The language used by the processor is called machine code. The code that reaches the processor consists of a series of 0s and 1s, known as binary data. Machine code is, therefore, difficult for humans to understand, which is why intermediary languages, which humans can understand, have been developed. The code written in this type of language is transformed into machine code so the processor can process it.

  • Programming language

The assembly language (or assembler language) was the first programming language ever used. This is very similar to machine code but can be understood by developers. Nonetheless, it is so similar to machine code that it strictly depends on the type of processor used (each processor type may have its own machine code).

Thus, a program developed for one machine may not be portable to another type of machine. The term portability describes the ability to use a software program on different types of machines. A software program written in assembler code may sometimes have to be rewritten entirely to work on another type of computer.

In conclusion, a programming language is much more understandable than machine code and allows greater portability.

What are imperative and functional programming languages?

Programming languages are generally divided into two major groups according to how their commands are processed: imperative languages and functional languages.

  • Imperative programming language

Imperative language programs use a series of commands, grouped into blocks and composed of conditional statements that allow the program to return to a block of commands if the condition is met. These were the first programming languages in use and, even today, many modern languages still use this principle.

Structured imperative languages suffer from lack of flexibility due to the sequentiality of instructions.

  • Functional programming language

A functional programming language (often called procedural language) is a language that creates programs using functions, returning to a new output state and receiving as input the result of other functions. When a function invokes itself, we refer to this as recursion.

What about interpretation and compilation languages?

Programming languages may be roughly divided into two categories: interpreted and compiled.

  • Interpreted languages

A programming language is, by definition, different from machine code. This must, therefore, be translated so that the processor can understand the code. A program written in an interpreted language requires an extra program (the interpreter), which translates the program's commands as needed.

  • Compiled languages

A program written in a compiled language is translated by an additional program called a compiler, which creates a new stand-alone file that does not require any other program to execute itself. Such a file is called an executable.

A program written in a compiled language does not require an additional program to run once it has been compiled. Furthermore, as the translation only needs to be done once, at compilation, it executes much faster.

However, it is not as flexible as a program written in an interpreted language. Each modification of the source file means that the program must be recompiled for the changes to take effect.

On the other hand, a compiled program can guarantee the source code's security. In effect, interpreted language, being a directly legible language, means that anyone can find out the secrets of a program and, thus, copy or modify the program. There is, therefore, a risk of copyright violation. On the other hand, certain secure applications need code confidentiality to avoid illegal copying (e.g., bank transactions, online payments, secure communications, etc.).

  • Intermediary languages

Some languages belong to both categories (i.e. LISP, Java, Python, etc.) as programs written in these languages may undergo an intermediary compilation phase into a file written in a language different from the source file and non-executable (requiring an interpreter). Java applets, small programs often loaded on web pages, are compiled files that can only be executed from within a web browser — these are files with the .class extension.

You have heard some of them, such as Java, C Programming Language, R Programming Language, or Python. Here is a non-exhaustive list of current programming languages:

Language Main application area Compiled/interpreted
ADA Real-time Compiled language
BASIC Programming for educational purposes Interpreted language
C System programming Compiled language
C++ System object programming Compiled language
Cobol Management Compiled language
Fortran Calculation Compiled language
Java Internet oriented programming Intermediary language
MATLAB Mathematical calculations Interpreted language
Mathematica Mathematical calculations Interpreted language
LISP Artificial intelligence Intermediary language
Pascal Education Compiled language
PHP Dynamic website development Interpreted language
Prolog Artificial intelligence Interpreted language
Perl Processing character strings Interpreted language