Programming Languages Explained

Mikhail Shevtsov - Oct 8 - - Dev Community

Image description

๐Ÿ“ Note: Thumbnail was generated using
Flux Schnell model with help of ComfyUI;
This article was written with help of NI - Natural Intelligence
๐ŸŽฅ Don't have time to read? - Watch the video we created:
Avoid GitHub Actions

Assembly ๐Ÿค–

Initially all programs were written in a binary - so called assembly
programming language. Where you literally instruct CPU what to do within
ALU. While assembly by being a low-level programming language provides
very fine control over ALU it requires programmers to actually know CPU
architecture and binary logic - itโ€™s very hard and expensive.
Assembly provides low level optimizations that benefit execution performance.
Examples of such programs that are being developed and actively maintained
are sorting algorithms, hash functions, loops etc.
So to reduce complexity and to improve efficiency smart people invented
high-level programming languages.

๐Ÿ“ Example of assembly hello world app for Linux X86:

section .data
    hello db 'Hello World!', 0x0A     ; The string to print, with a newline

section .text
    global _start                     ; Entry point for the program

_start:
    ; Write the string to stdout
    mov eax, 4                        ; syscall number for sys_write
    mov ebx, 1                        ; file descriptor 1 is stdout
    mov ecx, hello                    ; pointer to the string
    mov edx, 13                       ; length of the string
    int 0x80                          ; call kernel

    ; Exit the program
    mov eax, 1                        ; syscall number for sys_exit
    xor ebx, ebx                      ; exit code 0
    int 0x80                          ; call kernel
Enter fullscreen mode Exit fullscreen mode

High-level programming languages ๐Ÿ“ก

The purpose of high-level programming language is to simplify the procedure of
writing business logic using human readable text. High level programming
languages are classified as compiled and interpreted.

Compiled programming language ๐Ÿญ๏ธ

Compiled programming language translates high level human readable code into
machine cod during compilation procedure.
A program that does actual compilation is called a compiler.
Itโ€™s worth mentioning that each program needs to be compiled
to specific computer architecture.
Programs compiled for X86 will not work on ARM processors and vice versa.
So compilation for specific architecture is required.
Compilation is an irreversible process.
You canโ€™t reliably convert assembly code to high level source code.

Performance wise in majority of the cases compiled programs do execute
faster ๐Ÿ‡ than Interpreted programs.

Majority of compiled languages are statically typed.
Explanation follows in the next paragraphs.

Most popular compiled languages are C, C++, Rust, Objective C, C#.

๐Ÿ“ Hello world on written on C programming language:

#include <stdio.h>
int main() {
   printf("Hello World!");
   return 0;
}
Enter fullscreen mode Exit fullscreen mode

Statically and dynamically linked libraries ๐Ÿ“š๏ธ

Applications can perform certain typical actions such as display images,
uncompress archives and many others. While itโ€™s possible to write all such
functions from scratch itโ€™s impractical to do so.
For that purpose libraries are used.
Libraries help to reduce complexity of the development process by splitting
applications into modules. New features and bug fixes can be performed within
the scope of the module rather than the whole application.
The process of integrating libraries to the main application is called
Linking. Linking can be done dynamically - meaning that all libraries are
compiled separately and connected to the main application during
the runtime of the application or statically - meaning that all machine code
of the libraries is integrated into the main application binary.
Dynamic libraries usually have extension .dll for Windows and .so for Unix.

Interpreted programming language ๐Ÿ

Interpreted programming language translates high level human readable code
into machine code during execution of the program. The program that does that
is called an interpreter. Since an interpreter is also a program which
is already compiled for specific architecture of the CPU it can translate
high level code to machine language on the fly.

Performance wise in majority of the cases interpreted programs are slower ๐Ÿข
than compiled.

Most popular interpreted languages are Python, JavaScript, PHP, Ruby.

๐Ÿ“ Hello world on written on Python programming language:

print("Hello World!")
Enter fullscreen mode Exit fullscreen mode

Typisation in the programming languages ๐Ÿšง

Programming languages can be classified as statically or dynamically typed.

In statically typed programming language all variables and data structures
are pre-defined before compilation or execution of the program.
For example this means that if the developer defines variable A as string
he cannot change its value from string to a number later in the code.
This can be verified during Ahead Of Time (AOT) compilation and print
logical error. This simple technique helps to reduce the number of errors
during execution which leads to more stable programs.

In dynamically typed programming language variables can be reassigned
from one type to another. For example a variable A can first contain a number
and later can contain a string. That method simplifies the development process.

Data Structures

Variables ๐Ÿช†

Variables can be integer numbers, floating point numbers, strings.
They are considered to be the simplest possible data structure.
To dig deeper variables are stored using specified addresses in the RAM.
Address is a binary number (11111111111111101011111101111111111100001101100)
of the memory cell in RAM usually represented as hexadecimal number
(0x7fff5fbff86c) for ease of reading.

Constants are the special variables whose value, after assignment,
should not be changed by the running program.

Other Data Structures ๐ŸŽ

Beside Variables there are other data structures such as Arrays,
Associative Arrays, Linked Lists, Queues, Stacks and many others.
The purpose of these structures is to store data more efficiently
so it would be easier to work with the data.

Functions in the programming languages ๐Ÿšฆ

One of the ways to simplify programming of the business logic is to use
so-called functions. Like in math where f(x) is a function which produces
some value depending on the properties of that function in the programming
functions can return values or do some stuff. Functions can accept input
arguments such as a number, a string or any other data structure and return
values or data structures or they can work without any arguments at all,
everything depends on the business logic of the function itself.

Conclusions ๐Ÿš€

In reality programming languages are not as complex as everybody thinks.
If you only starting to learn programming - begin with simple interpreted
language like Python. After understanding basics - all other languages
will follow as easy as reading the syntax.

Source: https://blog.wiregate.io/posts/programming-languages-explained

. . . . . .
Terabox Video Player