Programmeertalen vormen de kern van alle software. Ondanks de kracht en nauwkeurigheid die de toonaangevende talen ons geven, zoals Python, MATLAB en C, bestaan er bugs en tekortkomingen.
Julia is een universele programmeertaal met sterke doelen voor wetenschappelijk computergebruik, machine learning en datamining. Het wordt ook gebruikt voor numerieke analyse en computationele wetenschap. Julia werd in 2012 geïntroduceerd en belooft de beste aspecten van de momenteel meest gebruikte programmeertalen, zoals Python en C++, te gebruiken en hun nadelen te beperken. Omdat het een relatief nieuwe taal is, moet het volwassen worden en op dit moment gebruiken ongeveer 16.000 ontwikkelaars het – Python telt er miljoenen.
Waarom dit belangrijk is
Betere programmeertalen zijn essentieel voor het ontwikkelen van betere software die de uitdagingen van onze tijd kan helpen oplossen.
Later dit jaar zal Eindhoven gastheer zijn van ‘s werelds belangrijkste conferentie over deze taal, JuliaCon. Van 9 tot 13 juli komt de Julia-gemeenschap bijeen in de stad voor vijf dagen vol lezingen, keynotes en workshops over de taal. Het Philips Stadion is de locatie van de conferentie en trekt duizend bezoekers.
“Voor mij springen drie aspecten van Julia eruit. Het eerste is snelheid bij het oplossen van wiskundige problemen. Het ecosysteem rondom Julia is ook opmerkelijk, met domeinexperts die aan de verschillende problemen werken en code delen. Verder is Julia een open-source taal en is er een sterk samenwerkingsmechanisme rondom,” zegt Gareth Thomas. Hij is medeoprichter van het software consultancy bedrijf VersionBay en een van de vrijwilligers die JuliaCon organiseert.
Wat is een programmeertaal?
Een programmeertaal is een verzameling syntactische en semantische regels die een computer instrueren om zich op een bepaalde manier te gedragen en bepaalde taken uit te voeren. Daarom heeft elke taal zijn eigen woordenschat, een unieke set sleutelwoorden die een syntax volgt om computerinstructies te maken en uit te voeren.
Programmeertalen liggen aan de basis van alle software die we gebruiken. Talen als HTML, JavaScript en CSS worden vaak voor websites gebruilt, terwijl C++ en Python vaak de meest gebruikte opties zijn voor het coderen van complexere algoritmen en programma’s en het uitvoeren van uitgebreide gegevensanalyses.
Snelheid verbeteren
Ondanks het feit dat Python een van de meest gebruikte talen ter wereld is, staat het ook bekend om zijn traagheid. Volgens Jorge Vieyra, een ontwikkelingsingenieur bij ASML en ook lid van het organisatiecomité van JuliaCon, zijn er grootteordes verschil tussen code geschreven met Python en C. Python vertrouwt in feite op bibliotheken – verzamelingen code om taken te versnellen – die gecompileerd zijn met andere talen. “Soms, als je een bibliotheek wilt gebruiken en een andere wilt aanroepen, moet je door de internals van Python gaan (de broncode van de taalinterpreter, ed.) en het met hen verbinden. En dat is waar de bottleneck vandaan komt,” legt de ontwikkelingsingenieur uit.
Daarnaast zijn de meeste bibliotheken die gebruikt worden bij het coderen in Python domeinspecifiek, zoals cryptografie, machine learning of webapplicaties, en worden ze gecompileerd met andere talen. Julia biedt daarentegen pakketten voor elk domein dat in Julia is geschreven. Zo wordt de taal beter voor iedereen en kan er sneller gedeeld worden, wat betekent dat het coderingsproces sneller kan verlopen.
Thomas gebruikt een metafoor om dit aspect te verduidelijken. “Denk aan een Portugees en een Italiaan die goed met elkaar kunnen opschieten; het duurt langer om op één lijn te komen omdat ze niet dezelfde taal spreken. Maar als iedereen dezelfde taal spreekt, maakt dat iedereen superproductief.”
Een nieuwe benadering van machinaal leren
Een aspect waar Julia een verschil kan maken is in het zogenaamde fysisch geïnformeerde machinaal leren of wetenschappelijk machinaal leren. Traditioneel machinaal leren werkt door veel invoergegevens te geven aan algoritmen om deze te verwerken en correlaties te leveren; dit soort benadering ligt ten grondslag aan een model als OpenAI’s ChatGPT. Daarentegen komt wetenschappelijk machinaal leren met een andere aanpak, waarbij algoritmen worden gevoed met wetenschappelijke kennis en worden gebruikt om bijvoorbeeld complexe vergelijkingen op te lossen. “In principe voeden we het algoritme met kennis die we hebben en laten we machine learning passen wat er ontbreekt,” legt Vieyra uit.
Nadat we het algoritme een complexe berekening hebben gegeven, kan het de waarde van moeilijk te berekenen constanten kwantificeren en suggesties doen voor het oplossen van een bepaald probleem. “Dit brengt machine learning dichter bij hoe de echte wereld werkt. Julia is daartoe in staat door middel van multiprocessing, wat vergelijkbaar is met hoe wiskundigen denken,” voegt Thomas toe. Op een bepaalde manier brengt deze aanpak gezond verstand naar iets dat moeilijk te begrijpen is. Omdat alles in dezelfde taal is gecodeerd, is het mogelijk om berekeningen uit te voeren die met andere programmeertalen niet haalbaar zouden zijn.
Code die met Julia is gecompileerd, maakt al een verschil omdat er tal van toepassingen zijn. Voorbeelden variëren van bescherming van het elektriciteitsnet tot energiehandel. Over het algemeen is de taal goed in statistische analyse en modellering. Een andere interessante toepassing komt van Zipline, dat Julia gebruikt om de beste vliegtrajecten te vinden om medicijnen efficiënt af te leveren. De taal ligt ook aan de basis van verschillende ontwikkelingen in de farmaceutische industrie, met marktleiders als Pfizer en AstraZeneca die er gebruik van maken.
De gemeenschap
Als open-source gemeenschap wordt Julia door geen enkel bedrijf ondersteund. Toch wordt het gesteund door NumFOCUS, een Amerikaanse liefdadigheidsorganisatie die open-source projecten helpt. Grote bedrijven doneren geld aan de liefdadigheidsinstelling, die het weer verdeelt onder deze projecten, hen helpt om de serverkosten te betalen en een juridisch overzicht biedt.
Julia wordt volledig aangedreven door de inspanningen van zijn gemeenschap. Zeggen dat een taal open source is, betekent dat de broncode van de taal beschikbaar is voor gebruik of aanpassing. Dit soort software wordt ontwikkeld in een openbare en open samenwerking en vrij beschikbaar gemaakt voor het publiek. De gemeenschap van ontwikkelaars rond Julia is actief in het creëren van de bouwstenen. Volgens Vieyra helpt dit enorm bij de taalontwikkeling, het opsporen van bugs en het rapporteren ervan.
JuliaCon in juli zal de taal zeker in de schijnwerpers zetten en mogelijk meer gebruikers aantrekken, zelfs in Nederland.