{"id":108413,"date":"2023-05-08T12:48:42","date_gmt":"2023-05-08T10:48:43","guid":{"rendered":"https:\/\/prohoster.info\/?p=108413"},"modified":"2023-05-08T16:10:08","modified_gmt":"2023-05-08T14:10:08","slug":"sozdatel-llvm-razvivaet-novyj-yazyk-programmirovaniya-mojo","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/news\/sozdatel-llvm-razvivaet-novyj-yazyk-programmirovaniya-mojo","title":{"rendered":"Il creatore di LLVM sviluppa un nuovo linguaggio di programmazione Mojo","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Chris Lattner, fondatore e principale architetto di LLVM, nonch\u00e9 creatore del linguaggio di programmazione Swift, e Tim Davis, ex responsabile dei progetti AI di Google come TensorFlow e JAX, hanno presentato un nuovo linguaggio di programmazione Mojo, che unisce la semplicit\u00e0 d'uso per le ricerche e la rapida prototipazione con la capacit\u00e0 di formare prodotti finali ad alte prestazioni. Questo primo aspetto \u00e8 raggiunto grazie all'uso di una sintassi simile a quella del linguaggio Python, mentre il secondo grazie alla possibilit\u00e0 di compilare in codice macchina, meccanismi di gestione della memoria sicura e all'uso di strumenti per l'accelerazione hardware dei calcoli.    <\/p>\n<p>Il progetto \u00e8 focalizzato sull'uso per lo sviluppo nel campo dell'apprendimento automatico, ma si presenta come un linguaggio di programmazione generale che estende le capacit\u00e0 del linguaggio Python tramite strumenti di programmazione di sistema e si adatta a una vasta gamma di compiti. Ad esempio, il linguaggio \u00e8 applicabile a settori come il calcolo ad alte prestazioni, l'elaborazione e la trasformazione dei dati. Un'interessante caratteristica di Mojo \u00e8 la possibilit\u00e0 di utilizzare l'emoji &#171;&#128293;&#187; come estensione per i file di codice (ad esempio, &#171;helloworld.&#128293;&#187;), oltre all'estensione testuale &#171;.mojo&#187;.       <\/p>\n<p>Attualmente, il linguaggio \u00e8 in fase di intenso sviluppo e per il testing \u00e8 disponibile solo un'interfaccia online. Sono promesse assemblee autonome per l'esecuzione su sistemi locali in seguito, dopo aver ricevuto feedback sull'ambiente web interattivo. Il codice sorgente del compilatore, JIT e altri lavori collegati al progetto saranno resi disponibili dopo il completamento della progettazione dell'architettura interna (il modello di sviluppo di un prototipo operativo a porte chiuse ricorda le prime fasi di sviluppo di LLVM, Clang e Swift). Poich\u00e9 la sintassi di Mojo si basa sul linguaggio Python e il sistema di tipi \u00e8 simile a C\/C++, in futuro si prevede di sviluppare strumenti per semplificare la traduzione di progetti esistenti scritti in C\/C++ e Python in Mojo, cos\u00ec come per lo sviluppo di progetti ibridi che combinano codice in Python e Mojo.        <\/p>\n<p>Il progetto \u00e8 progettato per sfruttare le risorse hardware disponibili nel sistema di sistemi eterogenei per l'esecuzione di calcoli. Ad esempio, per l'esecuzione di applicazioni nel linguaggio Mojo e la parallelizzazione dei calcoli possono essere impiegati GPU, acceleratori specializzati per il machine learning e istruzioni per processori vettoriali (SIMD). Come motivo per lo sviluppo di un sottoinsieme separato del linguaggio Python, invece di ottimizzare l'esistente CPython, viene citata l'orientamento verso la compilazione, l'integrazione delle funzionalit\u00e0 di programmazione di sistema e l'adozione di un'architettura interna fondamentalmente diversa, che consente l'esecuzione del codice su GPU e vari acceleratori hardware. Nel frattempo, gli sviluppatori di Mojo intendono seguire, per quanto possibile, la compatibilit\u00e0 con CPython.            <\/p>\n<p>Mojo pu\u00f2 essere utilizzato sia in modalit\u00e0 interpretativa con JIT sia per la compilazione in file eseguibili (AOT, ahead-of-time). Il compilatore incorpora tecnologie moderne di ottimizzazione automatica, caching e compilazione distribuita. I codici sorgente nel linguaggio Mojo vengono trasformati in codice intermedio a basso livello MLIR (Multi-Level Intermediate Representation), sviluppato dal progetto LLVM, che offre ulteriori opportunit\u00e0 di ottimizzazione nella gestione del grafo del flusso di dati. Il compilatore consente di utilizzare diversi backend che supportano MLIR per la generazione di codice macchina.        <\/p>\n<p>L'uso di meccanismi hardware aggiuntivi per accelerare i calcoli consente di raggiungere prestazioni che, durante calcoli intensivi, superano le applicazioni in C\/C++. Ad esempio, nei test di un'applicazione per la generazione di insiemi di Mandelbrot, l'applicazione compilata nel linguaggio Mojo, eseguita nel cloud AWS (r7iz.metal-16xl), \u00e8 risultata sei volte pi\u00f9 veloce dell'implementazione in C++ (0,03 sec. contro 0,20 sec.), oltre a essere 35.000 volte pi\u00f9 veloce dell'applicazione in Python utilizzando il normale CPython 3.10.9 (0,03 sec. contro 1027 sec.) e 1500 volte pi\u00f9 veloce con PYPY (0,03 sec. contro 46,1 sec.).    <\/p>\n<p>Nella valutazione delle prestazioni nella risoluzione di problemi di apprendimento automatico, l'AI-stack Modular Inference Engine, scritto in Mojo, si \u00e8 rivelato tre volte pi\u00f9 veloce rispetto a una soluzione basata sulla libreria TensorFlow su un sistema con processore Intel nel trattamento di un modello linguistico, sei volte e mezze per l'esecuzione di un modello di raccomandazione e due volte e un decimo pi\u00f9 veloce nel lavoro con modelli per l'elaborazione delle informazioni visive. Utilizzando processori AMD, il vantaggio con Mojo \u00e8 stato di 3.2, 5 e 2.2 volte, mentre con i processori ARM &#8212; 5.3, 7.5 e 1.7 volte, rispettivamente. La soluzione basata su PyTorch \u00e8 risultata inferiore a Mojo di 1.4, 1.1 e 1.5 volte su CPU Intel, di 2.1, 1.2 e 1.5 volte su CPU AMD e di 4, 4.3 e 1.3 volte su CPU ARM.      <center><img decoding=\"async\" alt=\"Il creatore di LLVM sviluppa un nuovo linguaggio di programmazione Mojo\" src=\"\/wp-content\/uploads\/2023\/05\/df2598980ce4ed179ec3042d500235db.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>          <\/p>\n<p>Il linguaggio supporta la tipizzazione statica e strumenti per il lavoro sicuro a basso livello con la memoria, simili alle capacit\u00e0 del linguaggio Rust, come il tracciamento del ciclo di vita dei riferimenti e la verifica del prestito delle variabili (borrow checker). Oltre agli strumenti per un lavoro sicuro con i puntatori, il linguaggio offre anche possibilit\u00e0 per operazioni a basso livello, come l'accesso diretto alla memoria in modalit\u00e0 unsafe utilizzando il tipo Pointer, la chiamata a istruzioni SIMD specifiche o l'accesso a estensioni hardware come TensorCores e AMX.    <center><img decoding=\"async\" alt=\"Il creatore di LLVM sviluppa un nuovo linguaggio di programmazione Mojo\" src=\"\/wp-content\/uploads\/2023\/05\/000b92c5bbb54eec64649b30a434be6d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Per semplificare la separazione del codice Python classico e ottimizzato per funzioni con esplicita definizione dei tipi per tutte le variabili, \u00e8 stato proposto l'uso di una parola chiave separata &#171;fn&#187; invece di &#171;def&#187;. Analogamente per le classi, laddove sia necessaria una confezione statica dei dati in memoria al momento della compilazione (come in C), si pu\u00f2 utilizzare il tipo &#171;struct&#187; invece di &#171;class&#187;. \u00c8 anche possibile effettuare un semplice import di moduli nei linguaggi C\/C++, ad esempio, per importare la funzione cos dalla libreria math si pu\u00f2 specificare &#171;from &#171;math.h&#187; import cos&#187;.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=59094\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u0440\u0438\u0441 \u041b\u0430\u0442\u043d\u0435\u0440 (Chris Lattner), \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 LLVM, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Swift, \u0438 \u0422\u0438\u043c \u0414\u044d\u0432\u0438\u0441 (Tim Davis), \u0431\u044b\u0432\u0448\u0438\u0439 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c AI-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 Google, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Tensorflow \u0438 JAX, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Mojo, \u0441\u043e\u0447\u0435\u0442\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043e\u043a \u0438 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432 \u0441 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432. \u041f\u0435\u0440\u0432\u043e\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":108414,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-108413","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u0440\u0438\u0441 \u041b\u0430\u0442\u043d\u0435\u0440 (Chris Lattner), \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 LLVM, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Swift, \u0438 \u0422\u0438\u043c \u0414\u044d\u0432\u0438\u0441 (Tim Davis), \u0431\u044b\u0432\u0448\u0438\u0439 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c AI-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 Google, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Tensorflow \u0438 JAX.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/news\/sozdatel-llvm-razvivaet-novyj-yazyk-programmirovaniya-mojo\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c LLVM \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Mojo | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u0440\u0438\u0441 \u041b\u0430\u0442\u043d\u0435\u0440 (Chris Lattner), \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 LLVM, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Swift, \u0438 \u0422\u0438\u043c \u0414\u044d\u0432\u0438\u0441 (Tim Davis), \u0431\u044b\u0432\u0448\u0438\u0439 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c AI-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 Google, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Tensorflow \u0438 JAX.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/news\/sozdatel-llvm-razvivaet-novyj-yazyk-programmirovaniya-mojo\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2023-05-08T10:48:43+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2023-05-08T14:10:08+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Il creatore di LLVM sviluppa un nuovo linguaggio di programmazione Mojo | ProHoster","description":"Chris Lattner, fondatore e capo architetto di LLVM, nonch\u00e9 creatore del linguaggio di programmazione Swift, e Tim Davis, ex capo dei progetti AI di Google, come Tensorflow e JAX.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/news\/sozdatel-llvm-razvivaet-novyj-yazyk-programmirovaniya-mojo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c LLVM \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Mojo | ProHoster","og:description":"\u041a\u0440\u0438\u0441 \u041b\u0430\u0442\u043d\u0435\u0440 (Chris Lattner), \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 LLVM, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Swift, \u0438 \u0422\u0438\u043c \u0414\u044d\u0432\u0438\u0441 (Tim Davis), \u0431\u044b\u0432\u0448\u0438\u0439 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c AI-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 Google, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Tensorflow \u0438 JAX.","og:url":"https:\/\/prohoster.info\/it\/blog\/news\/sozdatel-llvm-razvivaet-novyj-yazyk-programmirovaniya-mojo","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2023-05-08T10:48:43+00:00","article:modified_time":"2023-05-08T14:10:08+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":[],"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/108413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=108413"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/108413\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/108414"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=108413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=108413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=108413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}