Cursus
De velden data science & machine learning hebben het mogelijk gemaakt dat machines leren van ervaring en verbazingwekkende inzichten afleiden in hoe dingen en mensen functioneren. Het benutten van de potentie van deze technologieën vraagt echter om een gemiddeld niveau van technische vaardigheid. Er zijn veel tools ontwikkeld om het werken aan data science- en machine learning-projecten te vereenvoudigen. Kijk bijvoorbeeld naar de top programmeertalen voor data scientists in 2022.
In eerste instantie werden gesprekken over welke programmeertaal beginners zouden moeten leren voor data science & machine learning gedomineerd door Python vs. R (je kunt meer lezen over het verschil tussen Python en R voor data science in een apart artikel). Nu begint dat te veranderen; er is geen twijfel dat Python een van de populairste programmeertalen van de afgelopen tijd is. Volgens de TIOBE Index van november 2022 staat Python bovenaan de populariteitsranglijsten, maar er is een nieuwe tool in opkomst: Julia.
Naarmate Julia aan momentum wint, vragen verschillende ervaren data science- en machine learning-professionals zich af of het de moeite waard is om zich bij te scholen, terwijl beginners zich nieuwe vragen stellen zoals: “moet ik Python of Julia leren?” In dit artikel laten we de verschillen tussen Python en Julia zien om het beslisproces te vereenvoudigen, zodat je kunt beginnen met het opbouwen of versterken van je carrière.
Wat is Python?
De meeste mensen in de technologiesector hebben wel van Python gehoord – het is al jaren populair onder ontwikkelaars, zeker sinds de opkomst van data science en machine learning. De taal werd bedacht door Guido van Rossum en in 1991 voor het eerst uitgebracht als opvolger van de ABC-programmeertaal.
Python is een high-level, geïnterpreteerde, objectgeoriënteerde programmeertaal met dynamische semantiek – wat betekent dat zijn variabelen dynamische objecten zijn. De Python-interpreter en de uitgebreide standaardbibliotheken die bij de programmeertaal horen, worden vrij verspreid en zijn beschikbaar in broncode- of binaire vorm.
“De ingebouwde high-level datastructuren, gecombineerd met dynamische typering en dynamische binding, maken het zeer aantrekkelijk voor Rapid Application Development, en ook als scripting- of glue-taal om bestaande componenten te koppelen.”
[Bron: Python-documentatie]
Wie gebruikt Python?
Python is een general-purpose taal. Je kunt het dus gebruiken om software te bouwen in een breed scala aan toepassingsdomeinen, op veel verschillende hardwareconfiguraties en besturingssystemen.
Voorbeelden van domeinen zijn:
- Data science (bekijk deze Python voor Data Science-cheatsheet voor beginners)
- Scripting/automatisering (bijv. productprijzen volgen en formulieren invullen)
- Webontwikkeling
- Machine learning
- Softwaretesten
Lees ons artikel Waar wordt Python voor gebruikt? 7 Python-toepassingen uit de praktijk voor meer diepgang in de use-cases van Python.
Voordelen van Python
Verschillende factoren verklaren waarom Python enorm populair is. Enkele daarvan:
- Toegankelijkheid: De syntaxis van Python lijkt bijna op natuurlijke taal, waardoor het makkelijker te lezen en te begrijpen is voor andere ontwikkelaars. Daardoor kunnen ontwikkelaars sneller projecten bouwen en verbeteren, omdat de taal extreem eenvoudig is.
- Veelzijdigheid: Python is een general-purpose taal, wat betekent dat het verschillende dingen kan doen en maken, van machine learning tot scripting en het automatiseren van alledaagse taken.
- Open source: Python wordt ontwikkeld onder een door de OSI goedgekeurde open-sourcelicentie. Het is dus gratis te gebruiken en te verspreiden voor alle doeleinden, inclusief commercieel gebruik. De combinatie van de vrije distributie en de groeiende populariteit van Python heeft geleid tot een sterke community rond de taal, waar gebruikers een beroep op kunnen doen als ze ondersteuning nodig hebben.
- Bibliotheken: Bibliotheken zijn enorm nuttige hulpmiddelen die ontwikkelaars efficiënter maken in hun werk. Op het moment van schrijven zijn er meer dan 137.000 Python-bibliotheken die je kunt gebruiken om applicaties te maken in allerlei vakgebieden.
Nadelen van Python
Ondanks alle voordelen heeft Python ook de nodige critici, om de volgende redenen:
- Snelheid: Een van de belangrijkste kritiekpunten op Python is de snelheid. Als dynamisch getypeerde, geïnterpreteerde taal is Python traag vergeleken met gecompileerde talen zoals C en Java (dat ook als geïnterpreteerd kan worden beschouwd omdat het een hybride taal is).
- Geheugengebruik: Python is flexibel met datatypen, wat resulteert in een hoog geheugengebruik.
- Mobiele omgeving: Hoewel het uitblinkt in de ontwikkeling van server- en desktopapplicaties, is Python minder geschikt voor mobiele ontwikkeling vanwege het hoge geheugengebruik en de tragere verwerkingssnelheid ten opzichte van andere programmeertalen.
- Runtime-fouten: Python is dynamisch getypeerd, wat betekent dat datatypen aan waarden zijn gekoppeld in plaats van aan variabelen. Veel Python-gebruikers hebben geklaagd over dit ontwerp omdat het diverse problemen oplevert. Zo kan de aan een variabele toegewezen waarde op elk moment in een programma worden gewijzigd, waardoor het datatype van de variabele kan veranderen en er runtime-fouten kunnen ontstaan.
Wat is Julia?
Begin 2022, in het jaar van hun tiende verjaardag, maakte Julia Computing bekend dat de programmeertaal bijna 35 miljoen keer was gedownload, bijna vijf keer zoveel als het totale cumulatieve aantal downloads drie jaar eerder. Dit soort groei heeft Julia onder de aandacht van veel ontwikkelaars gebracht.
Opmerking: Ontwikkel je Julia-programmeervaardigheden met de cursus Introduction to Julia.
De oprichters van Julia – Jeff Bezanson, Alan Edelman, Stefan Karpinski, Viral B. Shah – hadden één duidelijk doel: de tekortkomingen van andere programmeertalen verbeteren en tegelijkertijd hun onderscheidende en gewenste kwaliteiten overnemen. In een blogpost getiteld Why we Created Julia stellen de auteurs brutaal: “We are greedy: we want more” voordat ze verschillende wenselijke maar ambitieuze eigenschappen opsommen die ze in Julia wilden terugzien.
“We willen een taal die open source is, met een liberale licentie. We willen de snelheid van C met het dynamische karakter van Ruby. We willen een taal die homoiconisch is, met echte macro’s zoals Lisp, maar met duidelijke, vertrouwde wiskundige notatie zoals Matlab. We willen iets dat net zo bruikbaar is voor algemeen programmeren als Python, net zo gemakkelijk voor statistiek als R, zo natuurlijk voor stringverwerking als Perl, zo krachtig voor lineaire algebra als Matlab, en net zo goed in het aan elkaar knopen van programma’s als de shell. Iets dat kinderlijk eenvoudig te leren is, en toch de meest serieuze hackers tevreden houdt. We willen het interactief en we willen het gecompileerd. (Hadden we al gezegd dat het zo snel als C moet zijn?).”
[Bron: Why we Created Julia]
Tegen de tijd dat ze Julia 1.0.0 in 2018 uitbrachten, was 90% van de beloften die ze zes jaar eerder hadden gedaan, ingelost.
Maar wat is Julia nu precies?
Je kunt het het best zien als een high-level, dynamische, snelle en gebruiksvriendelijke programmeertaal met functies die goed geschikt zijn voor numerieke analyse en computationele wetenschap. Je kunt meer lezen over The Rise of Julia in een apart artikel.
Wie gebruikt Julia?
Een van de primaire doelen van Julia was het ontwikkelen van een taal waarmee ontwikkelaars beknopte, high-level, generieke en abstracte code kunnen schrijven, vergelijkbaar met wiskundige formules, terwijl ook snel low-level machinecode kan worden gegenereerd zoals gebruikelijk is bij statische talen.
Hoewel Julia specifiek is ontworpen met technische en wetenschappelijke gebruikers in gedachten, wordt het ook beschouwd als een general-purpose taal, wat betekent dat het breed toepasbaar is in diverse toepassingsdomeinen en geen gespecialiseerde functies heeft.
Deze eigenschappen maken Julia bijzonder aantrekkelijk voor ontwikkelaars in velden die draaien om:
- Numerieke computing
- Machine learning
- Statistiek
- Webontwikkeling
Lees ons artikel Waar wordt Julia voor gebruikt? 10 toepassingen van Julia voor meer diepgang in de use-cases van Julia.
Voordelen van Julia
- Snelheid: Een van de grootste aantrekkingskrachten van Julia is ongetwijfeld de snelheid. Julia is snel. Het gebruikt just-in-time (JIT) compilatie, wat betekent dat de kans kleiner is dat code meerdere keren wordt geïnterpreteerd en er dus minder overhead is. Bovendien presteert Julia consequent beter dan bestaande dataprogammeertalen zoals Python, R en Matlab in benchmarktests, omdat Julia een gecompileerde programmeertaal is in plaats van een geïnterpreteerde.
- Toegankelijkheid: Julia heeft een duidelijke syntaxis – schoner dan C++ – die eenvoudig te gebruiken en makkelijk te leren is. Het is dynamisch getypeerd, wat over het algemeen beknopter is dan statisch getypeerde talen.
- Doelgericht: Veel van het dagelijkse werk van de makers van Julia omvatte wetenschappelijke computing, machine learning, data mining, grootschalige lineaire algebra en gedistribueerd & parallel computing. Julia is dus ontworpen met wetenschappelijke computing in het achterhoofd en bevat een robuuste selectie aan pakketten die extra use-cases mogelijk maken in de domeinen wetenschap, wiskunde, statistiek en machine learning.
Nadelen van Julia
Ondanks de veelbelovende introductie tot nu toe, is de taal verre van perfect en kent ze momenteel enkele belangrijke beperkingen.
- Leeftijd: Julia is een nieuwe taal. Daarom is de taal niet zo populair of ondersteund als andere talen zoals Python en R.
- Het “time to first plot”-probleem: Er zijn nog steeds enkele problemen met Julia’s JIT-compiler, wat resulteert in merkbare vertraging wanneer je voor het eerst code uit sommige pakketten probeert uit te voeren. De auteurs stellen: “Because of the way Julia works under the hood, this is a difficult problem to solve, but much progress has been made in the past few years to reduce this compilation time.” [Bron: Julia-documentatie].
- Kleine ecosystemen: Zoals te verwachten bij een nieuwe technologie, staan Julia’s community en ecosysteem nog in de kinderschoenen. Hoewel Julia veel unieke oplossingen en pakketten heeft, vallen die in het niet in vergelijking met ecosystemen als dat van Python en R – die beide al meer dan 20 jaar in ontwikkeling zijn.
Python vs. Julia: Belangrijkste verschillen
Python heeft een gevestigde, grote community die bijdraagt aan de taal en andere Python-ontwikkelaars ondersteunt. De taal is ook extreem veelzijdig en kent verschillende use-cases, en maakt die general-purpose claim waar. Daarentegen is Julia, hoewel ook beschouwd als een general-purpose programmeertaal, aanzienlijk minder veelzijdig dan Python – maar wel een uitstekende tool voor wetenschappelijk programmeren.
Een van de belangrijkste factoren die Julia zo aantrekkelijk maken, is hoe snel het is; Julia verslaat Python in snelheid en performance. Dit komt doordat Julia aan de basis een gecompileerde taal is, terwijl Python een geïnterpreteerde taal is waarbij elke regel opnieuw moet worden verwerkt, wat resulteert in tragere uitvoering.
|
Functies |
Python |
Julia |
|
Releasejaar |
1991 |
2012 |
|
Type |
Geïnterpreteerd |
Gecompileerd |
|
Bibliotheken |
137000+ |
7400+ |
|
TIOBE Index-rang (dec 2022) |
1e |
24e |
|
Community |
Python heeft een grote, goed ontwikkelde community |
Julia’s community is nieuwer en veel kleiner dan die van Python |
|
Array-indexering |
0-indexed |
1-indexed |
|
Snelheid |
Langzamer in sommige gebieden |
Sneller in sommige gebieden |
|
Moeilijkheid |
Makkelijk |
Makkelijk tot gemiddeld |
Julia vs Python - Welke kies je?
Het is te vroeg om expliciet te stellen dat Julia Python zal onttronen in bepaalde domeinen, zoals data science en machine learning. Hoewel beide talen een gemakkelijk te lezen en te leren syntaxis hebben, hebben ze elk hun eigen voordelen. Zo heeft Python een grote, gevestigde community en een enorme reeks frameworks en bibliotheken, en is het uiterst veelzijdig. Julia daarentegen is een uitstekende tool voor wetenschappelijke computing die aan populariteit wint dankzij de snelheid.
Voor ervaren professionals kan het leren van een nieuwe programmeertaal een zinvolle investering zijn als de voordelen significant zijn, aangezien het verwerven van de vaardigheid tijd kost, wat de productiviteit kan drukken. Beginners die aan hun reis beginnen, doen er goed aan vacaturesites in de gaten te houden om te zien welke skills gevraagd worden en zich daar op toe te rusten.
Een andere manier om te bepalen welke taal je kiest, is door te kijken naar het type programma’s dat je wilt bouwen. Voor programma’s die niet extreem groot zijn, kan Python sneller resultaten opleveren dan Julia, omdat het geïnterpreteerd is in plaats van gecompileerd. Als je echter van plan bent programma’s te bouwen met CPU-zware berekeningen, is Julia waarschijnlijk een betere keuze.
