Este Mojo cel mai bun limbaj pentru dezvoltarea AI?

Pentru învățarea automată și inteligența artificială, Python a părut întotdeauna a fi limbajul de programare dominant, cu biblioteci puternice precum NumPy, TensorFlow și PyTorch. Dar o verificare rapidă a paginilor GitHub ale acestor biblioteci vă va arăta că o mare parte din codul lor sursă este scris în C și C++.

Acest lucru se datorează faptului că Python este prea lent pentru AI. Mojo este un nou limbaj de programare care încearcă să combine viteza C/C++ cu eleganța lui Python.

Mojo: O privire de ansamblu

Mojo este un nou limbaj de programare care este similar sintactic cu Python, dar are viteza lui C. Este destinat în primul rând inteligenței artificiale și dezvoltării sistemelor, ambele fiind domenii care necesită software de înaltă performanță.

Utilizează paradigma SIMD – Instrucție unică, date multiple pentru a profita de paralelism. De asemenea, este compilat just-in-time și este eficient din punct de vedere al memoriei.

Mojo, totuși, nu este o limbă complet nouă; este un superset de Python. Aceasta înseamnă că este Python plus funcții suplimentare. Similar cu modul în care TypeScript extinde JavaScript. Acest lucru este bun pentru că, dacă cunoașteți deja Python, nu ar trebui să fie prea greu să luați Mojo.

Mojo este dezvoltat de Modular, o companie fondată de Chris Lattner – creatorul LLVM și al limbajului de programare Swift.

În concluzie, Mojo este un nou limbaj de programare conceput pentru a fi similar sintactic cu Python, dar la fel de rapid ca C/C++. Este menit să fie utilizat în dezvoltarea AI și programarea sistemelor. Deși proiectul nu este complet, este incredibil de promițător, iar în secțiunea următoare vom discuta de ce.

Caracteristicile Mojo față de alte limbaje de programare

Mojo a devenit incredibil de popular, chiar dacă nu este încă disponibil public. Acest lucru se datorează faptului că are mai multe avantaje semnificative față de alte limbaje de programare atunci când se realizează Machine Learning și se construiește software la nivel de sistem. În această secțiune, vom discuta despre aceste avantaje.

#1. Suport nativ pentru AI și sarcini de învățare automată

Mojo este destinat dezvoltării aplicațiilor de inteligență artificială. Ca rezultat, vine cu funcții și module în biblioteca standard pentru construirea rețelelor neuronale, efectuarea vederii computerizate și pregătirea datelor.

  Acest motor de căutare poate găsi orice benzi desenate Calvin & Hobbes pe baza unui cuvânt cheie

Majoritatea limbajelor de uz general, cum ar fi Python, ar necesita biblioteci suplimentare pentru a realiza acest lucru, dar Mojo o acceptă imediat.

#2. Sintaxă simplificată și abstracții la nivel înalt

Pentru a scrie software rapid și eficient, în mod normal ar trebui să folosim limbaje precum C, C++ și Rust. Deși aceste limbi sunt rapide, sunt mai dificil de învățat și de lucrat. Acest lucru se datorează faptului că te obligă să lucrezi la un nivel scăzut, astfel încât să ai mai mult control.

Cu toate acestea, Mojo oferă în continuare abstracții de nivel superior, cum ar fi Python și sintaxă simplă. Acest lucru face mai ușor de lucrat decât alte limbi comparabile ca performanță.

#3. Integrare cu cadre și biblioteci AI populare

După cum am menționat mai devreme, Mojo nu este un limbaj complet nou – este un superset al Python. Ca rezultat, se integrează bine cu bibliotecile existente, cum ar fi NumPy și PyTorch. Aceasta înseamnă că, implicit, Mojo are un ecosistem la fel de mare ca al lui Python.

#4. Capacități eficiente de manipulare și manipulare a datelor

Mojo este conceput pentru a manipula mai multe valori eficient în paralel. Acest lucru este cel mai util atunci când efectuați algebrei liniare, pe care învățarea automată se bazează atât de mult. Mojo este, de asemenea, compilat just-in-time, astfel încât bytecode este optimizat pentru viteză. Acest lucru face ca lucrul cu date și învățarea automată să fie eficientă în Mojo.

