CPython, Cython, PyPy… Una guida introduttiva alle diverse varianti di Python

Dic 19, 2021
admin

Se siete appassionati di programmazione Python, è probabile che abbiate sentito le parole CPython, Cython, Jython, PyPy… Tuttavia, cosa sono esattamente?

In questo articolo faremo una piccola introduzione ad alcune di queste varianti di Python, così potrai almeno capire a cosa si riferiscono esattamente se le vedi in qualsiasi altro contesto.

CPython

CPython è l’implementazione Python originale, quella che probabilmente userai quotidianamente e che puoi scaricare ufficialmente da python.org. Il suo nome deriva dal fatto che il codice Python è compilato in bytecode usando C.

Jython

Jython è un’implementazione alternativa che usa Java, invece di C, per ottenere il bytecode. Questo permette a questo bytecode di essere eseguito nella JVM, la Java Virtual Machine, come altri linguaggi come Kotlin, Scala o Java stesso.

Come Jython è solo un’altra implementazione, la sintassi rimane invariata: potete prendere tutto il vostro codice CPython ed eseguirlo su Jython senza bisogno di cambiare una sola riga.

Cython

Cython è un compilatore che permette di scrivere estensioni C per Python, di solito con lo scopo di renderlo più efficiente. A differenza degli esempi precedenti, non è un’implementazione diversa: usa CPython per eseguire il codice Python. Può essere considerato un superset di Python, poiché contiene tutte le sue funzionalità e vi aggiunge le capacità extra del C.

Queste estensioni sono scritte in una sintassi specifica, molto simile a quella che userete per scrivere il codice C equivalente. Vediamo questo esempio (dal sito Wikipedia di Cython)

def sum_up_to_n(n): a = 0 for i in range(n): a += i return acpdef sum_up_to_n(int n): cdef int a = 0, i for i in range(n): a += i return a

PyPy

Con PyPy, abbiamo un’altra implementazione Python come CPython o Jython. Il punto interessante di questa implementazione è che è implementata in… Python stesso (sì, probabilmente questo vi ha fatto saltare la testa, quindi continuate a leggere per capire cosa intendiamo con questo)

Il nucleo di PyPy è un compilatore Just-In-Time (JIT) che usa per compilare le parti più ripetute del vostro codice sorgente nel codice nativo della macchina (invece che nel bytecode, come CPython o Jython). L’esecuzione del codice nativo è più efficiente dell’esecuzione del bytecode, quindi questo può portare a grandi miglioramenti di velocità anche considerando il tempo che verrà utilizzato per la compilazione del codice.

PyPy ha un sacco di informazioni dettagliate sui suoi vantaggi (e svantaggi) nel suo sito web, così come alcuni suggerimenti sulle prestazioni e consigli su quali casi potrebbero non essere più adatti ad esso, quindi vi incoraggio a controllarlo se siete interessati.

Riassunto

Dopo questo articolo, dovreste avere più familiarità con i concetti di CPython, Jython, Cython e PyPy. Tuttavia, è probabile che tu sia interessato a saperne di più, quindi ho preparato una lista di link che possono essere davvero utili se vuoi approfondire l’argomento. Spero che li troviate utili!

Link utili

  • Python.org – Implementazioni alternative di Python
  • La guida definitiva a Jython
  • Sito ufficiale di Cython
  • Sito ufficiale di PyPy
  • Compilazione just-in-time
  • Articolo su Toptal sulle implementazioni Python

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.