Heb je ooit de wens gehad om snellere en efficiëntere apps te bouwen, maar heb je ontdekt dat standaard programmeertalen niet aan je eisen kunnen voldoen?
Dit is wanneer Mojo-taal in het spel komt.
Mojo is een nieuwe programmeertaal ontwikkeld door modulair, een bedrijf dat gespecialiseerd is in AI-infrastructuur.
Het is met name ontworpen om ontwikkelaars in staat te stellen snellere en robuustere apps te bouwen voor verschillende gebruiksscenario's, waaronder AI-ontwikkeling. In dit bericht zullen we kijken naar wat Mojo is, hoe het werkt en waarom u het bij uw volgende project zou moeten gebruiken.
De oorsprong van Mojo
De makers van Mojo zagen in dat er behoefte was aan een programmeertaal die de bruikbaarheid van Python combineerde met de snelheid en efficiëntie van C.
En ze hebben een taal ontwikkeld waarmee ontwikkelaars krachtige apps kunnen bouwen zonder standaard hardwarebeschrijvingstalen te hoeven leren.
Als resultaat creëerden ze Mojo, dat bedoeld is om volledig compatibel te zijn met het Python-ecosysteem en tegelijkertijd snelheid op C-niveau te bieden.
Modulair: de organisatie achter Mojo Language
Dus, wie zijn de makers van deze futuristische taal?
Modular is een wereldwijd toonaangevende startup op het gebied van AI-infrastructuur, opgericht door Chris Lattner en Tim Davis, die elkaar ontmoetten bij Google en zich realiseerden dat een te gecompliceerde en gefragmenteerde infrastructuur de wereldwijde invloed van AI beperkte.
Het doel van Modular is om de AI-infrastructuur te heroverwegen om de mensheid te verbeteren. Hun cultuur en principes stellen klanten, hoogwaardige productiesoftware en het leveren van zinvolle resultaten hoog in het vaandel
De doelen van Mojo
Mojo is ontworpen om een uniek programmeermodel te bieden voor machine learning-versnellers.
Modular stelde vast dat Mojo algemene programmering zou moeten toestaan, omdat de huidige CPU's tensoren en andere AI-versnellers hebben. Bovendien, omdat Python veel wordt gebruikt in machine learning en andere gebieden, heeft Modular ervoor gekozen om zich aan te sluiten bij het Python-ecosysteem.
Het gebruik van Python vereenvoudigt het ontwerp van de taal verder. Omdat het grootste deel van de syntaxis al was bepaald, kon het bedrijf zich in plaats daarvan concentreren op het bouwen van het compilatiemechanisme en het leveren van gespecialiseerde programmeermogelijkheden.
Belangrijke functies om te overwegen
programmeerbaarheid
Progressieve typen
De progressive types-functie van Mojo Language stelt ontwikkelaars in staat om type-annotaties te gebruiken efficiëntie verbeteren en foutcontroles.
Ontwikkelaars kunnen effectievere code ontwerpen die fouten tijdens het compileren detecteert, bugs elimineert en de efficiëntie verbetert door meer grondige type-informatie te verstrekken.
Nul kosten abstracties
Ontwikkelaars kunnen de controle over de opslag overnemen door gegevens inline toe te wijzen aan structuren dankzij de kosteloze abstracties die worden geboden door de Mojo-taal.
Door de vereiste voor extra geheugentoewijzingen weg te nemen, verbetert deze functie de code-efficiëntie en verlaagt de hoeveelheid boilerplate-code.
Geïntegreerde automatische taalafstemming
De taal-geïntegreerde auto-tuning-functionaliteit in Mojo Language stelt ontwikkelaars in staat om automatisch de ideale waarden van de parameters te bepalen om te profiteren van de doelhardware.
Met deze functionaliteit is het eenvoudiger om code te optimaliseren zonder deze voor elke hardwarecombinatie handmatig aan te passen.
Mojo Language is een flexibele en effectieve tool voor AI-ontwikkeling, omdat het ook de volledige kracht van MLIR (Multi-Level Intermediate Representation), een parallelle heterogene runtime en snelle bouwtijden biedt.
Parallellisatie
Mojo maakt gebruik van MLIR, waarmee programmeurs vectoren, threads en hardware-eenheden voor AI kunnen gebruiken voor parallellisatie. Mojo ondersteunt parallelle verwerking over verschillende kernen, in tegenstelling tot Python's single-threaded uitvoering.
Met een versnelling van 35,000x ten opzichte van Python verslaat Mojo andere talen qua snelheid.
Interoperabiliteit
Interoperabiliteit met het hele Python-ecosysteem is een van de unieke voordelen van Mojo. Dit houdt in dat u Mojo kunt combineren met willekeurige bibliotheken, zoals Numpy en Matplotlib, evenals met uw op maat gemaakte code.
U kunt bijvoorbeeld gegevens in uw Mojo-code visualiseren met behulp van de Python-bibliotheek Matplotlib.
rekbaarheid
Mojo is ook vrij flexibel, waardoor gebruikers eenvoudig voor- en nabewerkingsstappen aan modellen kunnen toevoegen of bestaande stappen kunnen vervangen door nieuwe.
Om hun modellen en de modulaire stapel te verbeteren, kunnen ontwikkelaars kernelfusie, herschrijven van grafieken, vormfuncties en andere technieken gebruiken.
Waarom zou je het verkiezen boven Python?
Python is een populaire AI-ontwikkeltaal vanwege zijn flexibiliteit en krachtige gecompileerde bibliotheken. Het is echter aanzienlijk langzamer dan talen zoals C++.
Daarom leren programmeurs Python-wrappers rond snellere talen te gebruiken om het gebruik van Python voor prestatiekritieke gebieden te vermijden.
Dit leidt tot het tweetalige probleem, waarbij modellen moeten worden getransformeerd van Python naar een snellere implementatie, zoals ONNX of torch-script, die niet alle mogelijkheden van Python ondersteunt. Python heeft ook prestatieproblemen en een gebrek aan goede parallelle verwerking.
Zelfs ervaren programmeurs vinden het moeilijk om prestatieproblemen te bestuderen, te debuggen en aan te pakken vanwege het tweetalige dilemma.
Er zijn ook basisbeperkingen voor wat Python kan doen vanwege de manier waarop de taal is gestructureerd. Hoewel de real-world implementatie van algoritmen die gebruikmaken van basiscomponenten eenvoudig lijkt, is het aanzienlijk moeilijker en vereist het gebruik van een snellere taal.
Hoe te beginnen?
Je kunt Mojo Language nu meteen gaan gebruiken in hun Playground om aan de slag te gaan. De op JupyterHub gebaseerde Playground geeft lessen en de mogelijkheid om je eigen Mojo-code te maken, ook al is Mojo nog in ontwikkeling.
U kunt zich registreren voor toegang op hun website om toegang te krijgen tot de Playground.
Om zijn prestatiedoelen te bereiken, gebruikt Mojo de volgende generatie compilertechnologieën met geïntegreerde caching-, multithreading- en clouddistributietechnologieën.
Het voegt extra primitieven toe aan systeemprogrammering en streeft ernaar om in de loop van de tijd een Python-superset te worden. Om te beginnen met coderen met Mojo, gebruikt u de Mojo-compiler om een Mojo-programma vanaf de terminal uit te voeren op dezelfde manier als Python.
De taal is momenteel in ontwikkeling en is gericht op ontwikkelaars met ervaring in systeemprogrammering.
verpakken
Mojo wordt beschouwd als een Python-superset. En het heeft het potentieel om de programmering radicaal te veranderen door de eenvoud van Python te combineren met de prestaties van C++ en Rust.
Het kan ten volle profiteren Python-bibliotheek ecosysteem, waardoor ontwikkelaars krachtige bibliotheken kunnen maken zonder dat C, C++, Rust of CUDA nodig zijn.
Het maakt de productie van draagbare code mogelijk dankzij de functies voor automatische afstemming en metaprogrammering tijdens het compileren.
Hoewel er nog steeds aan wordt gewerkt, heeft het de potentie om een formidabele programmeertool te worden en de programmeerindustrie te transformeren. We moeten dus op de hoogte blijven van toekomstige ontwikkelingen van Modular!
Chris Santos
Denk je dat een persoon met basis- tot gemiddelde kennis in staat zou zijn om zijn studie in deze nieuwe taal te beginnen? Of raad je aan om eerst een meer basale taal te bestuderen, zoals Javascript of Python?
Ilke Candan Bengi
Hallo Chris, sorry voor de late reactie! Ik geloof dat het nuttig kan zijn om vooraf een basiskennis/ervaring van Python te hebben voordat je met Mojo begint.