#5. Scalabilitate și suport pentru calcul paralel

Așa cum am menționat mai devreme, Mojo este construit pentru a sprijini paradigma de calcul paralel cu instrucțiune unică – date multiple. Acesta este încorporat în Mojo și îl face mai rapid din cutie. De asemenea, depășește bibliotecile Python, cum ar fi NumPy.

Elementele cheie ale Mojo

În această secțiune, vom discuta despre cum să scrieți programe în Mojo. Deoarece Mojo este menit să fie un superset de Python, la fel cum TypeScript este un superset de JavaScript, tot codul Python valid este cod Mojo valid, dar nu tot codul Mojo este cod Python valid.

Mojo este încă o lucrare în desfășurare, iar unele caracteristici ale limbajului Python nu sunt încă acceptate – de exemplu, cursurile. În plus, un compilator nu este încă disponibil, dar puteți folosi Mojo într-un caiet de joacă. Cu toate acestea, veți avea nevoie mai întâi de un cont, pe care îl puteți crea pe site-ul lor.

  Cele mai bune 10 prize inteligente pentru casa ta inteligentă

În acest moment, este greu să oferi un tutorial cuprinzător despre limbă, deoarece unele caracteristici nu au fost încă adăugate și nu toate lucrurile sunt în prezent acceptate. În schimb, vom discuta câteva completări cheie pe care Mojo le adaugă peste ceea ce are deja Python.

Sintaxă și gramatică

Deoarece Mojo este un superset al lui Python, sintaxele lor sunt identice. Ca și Python, un program este format din declarații. Aceste instrucțiuni pot fi grupate în blocuri sub funcții, bucle sau condiționale. Declarațiile din interiorul unui bloc sunt indentate. Iată un exemplu de program scris în Mojo:

def odd_or_even():
     for i in range(1, 101):
        if i % 2 == 0:
            print("Even")
        else:
            print("Odd")

odd_or_even()

Acesta este perfect identic cu un program Python. Cu toate acestea, Mojo oferă caracteristici suplimentare pe care le veți vedea în secțiunile care urmează.

Declarații de variabile

Cu Mojo, aveți două moduri suplimentare de a declara variabile. Puteți folosi fie cuvântul cheie let, fie var. Cuvântul cheie let declară o variabilă imuabilă. Odată inițializat, nu-i puteți reatribui valoarea altora. Pe de altă parte, variabilele declarate folosind var pot fi reatribuite deoarece sunt mutabile.

Principalul avantaj al variabilelor declarate folosind let sau var este că acceptă specificatorii de tip. Următorul exemplu ilustrează modul în care variabilele sunt declarate în Mojo.

let pi: Float64 = 3.141
var greeting = "Hello, World"

# This would be impossible
# pi = 6.283

# But this is possible
greeting = "Ola"

print(pi, greeting)

Structuri

În plus, față de un mod diferit de declarare a variabilelor, Mojo acceptă structuri. O modalitate simplă de a vizualiza structurile este ca acestea să fie ca clase, cu excepția celor mai rigide. Spre deosebire de clase, nu puteți adăuga/elimina sau modifica metode în timpul rulării și toți membrii trebuie să fie declarați folosind cuvintele cheie var sau let. Această structură mai rigidă îi permite lui Mojo să gestioneze mai eficient memoria și performanța. Iată un exemplu de struct:

struct Person:
    var name: StringLiteral
    var age: Int32
    
    fn __init__(inout self, name: StringLiteral, age: Int32):
        self.name = name
        self.age = age


john = Person("John Doe", 32)
print(john.name, john.age)

Funcții

Din structura de mai sus, este posibil să fi observat că am declarat metoda __init__ folosind cuvântul cheie fn în loc de def. Acest lucru se datorează faptului că, în Mojo, puteți declara funcții folosind fn și def. O funcție declarată folosind fn este mai strictă în comparație cu omologul său def.

