Modello di esecuzione Python

Manuale completo: vai all’indice del corso

Capitolo 1 – Linguaggi di programmazione e modello di esecuzione di Python

Materiale originale a cura di Alfredo Di Fiore – megistone.it


Il modello di esecuzione Python descrive il processo con cui il codice sorgente viene tradotto in bytecode ed eseguito dalla Python Virtual Machine.

1.1 Obiettivi formativi

Al termine di questo capitolo lo studente sarà in grado di:

  • comprendere cosa sia un linguaggio di programmazione e il suo ruolo nei sistemi di calcolo;
  • distinguere tra linguaggi compilati, interpretati e ibridi;
  • descrivere il modello di esecuzione di Python;
  • collocare Python nel panorama dei linguaggi moderni;
  • confrontare Python con linguaggi come C e Java dal punto di vista concettuale.

1.2 Cos’è un linguaggio di programmazione

Un linguaggio di programmazione è un linguaggio formale utilizzato per descrivere algoritmi, cioè
procedure finite e non ambigue che consentono di risolvere un problema computazionale.

Un linguaggio di programmazione è caratterizzato da:

  • sintassi: insieme delle regole che stabiliscono come scrivere correttamente le istruzioni;
  • semantica: significato delle istruzioni, ovvero cosa esse fanno durante l’esecuzione;
  • pragmatica: modalità con cui il linguaggio viene utilizzato per risolvere problemi reali.

Il calcolatore, tuttavia, non comprende direttamente i linguaggi di programmazione: esso esegue esclusivamente
codice macchina, costituito da sequenze binarie.

1.3 Livelli di astrazione dei linguaggi

I linguaggi di programmazione possono essere classificati in base al livello di astrazione rispetto all’hardware.

  • Linguaggi a basso livello (linguaggio macchina, assembly): consentono un controllo diretto dell’hardware, ma sono difficili da usare e poco portabili.
  • Linguaggi ad alto livello (C, C++, Java, Python): offrono costrutti più vicini al ragionamento umano e maggiore portabilità.

Python è un linguaggio ad alto livello, progettato per ridurre la distanza tra il problema da risolvere e il codice che lo descrive.

🔍 Approfondimento – Astrazione e produttività

Un maggiore livello di astrazione comporta in genere:

  • aumento della produttività del programmatore;
  • riduzione degli errori;
  • minore controllo diretto sull’hardware.

Python privilegia leggibilità e chiarezza rispetto all’ottimizzazione a basso livello.

1.4 Compilazione e interpretazione

Per eseguire un programma è necessario tradurre il codice sorgente in una forma comprensibile dalla CPU.
Esistono tre modelli principali: compilazione, interpretazione e modelli ibridi.

1.4.1 Linguaggi compilati

Nei linguaggi compilati (es. C, C++):

  1. il compilatore traduce l’intero programma in codice macchina;
  2. viene prodotto un file eseguibile;
  3. l’eseguibile può essere eseguito più volte senza ricompilazione.

Vantaggi: esecuzione veloce, controllo fine delle risorse.

Svantaggi: minore flessibilità, maggiore complessità di sviluppo.

1.4.2 Linguaggi interpretati

Nei linguaggi interpretati il codice sorgente viene tradotto ed eseguito istruzione per istruzione da un interprete,
senza generare un eseguibile autonomo.

Vantaggi: semplicità, facilità di debug.

Svantaggi: prestazioni inferiori rispetto ai compilati.

1.5 Modello di esecuzione Python: bytecode e PVM

Python utilizza un modello ibrido. Il codice Python segue tipicamente questo percorso:

  1. il file sorgente .py viene compilato internamente in un codice intermedio chiamato bytecode;
  2. il bytecode viene eseguito dalla Python Virtual Machine (PVM).

Il bytecode è indipendente dall’hardware, può essere memorizzato (ad esempio in file .pyc)
e permette prestazioni migliori rispetto a una pura interpretazione “riga per riga”.

💻 Esempio pratico

print("Ciao Python")

Questo semplice programma viene prima tradotto in bytecode e poi eseguito dalla Python Virtual Machine.

⚠️ Errore concettuale comune

“Python non è compilato”.

Falso: Python compila il sorgente in bytecode, ma non produce un eseguibile nativo come C o C++.

1.6 Python come linguaggio multi-paradigma

Python supporta più paradigmi di programmazione, tra cui:

  • programmazione procedurale;
  • programmazione orientata agli oggetti;
  • programmazione funzionale (in parte).

Questa flessibilità rende Python adatto sia all’insegnamento sia allo sviluppo professionale.

1.7 Confronto concettuale: Python, C, Java

Caratteristica C Java Python
Livello Medio-basso Alto Alto
Modello di esecuzione Compilato nativo Bytecode + VM Bytecode + PVM
Tipizzazione Statica Statica Dinamica (forte)
Gestione memoria Manuale Automatica (GC) Automatica (GC)

1.8 Ambiti di utilizzo di Python

  • didattica e formazione;
  • data science e machine learning;
  • intelligenza artificiale;
  • automazione e scripting;
  • sviluppo web;
  • calcolo scientifico.

1.9 Riepilogo

  • Python usa bytecode e PVM.
  • È multi-paradigma.
  • È orientato alla leggibilità.
  • Comprendere il modello di esecuzione migliora la qualità del codice.

1.10 Domande tipiche d’esame

  1. Che differenza c’è tra compilazione e interpretazione?
  2. Cos’è il bytecode Python?
  3. Qual è il ruolo della PVM?
  4. Perché Python è multi-paradigma?

1.11 Esercizi

  1. Descrivi il percorso sorgente → bytecode → PVM.
  2. Confronta Python e C nel modello di esecuzione.

Nel prossimo capitolo analizzeremo l’ambiente di sviluppo Python, la struttura di un programma e i primi strumenti fondamentali per iniziare a scrivere codice in modo professionale.

Per approfondire il funzionamento interno del bytecode puoi consultare la
documentazione ufficiale Python.


➡️ Prosegui con il capitolo successivo:

Capitolo 2 – Ambiente di sviluppo e struttura di un programma Python

Articoli simili