De programmeertaal Python is erg populair, maar waarom zou je Python leren behalve dat? Ontdek wat de voordelen zijn van Python en wat je allemaal kunt doen ermee.
Een moderne programmeertaal als Python bespaart je de zorgen over foutbronnen (zoals onzinnige geheugenadressen en dubbel vrijgemaakt RAM).
Programmeren met Python is niet alleen sneller en vergt minder code, maar de taal stelt je in staat je volledig te concentreren op het algoritme – zonder dat je je bijvoorbeeld moet afvragen wat elke instructie doet met de registers van de cpu.
Dit zijn voordelen die ook andere moderne programmeertalen zoals Swift hebben, maar waarom zou je Python leren van alle talen die er zijn?
Waarom zou je Python leren?
Python heeft verschillende belangrijke voordelen:
- Python-code is goed te lezen, makkelijk te begrijpen, esthetisch en vooral kort.
Die kenmerken zijn aantrekkelijk voor ontwikkelaars, wat de reden is waarom de taal de afgelopen tien jaar steevast bij de populairste vier is beland op RedMonks ranglijst, met GitHub en Stack Overflow als bronnen. - Een belangrijke factor voor het succes van Python is ook zijn veelzijdigheid.
De beknopte en efficiënte syntaxis maakt Python geschikt voor korte scripts en experimenteren op de interactieve console. - Aangezien Python zelf in C geprogrammeerd is, zijn er Python-wrappers voor de meeste bibliotheken die in C geschreven zijn.
Door daarop mee te liften, gaan programmeerexperimenten met Python bijzonder snel – wat de reden is dat Python in de wetenschap populair is. En omdat iets vaak blijft hangen als het geïmproviseerd is, blijft veel Python-code van het prototype achter in het latere product. - Op de Raspberry Pi is Python dé taal bij uitstek voor elektronicaprojecten en bij Docker-containers stuurt de taal webapplicaties aan.
Op het gebied van machine-learning zie je dat Python populair is in de wetenschap: alle grote AI-frameworks bieden in de eerste plaats een Python-interface en data-science wordt voornamelijk in Python gedaan. Met een online omgeving zoals Jupyter Notebooks kun je experimenten visualiseren, terwijl de rekenkracht uit de cloud komt.
Alleen spelletjes (afgezien van minigames met Pygame) en smartphone-apps worden niet met Python geprogrammeerd. Ondanks die twee uitzonderingen: geen andere programmeertaal is zo veelzijdig als Python. Python is een taal voor iedereen!
Ontvang gratis informatie en tips over Python, schrijf je in voor de nieuwsbrief:
Nadelen van Python?
Het gemak van Python heeft een prijs: Python-code doet er ongeveer 100 keer langer over om dezelfde taak uit te voeren dan een C-programma. Dat klinkt als een geweldig probleem qua rekentijd, maar is in de praktijk nauwelijks een beperking.
Als je bijvoorbeeld grote hoeveelheden gegevens door de vectoreenheden van je multicore-cpu wilt jagen, moet je sowieso al geoptimaliseerde bibliotheken gebruiken. Voor Python zou dat bijvoorbeeld NumPy kunnen zijn, dat uitstekend geoptimaliseerd is en de code van de overgrote meerderheid van C-ontwikkelaars moeiteloos inhaalt. Zoals je bij de voordelen kon lezen zijn er Python-wrappers voor de meeste bibliotheken die in C geschreven zijn.
Wat kun je allemaal met Python?
Je kunt bijna alles met Python, zoals we hierboven aangeven. Als je je nog afvraagt ‘Waarom zou je Python leren?’ vind je hier verschillende toepassingsdoeleinden. Die geven je een nog beter idee van de flexibiliteit die je met Python kunt halen. Of het nu gaat om het automatiseren van servers met Python, het opleuken van je Raspberry Pi, het visualiseren van gegevens met Jupyter Notebooks of het nieuw leven inblazen van je webproject met Django.
Automatiseren met Python-scripts
Er is veel te automatiseren in het dagelijks leven (niet alleen als systeembeheerder) – en Linux, Windows en macOS kunnen elk met hun eigen scripts worden aangestuurd. Maar Bash voor Linux is niet bepaald intuïtief, BAT-bestanden onder Windows zijn niet bepaald flexibel en de syntaxis van PowerShell is niet voor iedereen even geschikt. Python is een waardig alternatief voor kleine en grote taken en gedraagt zich bijna hetzelfde op verschillende besturingssystemen.
Als je bijvoorbeeld dingen automatisch van internet wilt downloaden, kun je een overzichtelijk en makkelijk te onderhouden script in Python schrijven met http.client in plaats van te klooien met ellendig lange curl-commando’s. Als de eisen toenemen, zijn de bibliotheken requests, json en yaml beschikbaar. Zij kunnen zelfs de meest exotische HTTP-requests afhandelen en de belangrijkste opmaakformaten voor configuratiebestanden lezen en schrijven. Met dergelijke krachtige tools en de flexibiliteit van een volwaardige programmeertaal kan een script in een mum van tijd tientallen configuratiebestanden wijzigen. En met subprocess kan Python elk commando makkelijk uitvoeren waar anders een console voor nodig zou zijn.
Voor het dagelijkse systeembeheer kun je automatisering verder doorvoeren met Python. De populaire automatiseringstool Ansible is bijvoorbeeld geschreven in Python en bestuurt servers met behulp van herhaalbare recepten. Je hoeft je met de Python-code achter de schermen alleen bezig te houden wanneer je je eigen modules wilt schrijven. Er zijn dan geen grenzen aan wat je kunt automatiseren.
Waarom zou je Python leren: voor Raspberry Pi’s
Python en de Raspberry Pi gaan hand in hand. Python zit niet alleen in de circuits, maar ook in de naam: Pi is een afkorting van Python Interpreter.
Een Pi kan worden gebruikt om de eerste programmeerervaring in Python op te doen en snel zichtbare resultaten te produceren zoals knipperende leds. Of het nu gaat om de grote Raspberry Pi, de Pi Zero of de piepkleine Pi Pico: Python is de tool bij uitstek als het gaat om programmeren met betrekking tot hardware. Dat is vooral te danken aan de ontelbare bibliotheken: de Python-community, maar ook componentenfabrikanten als Adafruit en SparkFun, bieden die kant-en-klaar aan om te downloaden. Daarmee kun je servobesturingen, OLED-displays, stappenmotoren en nog veel meer aansturen.
Dat maakt niet alleen de eerste stappen in Python makkelijker, ervaren programmeurs profiteren ook van het grote aantal bibliotheken. Zij hoeven zich geen zorgen te maken over de juiste timing van de GPIO-pinnen om een sensor aan te sturen, maar kunnen zich concentreren op de hoofdzaken en het verwerken van de gegevens. Met MicroPython op een Pi Pico kun je ook eenvoudig programma’s van de Pi overzetten naar een microcontroller zonder dat je een nieuwe programmeertaal hoeft te leren.
Gegeven analyseren en visualiseren met Python
Ook grote hoeveelheden gegevens kunnen worden verzameld, verwerkt, geanalyseerd en gevisualiseerd met behulp van Python-scripts. Zo kunnen ruwe gegevens over de coronabesmettingen tot aantrekkelijke diagrammen worden verwerkt, kunnen serverlogs en laboratoriumgegevens worden geanalyseerd of kan worden nagegaan welke onderwerpen in een tekstverzameling bijzonder vaak voorkomen.
Met de juiste bibliotheken kan Python zowel met SQL-databases als met REST-API’s communiceren en alle dataformaten inlezen – of je schraapt gewoon zelf de teksten en getallen op internet bij elkaar. Bij de volgende stap helpen de bibliotheken NumPy en Pandas bij het opschonen en analyseren van de gegevens. Matplotlib en Plotly genereren grafieken, interactieve diagrammen en live-dashboards.
Veel studenten en onderzoekers schrijven hun Python-scripts in de programmeeromgeving Jupyter Notebook. Daarin worden uitvoerbare codefragmenten en gevisualiseerde resultaten vermengd met teksten voor documentatie en interpretatie. Jupyter Notebooks zijn ook ideaal om samen aan een project te werken of om je resultaten aan collega’s te presenteren.
De meeste AI-onderzoekers publiceren hun code als Jupyter Notebooks. AI gaat bijzonder goed samen met Python omdat alle belangrijke frameworks voor het ontwikkelen van neurale netwerken op Python-code draaien. De resultaten van de experimenten vullen diagrammen die direct in dezelfde Notebook onder de code staan. De Notebooks zijn meestal te downloaden op GitHub, zodat veel AI-experimenten ook door leken gereproduceerd kunnen worden.
Webontwikkeling met Django en Python
Voor zo’n beetje elke C-bibliotheek heeft iemand al wel een Python-wrapper geschreven. Dat Python profiteert van opensource software die gedurende tientallen jaren ontwikkeld is, is te zien aan grote frameworks als Django.
Het Django-webframework kan overweg met elke SQL-database, werkt met alle webservers en vertrouwt op de betrouwbaarste crypto-bibliotheken. Django is daarbij niet afhankelijk van externe structuren, omdat het framework alles zo inpakt dat het perfect past in de esthetiek en logische structuur van de Python-syntaxis.
Django-webapplicaties harmoniseren uitstekend met moderne single-page-applicaties, met Angular en React. Voor een snel resultaat is er ook een geïntegreerde template-engine. Het automatisch aangemaakte beheerback-end, dat Django met minimale inspanning uit de databasemodellen in elkaar zet, bespaart je een hoop tijd. Dankzij onproblematische Python-wrappers rond Mongo-DB en Redis kunnen de prestaties ook makkelijk geoptimaliseerd worden.
Al met al betekent dit dat je met Django snelle webapplicaties kunt ontwikkelen die een logische structuur hebben waarvan de code begrijpelijk blijft en die op een modulaire manier getest kunnen worden. Django geeft je maximale vrijheid met de databasemodellen en de links, waardoor de projecten uiteindelijk uitgebreide programma’s worden die bestaan uit tientallen bestanden in verschillende mappen. Voldoende tijd en een goede ontwikkelomgeving zijn daarom ook nodig om met Django en Python aan de slag te gaan.
Meer over Python leren
Dit zijn belangrijke voorbeelden van wat je allemaal kunt met Python. Afhankelijk van wat je wilt programmeren, geven ze ook antwoord op de vraag ‘Waarom zou je Python leren?’
Installeren van Python is trouwens zo gebeurd:
Houd c’t magazine en deze website in de gaten voor meer tips en informatie over Python, of schrijf je in voor de nieuwsbrief.
Ontvang gratis informatie en tips over Python, schrijf je in voor de nieuwsbrief:
(Deze informatie is afkomstig uit het artikel in c’t 5, 2022, pagina 87, van Wilhelm Drehling, Pina Merkert en Noud van Kruysbergen)