LINGUAGGIO DI PROGRAMMAZIONE


Linguaggio Macchina: È il linguaggio direttamente comprensibile dal processore, costituito da sequenze binarie di 0 e 1. Non è progettato per essere letto o scritto dagli esseri umani, rendendolo estremamente difficile da utilizzare senza l'ausilio di strumenti specializzati. La rappresentazione potrebbe apparire come una sequenza di bit come "10101001010..."

Linguaggio a basso livello: detto anche assembly, permette di codificare le istruzioni del linguaggio macchina con delle sigle mnemoniche. In Windows .exe

Problemi:


Assembler: Si occupa di convertire il linguaggio a basso livello (assembly) in linguaggio macchina. Questo processo è reversibile, permettendo agli sviluppatori di modificare il codice originale.

Linguaggio ad alto livello: Più simile al linguaggio naturale, facilitando la lettura e la scrittura del codice da parte degli sviluppatori. Indipendente dalla CPU, il che significa che non è necessario conoscere le istruzioni specifiche di ogni processore. Istruzioni più astratte e semantiche semplificate, rendendo più agevole individuare errori e mantenere il codice.

Compilatore: converte il linguaggio di alto livello in linguaggio macchina per il processore. ​Ogni architettura di processore richiede il suo compilatore, e quindi il prodotto della compilazione (codice eseguibile) non è indipendente dalla CPU. ​Il processo di compilazione è reversibile, ma si ottiene solo del linguaggio di basso livello. ​Il compilatore si occupa anche di ottimizzare il codice, eliminando le operazioni inutili.

Linguaggio strutturato: C++, Pascal, Basic, Scratch..., è un linguaggio ad alto livello che utilizza tre componenti:


Linguaggi interpretati: non sempre i programmi vengono distribuiti come file compilati, alcuni linguaggi sono interpretati, e viene distribuito direttamente il codice sorgente, non riduce la sicurezza perché essa dipende soprattutto dalla logica. ​Su ogni singola macchina il programma viene compilato linea per linea (interpretato) e trasformato nel linguaggio macchina. 


Offuscamento: Il codice sorgente viene notevolmente complicato e mascherato. Questo per evitare che quando vendo un programma, chiunque possa vedere come è fatto dentro e facilmente scoprire gli algoritmi. Quindi prima di compilare il codice sorgente, lo si fa processare da un programma che lo rende più complicato da leggere per un essere umano. Spesso si usa l’offuscamento anche per ridurre la dimensione del bytecode.

Macchine Virtuali: via di mezzo tra linguaggio compilato ed interpretato. Il codice viene compilato nel linguaggio macchina di un processore virtuale di fantasia, producendo un file chiamato “bytecode”, è il passaggio più lento. Per ogni architettura/ sistema operativo esiste poi un programma che trasforma il bytecode nel codice macchina reale. Es: Java Virtual Machine e .Net (.exe di oggi).

Linguaggio ad oggetti: raggruppa in un’unica entità sia le strutture dati o proprietà sia le funzioni, cioè i metodi che operano su di esse, le entità possono comunicare tra di loro facilmente, per esempio basta inserire la data di nascita e poi il pc elabora in automatico l'età, che si chiama metodo. E' più facile riprodurre il mondo reale, più facile gestire e mantenere il codice (es: 10 programmatori, ognuno lavora su di esso). Inoltre è più facile riciclare il codice.

Polimorfismo: Catene di arricchimento degli oggetti, si creano oggetti più grandi che includo altri oggetti. Crea oggetto forma e da li si divide in quadrato, triangolo, cerchio, e si arricchiscono per esempio calcolando l'area (lo devono fare da sole)...  ​E' più facile riprodurre il mondo reale, più facile gestire e mantenere il codice (es: 10 programmatori, ognuno lavora su di esso). Inoltre è più facile riciclare il codice.