Mai exact, o funcție declarată folosind fn are argumentele imuabile implicit. În plus, vi se cere să specificați tipul de date al argumentelor și valoarea returnată a funcției. Toate variabilele locale trebuie declarate înainte de utilizare.

fn say_hello(name: StringLiteral):
    print("Hello,", name)
    
# This would be invalid
# fn say_hello(name):
#     print("Hello,", name)

say_hello("John")

Dacă funcția generează o excepție, aceasta trebuie specificată în mod explicit atunci când funcția este declarată folosind cuvântul cheie raises. În plus, Mojo nu folosește clasa Exception așa cum o face Python, ci folosește clasa Error.

fn will_raise_error() raises:
    raise Error('Some error')
    
will_raise_error()

Supraîncărcare

Mojo acceptă, de asemenea, supraîncărcarea operatorilor pe baza diferitelor tipuri de date. Aceasta susține principiul orientat pe obiect al polimorfismului.

fn add_numbers(a: Int32, b: Int32) -> Int32:
    return a + b

fn add_numbers(a: Int32, b: Int32, c: Int32) -> Int32:
    return a + b + c

let first_total = add_numbers(2, 3)
let second_total = add_numbers(1, 2, 3)

print(first_total, second_total)

Cum este utilizat Mojo în dezvoltarea AI

Mojo vine cu biblioteci pentru construirea modelelor de învățare automată. Acestea includ biblioteci pentru construirea de rețele neuronale. În plus, puteți efectua și sarcini precum Procesarea limbajului natural și Viziunea pe computer.

  Mai mare înseamnă cu adevărat mai bine?

Deși limbajul în sine nu a fost încă finalizat, iar ecosistemul său este practic inexistent, ne putem aștepta totuși ca Mojo să aducă multe funcții pentru a îndeplini sarcini precum procesarea datelor, crearea modelului, optimizarea, managementul modelului și monitorizarea.

Este Mojo viitorul dezvoltării AI

Este greu de prezis modul în care tehnologia va evolua și va fi adoptată. Majoritatea predicțiilor sunt greșite, dar asta nu înseamnă că nu putem încerca. Pentru a prezice dacă Mojo va înlocui probabil Python, să luăm în considerare beneficiile și dezavantajele/limitările lui Mojo:

Beneficii

  • Este foarte rapid și construit pentru a profita de paralelism fără a face mare lucru, ceea ce este esențial pentru învățarea automată, deoarece modelele de antrenament pot dura mult timp.
  • Este un superset de Python, prin urmare, mai ușor de învățat și are o curbă de învățare mai blândă. Acest lucru reduce frecarea pentru adoptare.
  • Reduce șansele de a obține erori în producție, deoarece erori precum numele variabilelor scrise greșit sau nepotrivirile de tip sunt detectate în timpul compilării. Acest lucru îl face de preferat.

Dezavantaje

  • Momentan este incomplet. Dar, desigur, echipa de la Modular lucrează la lansarea limbii și a traducătorului acesteia.
  • Oricât de mult simplifică munca producătorilor de cadre, s-ar putea să nu prezinte un mare avantaj consumatorilor de cadre, deoarece aceștia folosesc deja cadre de învățare automată în Python.
  • Nu are încă un ecosistem mare de instrumente și resurse de învățare. Deși puteți folosi bibliotecile Python în Mojo, puteți utiliza în continuare bibliotecile Python în Python. Pentru ca Mojo să aibă orice avantaj față de Python, are nevoie de biblioteci care să poarte viteza lui Mojo.

Cuvinte finale

Dacă hype-ul actual este ceva de urmat, Mojo este probabil să devină un limbaj AI popular. Cred că doar viteza sa este suficientă pentru a încuraja oamenii să treacă. Simplitatea sa este un plus. Dar, așa cum TypeScript nu a înlocuit complet JavaScript, este probabil ca Mojo să nu înlocuiască complet Python.

Mojo este cu siguranță o limbă pe care trebuie să-l păstrați pe radar atunci când se maturizează în cele din urmă.

Apoi, verificați Tip vs. Interfață în TypeScript.