Linguaggi e macchine a vari livelli di astrazione.
Concetto di livello di astrazione.
Un livello di astrazione è un modo di descrivere un sistema ignorando i dettagli interni e concentrandosi sulle funzioni rilevanti.
In informatica:
- livelli alti → vicini all’uomo
- livelli bassi → vicini all’hardware
Ogni livello:
- usa un proprio linguaggio
- corrisponde a un “tipo” di macchina (reale o virtuale)
- viene tradotto nel livello sottostante
Catena dei livelli (visione generale).
Problema
↓
Algoritmo
↓
Linguaggio ad alto livello
↓
Linguaggio assembly
↓
Linguaggio macchina
↓
Hardware
Livello del problema e dell’algoritmo.
Linguaggio:
- linguaggio naturale
- pseudocodice
- formalismi logico-matematici
Macchina corrispondente:
- macchina “astratta” di calcolo
- modello algoritmico
Qui si descrive:
- cosa deve essere fatto
- non come elettricamente avviene
Esempio:
ordinare una lista di numeri
Livello dei linguaggi di programmazione ad alto livello.
Linguaggi:
- Python
- Java
- C
- C++
- JavaScript
Caratteristiche:
- leggibili
- indipendenti dall’hardware
- strutturati
- tipizzati (in vari modi)
Macchina corrispondente.
Macchina virtuale del linguaggio.
Esempi:
- Python interpreter
- Java Virtual Machine (JVM)
Livello intermedio — linguaggi a basso livello.
Assembly.
Caratteristiche:
- simbolico
- vicino alla CPU
- istruzioni elementari
- dipendente dall’architettura
Esempio:
MOV A, B
ADD A, C
Macchina corrispondente.
Architettura del processore (x86, ARM, RISC-V).
Livello del linguaggio macchina.
Linguaggio:
- binario puro
- sequenze di bit
- opcode + operandi
Esempio:
10110000 01100001
Macchina corrispondente.
CPU reale.
È l’unico linguaggio direttamente eseguibile.
Livello microarchitetturale.
Descrive come la CPU realizza le istruzioni:
- registri
- ALU
- unità di controllo
- pipeline
- microcodice
È il ponte tra:
- istruzioni macchina
- circuiti logici
Livello logico-digitale.
Qui troviamo:
- porte logiche
- flip-flop
- registri
- circuiti combinatori
Rappresentazione:
- algebra di Boole
- schemi logici
Livello fisico.
Componenti:
- transistor
- segnali elettrici
- tensioni
- temporizzazioni
È la macchina fisica reale.
Traduzione tra livelli.
Ogni livello superiore viene tradotto nel livello inferiore.
Compilazione.
Alto livello → macchina
Interpretazione.
Esecuzione tramite interprete.
Assemblaggio.
Assembly → macchina.
Macchine reali e macchine virtuali.
Macchina reale.
- hardware fisico
- CPU vera
Macchina virtuale.
- ambiente software che simula una macchina
Esempi:
- JVM
- .NET CLR
- VM virtualizzate
Perché è importante nel laboratorio.
Devi saper spiegare che:
- un programma non va direttamente all’hardware
- esistono strati di traduzione
- ogni livello semplifica la progettazione
- l’astrazione riduce la complessità
- linguaggi diversi corrispondono a diversi livelli
Schema riassuntivo da memorizzare.
| Livello | Linguaggio | Macchina |
| Problema | naturale | modello algoritmico |
| Alto livello | Python, C | VM/interprete |
| Assembly | mnemonico | architettura CPU |
| Macchina | binario | CPU |
| Logico | porte | circuiti |
| Fisico | segnali | hardware |
Risposta pronta da interrogazione.
I linguaggi e le macchine sono organizzati a livello di astrazione: dai linguaggi ad alto livello vicini all’uomo fino al linguaggio macchina eseguito dalla CPU. Ogni livello usa una propria rappresentazione e viene tradotto nel livello sottostante. Questo modello a strati permette di gestire la complessità dei sistemi di elaborazione.
