4min

Tags in dit artikel

,

Programmeertaal Julia heeft recent na zes jaar ontwikkeling versie 1.0 afgeklopt. De taal wordt steeds populairder en heeft vandaag al 700 actieve opensourcedeelnemers, die in totaal 1.900 packages hebben geregistreerd. De taal combineert eenvoudig te schrijven code die ook efficiënt is voor computers om te draaien. Een zeldzame combinatie…

Rond 2010 startte MIT-professor Alan Edelman met zijn collega’s een ambitieus project onder de naam Julia. De nieuwe programmeertaal moest een oplossing bieden voor het klassieke ‘twee-talenprobleem’ waar heel wat ontwikkelaars mee worstelen wanneer ze een taal moeten kiezen. Ofwel is een taal handig voor mensen om mee te werken, ofwel draait ze efficiënt en krachtig op een computer. De combinatie van beide komt haast niet voor.

MIT-ontwikkeling

“In het verleden werd altijd aangenomen dat beide niet te combineren waren, een soort van natuur- of fysicawet. Alsof het onmogelijk was om gebruiksgemak en prestaties te combineren,” laat Edelman aan TechRepublic weten. Hij is vandaag verantwoordelijk voor het Julia Lab op MIT en werpt zich op als steward van de programmeertaal.

Edelman heeft nooit geloofd dat beide niet combineerbaar waren. Julia zag daarom het levenslicht en lanceerde met torenhoge ambities zes jaar geleden. De aankondiging in 2012 spreekt over een taal die de snelheid van C combineert met het gebruiksgemak van Python, de dynamiek van Ruby, de wiskundige kracht van MatLab en de statistische troeven van R.

 

Ofwel is een taal handig voor mensen om mee te werken, ofwel draait ze gemakkelijk op een computer. Beide combineren was een utopie.

 

Destijds was dat een straffe uitspraak, maar ondertussen heeft de taal 700 actieve opensourcemedewerkers, 1.900 geregistreerde packages en twee miljoen downloads. Het afgelopen jaar is het aantal downloads met 101 procent gestegen.

Twee-talenprobleem

Er is een belangrijke reden waarom Julia steeds populairder wordt. Het zorgt ervoor dat ontwikkelaars het twee-talenprobleem niet langer moeten aanpakken. Vandaag moeten heel wat organisaties prototypecode tikken met een ‘eenvoudige taal’, om daarna een team van programmeurs in te huren die de finale code kunnen vertalen naar een snelle programmeertaal.

Zo’n aanpak betekent dat een project van dagen of weken ineens maanden of jaren kan duren. Als dezelfde persoon van het team een prototype kan maken en het tegelijk kan uitrollen, zijn de ontwikkelcycli veel sneller. Julia is opgebouwd als een algemene programmeertaal, maar het heeft zijn wortels in big data analytics, high-performance computing en in simulaties voor wetenschappelijke onderzoek.

Edelman gelooft dat de populariteit van Julia flink kan toenemen. Volgens hem hebben heel wat mensen gewacht op de lancering van versie 1.0 twee weken geleden. Deze versie brengt de nodige stabiliteit om dingen te bouwen. Na zes jaar is het klaar voor grootschalig gebruik met een basis waar niet meer aan geraakt wordt.

CPU & GPU

Naast een oplossing voor het twee-talenproblemen heeft Julia ingebouwde functies voor ontwikkelaars om workloads over meerdere CPU-kernen te spreiden. Dat kan over één processor gaan, maar evengoed over meerdere processors in een gedistribueerd systeem. Edelman wil in de nabije toekomst ook native ondersteuning toevoegen voor andere type processoren zoals GPU’s en TPU’s die worden gebruikt voor machine learning.

 

Julia heeft ingebouwde functies voor ontwikkelaars om workloads over meerdere CPU-kernen te spreiden.

 

“Vroeger moest je voor nieuwe architecturen een volledig nieuwe programmeeraanpak hanteren. Voor GPU’s bijvoorbeeld moest je Nvidia’s CUDA-taal leren en voor distributed parallel computing MPI. Ofwel moest je iets nieuws leren, ofwel moest je hopen op een library die bij je project paste,” zegt Edelman.

Julia werkt vandaag al aan de vereenvoudiging van TPU-integratie. Uiteindelijk moet het doel zijn om geen nieuwe talen te hoeven leren. Helaas is dat een werk van lange adem en heeft Julia vandaag nog geen oplossing voor alle architecturen.

Er komt echter steeds meer erkenning voor de programmeertaal. Het team achter Google Tensorflow heeft recent gezegd dat Julia een “geweldige programmeertaal is die zwaar investeert in machinelearningtechnieken”en “dezelfde waarden deelt als Tensorflow.”

Uitdagingen

Julia heeft recent een  programmeeruitdaging succesvol afgerond waar andere talen problemen mee hadden. Edelman omschrijft in een interview de uitdaging van een organisatie die machine learning wilde gebruiken voor de diagnose van tuberculose. Het enige wat de patiënt moest doen, was hoesten. Heel wat bestaande modellen konden tuberculose ontdekken op kleine schaal, tot er verschillende talen en bijhorende accenten als varianten werden geïntroduceerd.

Je zou elke taal of accent aan de machine kunnen voeden, maar uiteindelijk is de bedoeling om tuberculose te detecteren en niet het accent. Het probleem oplossen was lastig volgens Edelman in Python, zeker om daarna low-level in C++ te maken voor betere prestaties. Alle reguliere libraries konden het niet oplossen. Je moest het neuraal netwerk zo aanpassen op een manier die niet mogelijk is in standaard libraries. Die zijn vandaag zo log, dat je een behoorlijk straffe programmeur nodig hebt.

 

Met Julia worden de muren rondom bestaande libraries gesloopt en is er meer ruimte voor innovatie.

 

Met Julia is de aanpak high-level, waardoor het probleem stelselmatig en eenvoudig kon worden opgelost. Door de instapdrempel te verlagen, zorg je dat iedereen er opnieuw aan kan werken. Zo worden de muren rond bestaande libraries gesloopt en geeft het volgens Edelman meer ruimte aan innovatie.

Nooit klaar

Julia draagt nu versie 1.0, maar de taal heeft nog een lange weg af te leggen. Edelman werkt intensief aan belangrijke kerntools, waaronder debuggers, die vandaag nog wat essentiële functies missen. Het succes van de afgelopen jaren betekent wel dat het ecosysteem groeit. Vandaag zijn er al diverse plug-ins beschikbaar voor onder andere Visual Studio, Atom en VS Code.

Geen enkele programmeertaal is ooit helemaal af. Het team achter Julia heeft vele ambities die vandaag nog niet gerealiseerd zijn. “Er zijn nog zoveel dingen, we hebben nog veel dromen. We zijn nog lang niet klaar om de overwinning uit te roepen,” sluit Edelman af.