Mojo è un linguaggio di programmazione che unisce la facilità d’uso e la flessibilità dei linguaggi dinamici, come Python, con le prestazioni e il controllo dei linguaggi di sistema, come C++ e Rust.
Raggiunge alte prestazioni grazie a tecnologie di compilazione innovative, come caching integrato, multithreading e distribuzione su cloud, mentre autotuning e metaprogrammazione consentono di ottimizzare il codice per diversi hardware.
Le caratteristiche chiave di Mojo includono:
Una sintassi simile a Python e tipizzazione dinamica rendono Mojo facile da imparare per gli sviluppatori Python, dato che Python è il principale linguaggio dietro gli sviluppi moderni in IA/ML.
Con Mojo puoi importare e utilizzare qualsiasi libreria Python, garantendo piena interoperabilità con Python.
Supporta sia la compilazione just-in-time (JIT) sia ahead-of-time (AOT). Il compilatore di Mojo applica ottimizzazioni avanzate e persino la generazione di codice per GPU/TPU.
Mojo offre il pieno controllo sul layout della memoria, la concorrenza e altri dettagli di basso livello.
Combinando le capacità dei linguaggi dinamici e di sistema, Mojo segue un modello di programmazione unificato, adatto ai principianti e scalabile per vari casi d’uso basati su acceleratori.
Mojo è attualmente un linguaggio incompleto e non è disponibile al pubblico. La documentazione è rivolta a sviluppatori con esperienza di programmazione di sistema.
Tuttavia, man mano che il linguaggio cresce, l’intento è di renderlo più intuitivo e accessibile anche ai programmatori alle prime armi.
Come iniziare con Mojo Lang
Mojo non è disponibile pubblicamente, ma puoi accedere al Mojo Playground iscrivendoti ai Modular Products. Durante la registrazione, assicurati di aver selezionato Mojo in Modular Product Interest.
Dopo l’iscrizione, entro un’ora riceverai un’email che ti concede l’accesso al Mojo Playground. Il Mojo Playground è un ambiente JupyterHub in cui gli utenti possono accedere alla stessa libreria standard di Mojo. Tuttavia, ogni utente ha uno spazio privato per scrivere e salvare i propri programmi Mojo.
Immagine da Mojo Playground
Quando Mojo diventerà open source e disponibile pubblicamente, potrai eseguire un programma Mojo da terminale. È sia un linguaggio interpretato sia compilato.
Puoi salvare il file come test.mojo o test.🔥.
Sì, puoi salvare il tuo file con l’emoji del fuoco. Come vedi, abbiamo creato un semplice file Mojo test.🔥 ed eseguito nel terminale.
Mojo è un superset di Python e ha una sintassi quasi identica a Python. Introduce anche nuove funzionalità come let, var, struct e fn per definire variabili, strutture e funzioni in modo più performante.
Dichiarazioni let e var
Quando scrivi codice in Mojo, puoi dichiarare variabili specifiche usando le parole chiave let e var. È simile a come dichiari le variabili in Rust.
La parola chiave let indica che una variabile è immutabile, mentre var indica che può essere modificata. Questo migliora le prestazioni imponendo restrizioni in fase di compilazione.
Tipi struct
Mojo usa la parola chiave struct, simile alla class di Python. Le classi in Python sono dinamiche e lente; i tipi struct sono più simili a C/C++ e Rust. Hanno layout di memoria fissi determinati in fase di compilazione, ottimizzati per prestazioni native alla macchina.
Definizioni fn
Usare def per definire una funzione crea una funzione Python, con tutto il dinamismo e la flessibilità associati a Python. La parola chiave fn, invece, definisce una funzione Mojo con più restrizioni. Significa che gli argomenti sono immutabili per impostazione predefinita e richiedono tipizzazione esplicita e dichiarazioni delle variabili locali, tra le altre cose.
Esempio di confronto della sintassi
Nell’esempio creeremo una funzione Mojo che somma due argomenti.
Per eseguire la funzione Mojo:
Devi specificare un tipo per gli argomenti della funzione.
Devi dichiarare il tipo di ritorno con una freccia.
fn add(x: Int, y: Int) -> Int:
return x + y
z = add(3, 5)
print(z)>>>8Offerto da
Quando programmi in Python, puoi definire funzioni senza specificare esplicitamente i tipi di argomenti e output. Questo rende il processo più dinamico e semplice. Tuttavia, a confronto, la funzione fn di Mojo è più veloce di def.
def add(x, y):
return x + y
z = add(3, 5)
print(z)>>>8Offerto da
Matplotlib in Mojo
Mojo non solo migliora le prestazioni, ma consente anche agli sviluppatori di importare qualsiasi libreria Python e integrarla con funzioni Mojo. Utilizzando l’interprete CPython, Mojo supporta senza soluzione di continuità tutti i moduli Python attualmente disponibili.
Nel seguente esempio, abbiamo importato matplotlib.pyplot e visualizzato un grafico a linee. Per esempi avanzati, dai un’occhiata a Mandelbrot in Mojo.
from PythonInterface import Python
let plt = Python.import_module("matplotlib.pyplot")
x =[1, 2, 3, 4]
y =[30, 20, 50, 60]
plt.plot(x, y)
plt.show()Offerto da
È ampiamente riconosciuto che Python è il linguaggio più popolare per IA/ML. Seguire il career track Machine Learning Scientist with Python ti fornirà le competenze Python necessarie per trovare lavoro come machine learning scientist.
Programmare con Mojo Lang
Mojo è un superset di Python, proprio come TypeScript è un superset di JavaScript. A parte nuove parole chiave e funzioni, qualsiasi programmatore Python può comprenderlo e costruire programmi con esso.
In questa parte esamineremo le funzionalità di programmazione di Mojo che lo rendono performante e sicuro.
Programmazione di basso livello
Mojo è un linguaggio di alto livello che fornisce accesso a primitive di basso livello tramite MLIR (Multi-Level Intermediate Representation), un formato di rappresentazione intermedia estensibile. Questo consente ai programmatori Mojo di implementare astrazioni a costo zero sfruttando al contempo potenti ottimizzazioni del compilatore.
Ottimizzazione tiling e autotune
Mojo include uno strumento di ottimizzazione tiling che migliora la località della cache e i pattern di accesso alla memoria dividendo le computazioni in tasselli più piccoli che entrano nella memoria cache veloce.
Il modulo Autotune in Mojo offre interfacce per la compilazione adattiva. Ti aiuta a trovare i parametri migliori per il tuo hardware di destinazione ottimizzando automaticamente il tuo codice.
Ownership e borrowing
Mojo utilizza il sistema di ownership e borrowing per gestire la memoria, eliminando la necessità di un garbage collector e garantendo prestazioni runtime costanti. Il compilatore di Mojo analizza i cicli di vita delle variabili tramite analisi statica e libera i dati non appena non sono più utilizzati.
Gestione manuale della memoria
Mojo fornisce anche un sistema di gestione manuale mediante puntatori, simile a C++ e Rust.
Moltiplicazione di matrici in Mojo
Nell’esempio di Moltiplicazione di matrici, abbiamo osservato che importare codice Python in Mojo ha comportato un incremento di prestazioni di 17,5 volte.
Introducendo i tipi nell’implementazione Python, le prestazioni sono aumentate ulteriormente, fino a 1866,8 volte.
Inoltre, sono state utilizzate tecniche come vettorizzazione, parallelizzazione, tiling e autotuning per ottenere un incremento di prestazioni di 14050,5 volte. È fantastico. Persino Julia e Rust non riescono a offrire questo livello di ottimizzazione.
Esempio di codice Mojo Lang
In questo esempio dell’auto, creeremo una classe CAR con la sintassi di Mojo.
Creeremo una classe CAR usando struct.
Inizializzeremo una variabile mutabile usando var.
Imposteremo i tipi delle variabili. La "speed" è Float32 e "model" è String. String non è un tipo integrato, quindi dobbiamo importarlo.
Creeremo due funzioni di inizializzazione simili a Python ma con la funzione fn. Una con solo la velocità dell’auto e un’altra con velocità e modello dell’auto.
Dopodiché, creeremo un oggetto usando CAR con velocità 300.
Stamperemo il modello dell’auto.
from String import String
struct CAR:
var speed: Float32
var model: String
fn __init__(inout self, x: Float32):
"""Car con sola velocità"""
self.speed = x
self.model ='Base'
fn __init__(inout self, r: Float32, i: String):
"""Car con velocità e modello"""
self.speed = r
self.model = i
my_car=CAR(300)
print(my_car.model)Offerto da
Come puoi notare, lo stile di programmazione e le funzionalità di Mojo sono simili a quelli di Python. Funziona come un’estensione di Python, migliorandone prestazioni e gestione della memoria. Con Mojo puoi addestrare rapidamente il tuo modello, ottenere inferenze più veloci (anche con CPU), analizzare set di dati enormi in pochi secondi e simulare in tempo reale.
Puoi consultare tutti gli esempi di codice sulla documentazione di Modular ed eseguirli su un notebook Jupyter nel playground.
Mojo sostituirà Python?
Al momento è difficile determinare il potenziale di Mojo come linguaggio di programmazione generale a causa della sua fase di sviluppo iniziale e della mancanza di funzionalità necessarie. Tuttavia, potrebbe superare Python nelle applicazioni di machine learning e IA in cui le alte prestazioni sono cruciali.
Ciononostante, è improbabile che Mojo rimpiazzi del tutto il ruolo di primo piano di Python nella data science e in altre aree dello sviluppo software a breve.
Mojo è progettato specificamente per applicazioni di machine learning e non è pensato per altri ambiti, come backend web, automazione di processi o web design. Sebbene in futuro gli sviluppatori possano ampliarne le capacità, l’attuale focus di Mojo è ottimizzare per le applicazioni di machine learning.
Inoltre, va notato che Mojo ha una selezione limitata di moduli e librerie rispetto a Python, che beneficia di una grande comunità di sviluppatori impegnata a creare continuamente nuovi e migliori strumenti per IA e data science. Potrebbero volerci anni perché Mojo raggiunga il livello di maturità di Python.
Scopri come vengono sviluppati i modelli di IA generativa e come influenzeranno la società in futuro seguendo il corso Generative AI Concepts di DataCamp.
Conclusione
In conclusione, sebbene Mojo mostri promesse come linguaggio veloce e compatibile con Python, pensato per IA/ML, è improbabile che sostituisca completamente Python nel prossimo futuro. Python beneficia di un enorme ecosistema, di una comunità attiva e di un radicamento profondo nella data science e nel ML. Nel migliore dei casi, Mojo potrebbe diventare un linguaggio complementare a Python, usato dove la velocità è fondamentale.
Nel tutorial abbiamo passato in rassegna le funzionalità e la sintassi dei linguaggi di programmazione Mojo con esempi di codice. Abbiamo anche fatto un confronto con Python, considerando fattori come prestazioni, sintassi, funzionalità e compatibilità. Per chi è interessato a padroneggiare le basi di IA e Machine Learning, consigliamo di iscriversi al track Machine Learning Fundamentals with Python.
In quanto data scientist certificato, sono appassionato di sfruttare tecnologie all’avanguardia per creare applicazioni di machine learning innovative. Con una solida esperienza in riconoscimento vocale, analisi e reportistica dei dati, MLOps, AI conversazionale e NLP, ho affinato le mie competenze nello sviluppo di sistemi intelligenti in grado di avere un impatto concreto. Oltre alla mia expertise tecnica, sono anche un comunicatore efficace, con il talento di rendere chiari e sintetici concetti complessi. Di conseguenza, sono diventato un blogger molto seguito in ambito data science, condividendo idee ed esperienze con una community in crescita di professionisti dei dati. Attualmente mi concentro sulla creazione e sull’editing di contenuti, lavorando con large language model per sviluppare contenuti potenti e coinvolgenti che possano aiutare aziende e singoli a valorizzare al meglio i propri dati.
Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Scopri come usare l'IA generativa in modo responsabile. Scopri come si sviluppano i modelli di IA generativa e quale impatto avranno sulla società in futuro.
Impara l'arte dell'apprendimento automatico e diventa un maestro nella predizione, nel riconoscimento dei modelli e negli albori dell'apprendimento profondo e dell'apprendimento per rinforzo.
Mojo è un linguaggio di programmazione che unisce la facilità d’uso e la flessibilità dei linguaggi dinamici, come Python, con le prestazioni e il controllo dei linguaggi di sistema, come C++ e Rust.
Raggiunge alte prestazioni grazie a tecnologie di compilazione innovative, come caching integrato, multithreading e distribuzione su cloud, mentre autotuning e metaprogrammazione consentono di ottimizzare il codice per diversi hardware.
Le caratteristiche chiave di Mojo includono:
Mojo è attualmente un linguaggio incompleto e non è disponibile al pubblico. La documentazione è rivolta a sviluppatori con esperienza di programmazione di sistema.
Tuttavia, man mano che il linguaggio cresce, l’intento è di renderlo più intuitivo e accessibile anche ai programmatori alle prime armi.
Come iniziare con Mojo Lang
Mojo non è disponibile pubblicamente, ma puoi accedere al Mojo Playground iscrivendoti ai Modular Products. Durante la registrazione, assicurati di aver selezionato Mojo in Modular Product Interest.
Immagine da Modular: Inizia oggi
Dopo l’iscrizione, entro un’ora riceverai un’email che ti concede l’accesso al Mojo Playground. Il Mojo Playground è un ambiente JupyterHub in cui gli utenti possono accedere alla stessa libreria standard di Mojo. Tuttavia, ogni utente ha uno spazio privato per scrivere e salvare i propri programmi Mojo.
Immagine da Mojo Playground
Quando Mojo diventerà open source e disponibile pubblicamente, potrai eseguire un programma Mojo da terminale. È sia un linguaggio interpretato sia compilato.
Puoi salvare il file come
test.mojootest.🔥.Sì, puoi salvare il tuo file con l’emoji del fuoco. Come vedi, abbiamo creato un semplice file Mojo
test.🔥ed eseguito nel terminale.Mojo Lang e Python
Mojo è un superset di Python e ha una sintassi quasi identica a Python. Introduce anche nuove funzionalità come
let,var,structefnper definire variabili, strutture e funzioni in modo più performante.Dichiarazioni let e var
Quando scrivi codice in Mojo, puoi dichiarare variabili specifiche usando le parole chiave
letevar.È simile a come dichiari le variabili in Rust.La parola chiave
letindica che una variabile è immutabile, mentrevarindica che può essere modificata. Questo migliora le prestazioni imponendo restrizioni in fase di compilazione.Tipi struct
Mojo usa la parola chiave
struct, simile allaclassdi Python. Le classi in Python sono dinamiche e lente; i tipistructsono più simili a C/C++ e Rust. Hanno layout di memoria fissi determinati in fase di compilazione, ottimizzati per prestazioni native alla macchina.Definizioni fn
Usare
defper definire una funzione crea una funzione Python, con tutto il dinamismo e la flessibilità associati a Python. La parola chiavefn, invece, definisce una funzione Mojo con più restrizioni. Significa che gli argomenti sono immutabili per impostazione predefinita e richiedono tipizzazione esplicita e dichiarazioni delle variabili locali, tra le altre cose.Esempio di confronto della sintassi
Nell’esempio creeremo una funzione Mojo che somma due argomenti.
Per eseguire la funzione Mojo:
Quando programmi in Python, puoi definire funzioni senza specificare esplicitamente i tipi di argomenti e output. Questo rende il processo più dinamico e semplice. Tuttavia, a confronto, la funzione
fndi Mojo è più veloce didef.Matplotlib in Mojo
Mojo non solo migliora le prestazioni, ma consente anche agli sviluppatori di importare qualsiasi libreria Python e integrarla con funzioni Mojo. Utilizzando l’interprete CPython, Mojo supporta senza soluzione di continuità tutti i moduli Python attualmente disponibili.
Nel seguente esempio, abbiamo importato
matplotlib.pyplote visualizzato un grafico a linee. Per esempi avanzati, dai un’occhiata a Mandelbrot in Mojo.È ampiamente riconosciuto che Python è il linguaggio più popolare per IA/ML. Seguire il career track Machine Learning Scientist with Python ti fornirà le competenze Python necessarie per trovare lavoro come machine learning scientist.
Programmare con Mojo Lang
Mojo è un superset di Python, proprio come TypeScript è un superset di JavaScript. A parte nuove parole chiave e funzioni, qualsiasi programmatore Python può comprenderlo e costruire programmi con esso.
In questa parte esamineremo le funzionalità di programmazione di Mojo che lo rendono performante e sicuro.
Programmazione di basso livello
Mojo è un linguaggio di alto livello che fornisce accesso a primitive di basso livello tramite MLIR (Multi-Level Intermediate Representation), un formato di rappresentazione intermedia estensibile. Questo consente ai programmatori Mojo di implementare astrazioni a costo zero sfruttando al contempo potenti ottimizzazioni del compilatore.
Ottimizzazione tiling e autotune
Mojo include uno strumento di ottimizzazione tiling che migliora la località della cache e i pattern di accesso alla memoria dividendo le computazioni in tasselli più piccoli che entrano nella memoria cache veloce.
Il modulo Autotune in Mojo offre interfacce per la compilazione adattiva. Ti aiuta a trovare i parametri migliori per il tuo hardware di destinazione ottimizzando automaticamente il tuo codice.
Ownership e borrowing
Mojo utilizza il sistema di ownership e borrowing per gestire la memoria, eliminando la necessità di un garbage collector e garantendo prestazioni runtime costanti. Il compilatore di Mojo analizza i cicli di vita delle variabili tramite analisi statica e libera i dati non appena non sono più utilizzati.
Gestione manuale della memoria
Mojo fornisce anche un sistema di gestione manuale mediante puntatori, simile a C++ e Rust.
Moltiplicazione di matrici in Mojo
Nell’esempio di Moltiplicazione di matrici, abbiamo osservato che importare codice Python in Mojo ha comportato un incremento di prestazioni di 17,5 volte.
Introducendo i tipi nell’implementazione Python, le prestazioni sono aumentate ulteriormente, fino a 1866,8 volte.
Inoltre, sono state utilizzate tecniche come vettorizzazione, parallelizzazione, tiling e autotuning per ottenere un incremento di prestazioni di 14050,5 volte. È fantastico. Persino Julia e Rust non riescono a offrire questo livello di ottimizzazione.
Esempio di codice Mojo Lang
In questo esempio dell’auto, creeremo una classe
CARcon la sintassi di Mojo.CARusandostruct.var.fn. Una con solo la velocità dell’auto e un’altra con velocità e modello dell’auto.CARcon velocità 300.Come puoi notare, lo stile di programmazione e le funzionalità di Mojo sono simili a quelli di Python. Funziona come un’estensione di Python, migliorandone prestazioni e gestione della memoria. Con Mojo puoi addestrare rapidamente il tuo modello, ottenere inferenze più veloci (anche con CPU), analizzare set di dati enormi in pochi secondi e simulare in tempo reale.
Puoi consultare tutti gli esempi di codice sulla documentazione di Modular ed eseguirli su un notebook Jupyter nel playground.
Mojo sostituirà Python?
Al momento è difficile determinare il potenziale di Mojo come linguaggio di programmazione generale a causa della sua fase di sviluppo iniziale e della mancanza di funzionalità necessarie. Tuttavia, potrebbe superare Python nelle applicazioni di machine learning e IA in cui le alte prestazioni sono cruciali.
Ciononostante, è improbabile che Mojo rimpiazzi del tutto il ruolo di primo piano di Python nella data science e in altre aree dello sviluppo software a breve.
Mojo è progettato specificamente per applicazioni di machine learning e non è pensato per altri ambiti, come backend web, automazione di processi o web design. Sebbene in futuro gli sviluppatori possano ampliarne le capacità, l’attuale focus di Mojo è ottimizzare per le applicazioni di machine learning.
Inoltre, va notato che Mojo ha una selezione limitata di moduli e librerie rispetto a Python, che beneficia di una grande comunità di sviluppatori impegnata a creare continuamente nuovi e migliori strumenti per IA e data science. Potrebbero volerci anni perché Mojo raggiunga il livello di maturità di Python.
Scopri come vengono sviluppati i modelli di IA generativa e come influenzeranno la società in futuro seguendo il corso Generative AI Concepts di DataCamp.
Conclusione
In conclusione, sebbene Mojo mostri promesse come linguaggio veloce e compatibile con Python, pensato per IA/ML, è improbabile che sostituisca completamente Python nel prossimo futuro. Python beneficia di un enorme ecosistema, di una comunità attiva e di un radicamento profondo nella data science e nel ML. Nel migliore dei casi, Mojo potrebbe diventare un linguaggio complementare a Python, usato dove la velocità è fondamentale.
Nel tutorial abbiamo passato in rassegna le funzionalità e la sintassi dei linguaggi di programmazione Mojo con esempi di codice. Abbiamo anche fatto un confronto con Python, considerando fattori come prestazioni, sintassi, funzionalità e compatibilità. Per chi è interessato a padroneggiare le basi di IA e Machine Learning, consigliamo di iscriversi al track Machine Learning Fundamentals with Python.