Hai mai desiderato creare app più veloci ed efficienti, ma hai scoperto che i linguaggi di programmazione standard non sono in grado di soddisfare le tue esigenze?
È qui che entra in gioco Mojo Language.
Mojo è un nuovo linguaggio di programmazione sviluppato da componibile, una società specializzata in infrastrutture AI.
È progettato in particolare per consentire agli sviluppatori di creare app più rapide e robuste per diversi casi d'uso, incluso lo sviluppo dell'IA. In questo post, vedremo cosa Mojo è, come funziona e perché dovresti usarlo nel tuo prossimo progetto.
Le origini di Mojo
I creatori di Mojo hanno riconosciuto la necessità di un linguaggio di programmazione che combinasse l'usabilità di Python con la velocità e l'efficienza di C.
Inoltre, hanno stabilito un linguaggio che avrebbe consentito agli sviluppatori di creare app ad alte prestazioni senza dover imparare i linguaggi di descrizione dell'hardware standard.
Di conseguenza, hanno creato Mojo, che dovrebbe essere completamente compatibile con l'ecosistema Python fornendo velocità di livello C.
Modulare: l'organizzazione dietro il linguaggio Mojo
Quindi, chi sono i creatori di questo linguaggio futuristico?
Modular è una startup di infrastrutture AI leader a livello mondiale creata da Chris Lattner e Tim Davis, che si sono incontrati in Google e si sono resi conto che un'infrastruttura troppo complicata e frammentata stava limitando l'influenza globale dell'IA.
Lo scopo e l'obiettivo di Modular sono ripensare l'infrastruttura AI per migliorare l'umanità. La loro cultura e i loro principi premiano i clienti, il software di produzione di alta qualità e la fornitura di risultati significativi
Gli obiettivi di Mojo
Mojo è stato progettato per fornire un modello di programmazione unico per gli acceleratori di machine learning.
Modular ha stabilito che Mojo dovrebbe consentire la programmazione generica perché le CPU odierne hanno tensori e altri acceleratori AI. Inoltre, poiché Python è ampiamente utilizzato nell'apprendimento automatico e in altri campi, Modular ha scelto di unirsi all'ecosistema Python.
L'uso di Python ha ulteriormente facilitato la progettazione del linguaggio. Poiché la maggior parte della sintassi era già stata determinata, la società poteva invece concentrarsi sulla creazione del meccanismo di compilazione e sulla fornitura di capacità di programmazione specializzate.
Caratteristiche importanti da considerare
programmabilità
Tipi progressivi
La caratteristica dei tipi progressivi di Mojo Language consente agli sviluppatori di utilizzare annotazioni di tipo per migliorare l'efficienza e controlli degli errori.
Gli sviluppatori possono progettare un codice più efficace che rilevi gli errori in fase di compilazione, eliminando i bug e migliorando l'efficienza, fornendo informazioni di tipo più approfondite.
Astrazioni a costo zero
Gli sviluppatori possono assumere il controllo dell'archiviazione allocando in linea i dati nelle strutture grazie alle astrazioni a costo zero fornite dal linguaggio Mojo.
Eliminando il requisito di allocazioni di memoria aggiuntive, questa funzione migliora l'efficienza del codice e riduce la quantità di codice boilerplate.
Sintonizzazione automatica della lingua integrata
La funzionalità di ottimizzazione automatica integrata nel linguaggio in Mojo Language consente agli sviluppatori di determinare automaticamente i valori ideali dei parametri per trarre vantaggio dall'hardware di destinazione.
Con questa funzionalità, è più semplice ottimizzare il codice senza doverlo regolare manualmente per ogni combinazione hardware.
Mojo Language è uno strumento flessibile ed efficace per lo sviluppo dell'IA poiché fornisce anche l'intera potenza di MLIR (rappresentazione intermedia multilivello), un runtime eterogeneo parallelo e tempi di compilazione rapidi.
Parallelizzazione
Mojo utilizza MLIR, che consente ai programmatori di utilizzare vettori, thread e unità hardware per l'intelligenza artificiale per la parallelizzazione. Mojo supporta l'elaborazione parallela su più core rispetto all'esecuzione a thread singolo di Python.
Con un aumento della velocità di 35,000 volte rispetto a Python, Mojo batte altri linguaggi in termini di velocità.
Interoperabilità
L'interoperabilità con l'intero ecosistema Python è uno dei vantaggi esclusivi di Mojo. Ciò implica che puoi combinare Mojo con qualsiasi libreria arbitraria, come Numpy e Matplotlib, così come il tuo codice su misura.
Ad esempio, puoi visualizzare i dati nel tuo codice Mojo usando la libreria Python Matplotlib.
Estensibilità
Mojo è anche abbastanza flessibile, consentendo agli utenti di aggiungere semplicemente passaggi di pre e post-elaborazione ai modelli o di sostituire i passaggi esistenti con quelli nuovi.
Per migliorare i propri modelli e lo stack modulare, gli sviluppatori possono utilizzare la fusione del kernel, la riscrittura dei grafici, le funzioni di forma e altre tecniche.
Perché dovresti sceglierlo su Python?
Python è un popolare linguaggio di sviluppo AI grazie alla sua flessibilità e alle librerie compilate ad alte prestazioni. Tuttavia, è significativamente più lento di linguaggi come C++.
Pertanto, i programmatori imparano a utilizzare i wrapper Python in linguaggi più veloci per evitare di utilizzare Python per aree critiche per le prestazioni.
Ciò porta al problema delle due lingue, in cui i modelli devono essere trasformati da Python in un'implementazione più rapida, come ONNX o script torcia, che non supporta tutte le funzionalità di Python. Python ha anche problemi di prestazioni e una mancanza di una buona elaborazione parallela.
Anche i programmatori esperti trovano difficile studiare, eseguire il debug e risolvere i problemi di prestazioni a causa del dilemma delle due lingue.
Ci sono anche restrizioni di base su ciò che Python può fare a causa del modo in cui è strutturato il linguaggio. Mentre l'implementazione nel mondo reale di algoritmi che impiegano componenti di base può sembrare facile, è significativamente più difficile e richiede l'uso di un linguaggio più veloce.
Come iniziare?
Puoi iniziare a utilizzare Mojo Language in questo momento nel loro parco giochi per iniziare. Il Playground basato su JupyterHub offre lezioni e l'opportunità di creare il proprio codice Mojo, anche se Mojo è ancora un work in progress.
È possibile registrarsi per l'accesso sul loro sito Web per accedere al Playground.
Per raggiungere i suoi obiettivi prestazionali, Mojo utilizza tecnologie di compilazione di nuova generazione con tecnologie integrate di memorizzazione nella cache, multithreading e distribuzione cloud.
Aggiunge ulteriori primitive alla programmazione dei sistemi e aspira a diventare un superset Python nel tempo. Per iniziare a programmare con Mojo, usa il compilatore Mojo per eseguire un programma Mojo dal terminale nello stesso modo in cui lo fa Python.
Il linguaggio è attualmente in fase di sviluppo ed è rivolto a sviluppatori con esperienza nella programmazione di sistemi.
Incartare
Mojo è considerato un superset di Python. E ha il potenziale per rivoluzionare la programmazione combinando la semplicità di Python con le prestazioni di C++ e Rust.
Può sfruttare il pieno Libreria Python ecosistema, consentendo agli sviluppatori di creare librerie ad alte prestazioni senza la necessità di C, C++, Rust o CUDA.
Consente la produzione di codice portabile grazie alle sue funzionalità di autotuning e meta-programmazione in fase di compilazione.
Sebbene sia ancora un lavoro in corso, ha il potenziale per diventare un formidabile strumento di programmazione e trasformare l'industria della programmazione. Quindi, dovremmo rimanere sintonizzati per i futuri sviluppi di Modular!
Chris Santos
Pensi che una persona con una conoscenza da base a intermedia sarebbe in grado di iniziare i propri studi in questa nuova lingua? Oppure consigli di studiare prima un linguaggio più basilare, come Javascript o Python?
Ilke Candan Bengi
Ciao Chris, scusa per il ritardo nella risposta! Credo che avere una conoscenza/esperienza di base di Python in anticipo potrebbe essere utile prima di iniziare con Mojo.