Mojo, noul limbaj de programare creat de Chris Lattner, creatorul LLVM

mojo lang

Mojo este un nou limbaj de programare care promite performanțe mai bune pentru dezvoltarea învățării automate

Cu câteva zile în urmă vestea a dat asta Chris Lattner, fondator și arhitect șef al LLVM și Tim Davis, fost șef al proiectelor AI la Google a lansat „Mojo”, un nou limbaj de programare, bazat pe Python, care rezolvă problemele de implementare și performanță Python.

Se menționează că Mojo combină ușurința de utilizare pentru cercetare și dezvoltare și prototipare rapidă cu adecvare pentru produse finale de înaltă performanță. Primul se realizează prin utilizarea sintaxei familiare a limbajului Python, iar cel de-al doilea se datorează capacității de a compila în codul mașinii, mecanismelor pentru gestionarea în siguranță a memoriei și utilizarea instrumentelor pentru accelerarea hardware a calculelor. .

Despre Mojo

Acest nou limbaj de programare se concentrează pe utilizarea pentru dezvoltarea învățării automate, dar dae prezentat ca un limbaj de uz general care extinde capacitățile limbajului Python cu programarea sistemelor și este potrivit pentru o gamă largă de sarcini.

De exemplu, limbajul este aplicabil în domenii precum calculul de înaltă performanță, procesarea datelor și transformarea datelor. O caracteristică interesantă a Mojo este capacitatea de a specifica simbolul emoji „🔥” ca extensie pentru fișierele de cod.

Proiectul este conceput pentru a implica resurse hardware a sistemelor disponibile în sistem în calcule. De exemplu, GPU-urile, acceleratoarele specializate de învățare automată și instrucțiunile de procesare vectorială (SIMD) pot fi utilizate pentru a rula aplicații Mojo și a paraleliza calculele.

Motivul dezvoltării unui subset separat al limbajului Python, mai degrabă decât alăturarea lucrărilor de optimizare CPython existente, este citat ca:

O abordare de construcție, integrarea capacităților de programare ale sistemului și utilizarea unei arhitecturi interne fundamental diferite, care permite executarea codului pe GPU-uri și diverse acceleratoare hardware. În același timp, dezvoltatorii Mojo intenționează să rămână cât mai mult posibil pe suportul CPython.

Mojo poate fi folosit atât în ​​modul de interpretare JIT, cât și pentru compilare în fișiere executabile (AOT, înainte de timp). Compilatorul are încorporate tehnologii moderne pentru auto-optimizare, stocare în cache și compilare distribuită.

Codul codul sursă în limbajul Mojo este convertit în cod intermediar de nivel scăzut MLIR (Multi-Level Intermediate Representation), dezvoltat de proiectul LLVM și care oferă funcții suplimentare pentru optimizarea procesării graficelor fluxului de date.

Utilizarea unor mecanisme hardware suplimentare pentru a accelera calculele vă permite să obțineți performanțe care, cu calcule intensive, depășesc aplicațiile C/C++.

Chris lattner este responsabil pentru crearea multor proiecte pe care ne bazăm cu toții astăzi, chiar dacă poate că nici nu am auzit de tot ce a construit el! Ca parte a tezei sale de doctorat, el a început dezvoltarea LLVM, care a schimbat fundamental modul în care sunt construite compilatoarele și astăzi formează baza multor dintre cele mai utilizate ecosisteme lingvistice din lume.

Apoi a lansat Clang, un compilator C și C++ care se află pe partea superioară a LLVM și este folosit de majoritatea dezvoltatorilor de software de top din lume (inclusiv furnizarea de coloana vertebrală pentru codul critic de performanță). 

La evaluarea performanței în domeniul depanării învățării automate, stiva Modular Inference Engine AI scrisă în limbajul Mojo, în comparație cu o soluție bazată pe biblioteca TensorFlow, s-a dovedit a fi de 3 ori mai rapidă pe un sistem cu procesor Intel.

Cu toate acestea, Chris a văzut că C și C++ nu profitau din plin de puterea LLVM, așa că în timp ce lucra la Apple a proiectat un nou limbaj, numit „Swift”, pe care îl descrie drept „zahăr de sintaxă pentru LLVM”. 

Merită menționat faptul că limba acceptă tastarea statică și funcțiile sigure de memorie de nivel scăzut care amintesc de caracteristicile Rust, cum ar fi urmărirea vieții de referință și împrumutul variabil (verificator de împrumut).

Pe lângă mijloacele pentru operarea în siguranță cu pointeri, limbajul oferă, de asemenea, funcții pentru lucru la nivel scăzut, de exemplu, este posibil să accesați direct memoria în modul nesigur folosind tipul de pointer, să apelați instrucțiuni individuale SIMD sau să accesați extensii hardware precum TensorCores și AMX.

În prezent, limbajul este în curs de dezvoltare intensivă si este oferita doar interfata online pentru a încerca. Promisiunile viitoare sunt lansarea de versiuni separate pentru a rula pe sistemele locale mai târziu, după primirea feedback-ului despre activitatea mediului web interactiv.

Codul open source al compilatorului, JIT și alte dezvoltări legate de proiect sunt planificate după finalizarea designului arhitecturii interne (modelul de dezvoltare pentru un prototip de lucru cu ușile închise seamănă cu stadiul incipient de dezvoltare a LLVM, Clang și Swift).

Deoarece sintaxa lui Mojo se bazează pe Python, iar sistemul de tipări este aproape de C/C++, există planuri în viitor pentru a dezvolta un set de instrumente care să faciliteze traducerea proiectelor existente scrise în C/C++ și Python în Mojo. ca să dezvolte proiecte hibride care combină codul Python și Mojo.

În cele din urmă, dacă sunteți interesat să aflați mai multe despre aceasta, puteți consulta detaliile În următorul link.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: AB Internet Networks 2008 SL
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Jaime el a spus

    interesant cairnul asta.... (fara accente)