“De tijd van de programmeur is belangrijker dan de tijd van de computer. Want computers worden steeds sneller, maar programmeurs niet.” Pythonontwerper Guido van Rossum over de geboorte van zijn geesteskind en de filosofie achter Python.
Pythonontwerper Guido van Rossum vindt dat gedacht moet worden vanuit de gebruiker. “Programmeertalen nemen te vaak de computer als uitgangspunt, ook nu nog. Maar uit die onderliggende hardware resulteren allerlei beperkingen. Gebruikers hebben daar vaak problemen mee, want ze willen computers gebruiken om real world problemen op te lossen en die passen niet altijd in 32 bits. In het midden van de jaren tachtig werkte ik op het CWI (Centrum voor Wiskunde en Informatica in Amsterdam) onder Lambert Meertens (tegenwoordig hoogleraar aan de universiteit Utrecht, red.) aan applicaties voor een revolutionair nieuwe experimentele programmeertaal: ABC. Ik beschouw ABC als een van de belangrijkste voorlopers van Python. De ontwerpers van ABC namen de gebruiker als uitgangspunt. Ze zeiden: we trekken ons niets van die machinebeperkingen aan. Als de gebruiker een getal van 100 cijfers wil hebben, dan zorgen we dat dat kan. Als dat getal niet in één machinewoord past, dan gebruiken we er gewoon tien.
“Dat uitgangspunt heb ik in Python overgenomen, net als een aantal andere kenmerken. De meeste programmeertalen gebruiken begin-end of een soort gekrulde haakjes om code te groeperen. De ontwerpers van ABC hadden besloten om dat met indentatie op te lossen. Dat heeft als resultaat dat als je je code visueel scant je de structuur van de code heel gemakkelijk kunt zien. Indentatie als hulp voor de lezer is natuurlijk zeer standaard, maar het is meestal geen onderdeel van de definitie van de programmeertaal. Als je bijvoorbeeld in C of Java per ongeluk totaal geen inspringingen gebruikt, dan heeft de compiler daar geen probleem mee. In ABC en Python is dat wel zo.
Een ander principe dat ik heb overgenomen is: een klein aantal heel krachtige datatypes. In bijvoorbeeld Java en C heb je een heleboel verschillende varianten op getallen. Die vormen een extra keuzeprobleem voor de programmeur, want dat betekent dat je van tevoren moet bepalen of je getallen in 32 bits gaan passen of dat je misschien toch 64 bits nodig hebt. Dat vertraagt je bij het programmeren. De centrale filosofie achter Python is: de tijd van de programmeur is belangrijker dan de tijd van de computer. Want computers worden steeds sneller, maar programmeurs niet.”
“Eind jaren tachtig ging ik applicaties schrijven voor een onderzoeksproject onder leiding van Sabe Mullender en Andy Tanenbaum, naar een gedistribueerd besturingssysteem op basis van een micro kernel. Dat was een beetje een modeterm. Het komt erop neer dat je de harde kern van het besturingssysteem – het gedeelte dat als het niet werkt compleet fataal is voor alles wat je met de computer probeert te doen – zo klein mogelijk houdt. Alle andere dingen, zoals een disk driver, device drivers en file systemen codeer je buiten het besturingssysteem, als gewone applicaties. Als er vervolgens iets mis is met je netwerk driver, dan kun je misschien het netwerk niet meer gebruiken, maar nog wel je bestanden opslaan.
“De enige programmeertaal die daarvoor op dat moment geschikt was, was C. Het was taai werk om daarmee applicaties te schrijven. Als ik iets heel kleins verkeerd deed, kwam dat vaak pas naar boven doordat het uiteindelijke programma op een heel onaangename wijze crashte. De compiler merkte het vaak niet. Nou zijn er wel hulpmiddelen om je code te debuggen, maar ik dacht: dat moet toch beter kunnen. Bovendien: C is een prima taal als je heel efficiënte code wilt schrijven, maar we hadden op een gegeven moment ook applicaties nodig als een loginprogramma, dat je maar één keer per sessie gebruikt. Of het nou vijf milliseconden of honderd milliseconden duurt om je wachtwoord te controleren, dat merkt niemand.
“Dus begon ik te denken aan een programmeertaal op een veel hoger niveau. Eerst overwoog ik ABC te gebruiken, maar dat kon slecht met andere applicaties communiceren.
Toen dacht ik in een vlaag van jeugdige ongebreidelde zelfoverschatting: laat ik die taal zelf programmeren. Ik had natuurlijk door het werk aan het ABC-project en doordat programmeertalen altijd een hobby van me zijn geweest, een behoorlijke kennis van hoe je een interpreter van een programmeertaal schrijft. En ik had iets over Bytecode gelezen in een boek over Smalltalk. Na een paar maanden ontwerpen, in de weekenden en avonduren, had ik iets wat werkte. Mijn onderzoekscollega’s waren meteen enthousiast. Die eerste gebruikers, met name Jack Jansen en Sjoerd Mullender, werden ook meteen de eerste codevelopers. Ze verbeterden de interpreter en voegden onderdelen toe aan de standaardbibliotheek.
“Begin 1991, toen Python iets ouder dan een jaar was, besloten we een distributie te maken. Usenet was inmiddels zeer populair en wijdverbreid, dus konden we die distributie vrij gemakkelijk naar usenetgebruikers over de hele wereld pushen. De respons was overweldigend. Met usenet kun je niet zien hoeveel er gedownload wordt, maar ik merkte het aan de hoeveelheid mail die ik kreeg. Ook ontving ik de eerste mails van buiten het CWI in de trant van: “Dit is precies wat ik nodig heb! Alleen die-en-die functie werkt niet op mijn Unix-variant. Maar ik heb uitgevonden hoe ik het kan verbeteren en hier zijn drie regels code. Zo werd Python geleidelijk beter en ontstonden er nieuwe implementaties.
“Het feit dat er zoveel toepassingen voor Python zijn, zal er misschien iets mee te maken hebben dat ik zelf zo’n breed interesseveld heb. Python wordt vaak een scriptingtaal genoemd, maar ik zou het liever een hoog-niveau programmeertaal noemen. Omdat je als programmeur binnen Python minder aandacht aan details hoeft te besteden, is het heel geschikt om te experimenteren met nieuwe typen software. Als je heel precies wat je wilt, je wilt bijvoorbeeld de jpeg-standaard implementeren, dan kun je dat waarschijnlijk net zo makkelijk in een andere taal doen. Maar als je eigenlijk nog nauwelijks weet wat je wil – ik heb dat zelf heel vaak aan de hand gehad – dan is Python ideaal.
“Een andere reden voor het succes van Python is dat ik altijd heel open geweest ben in het accepteren van bijdragen. Ik ben heel erg een pietje-precies als het gaat om de taal zelf, maar ik heb altijd tegen mensen gezegd die de taal wilden aanpassen voor een bepaalde toepassing: laten we nou niet een hele nieuwe syntactische constructie ontwerpen, maar in plaats daarvan jou een standaardbibliotheek geven. Bovendien kun je in Python extensiemodules gebruiken. Dat betekent dat je bijvoorbeeld een module in C schrijft en die aanroept vanuit Python. Zo hebben Pythongebruikers toch veel vrijheid om hun eigen datatypes te definiëren. De taal zelf is relatief klein, maar daardoor toch heel krachtig.”
Zelf Python leren
Python leren voor beginners: wiki.python.org/moin/BeginnersGuide/NonProgrammers. Python leren voor gevorderden: www.python.org/community/sigs/current/edu-sig.
Python voor wetenschappers: osl.iu.edu/~lums/swc
Python
Python is een objectgeoriënteerde hogere programmeertaal die in 1991 door Guido van Rossum werd ontwikkeld. Hij noemde de programmeertaal naar zijn favoriete comedy Monty Python’s Flying Circus. Python draait op Windows, Linux/Unix, Mac OS X, OS/2, Amiga, Palm Handhelds en mobiele telefoons van Nokia. Daarnaast kan Python gebruikt worden op virtuele machines geprogrammeerd in Java of .NET. Python wordt gedistribueerd onder een open source licentie. Iedereen kan Python daardoor gratis gebruiken, zelfs als hij of zij er commerciële producten mee bouwt.
www.python.org
Toepassingen
Misschien wel de bekendste toepassing is het gebruik van Python als scriptingtaal (een taal waarin een webserver communiceert met webtoepassingen zodat applicatieverzoeken van webgebruikers kunnen worden beantwoord). Python kan ook gebruikt worden voor vele andere vormen van webontwikkeling. Binnen softwareontwikkeling kan Python gebruikt worden voor onder andere build control, compilatie, testen, bug tracking en project management. Ook kan Python gebruikt worden voor het krijgen van toegang tot databases als MySQL, Oracle en MS SQL Server. Andere toepassingen zijn het bouwen van grafische gebruiksinterfaces en 3D graphics. Daarnaast wordt Python veel gebruikt om netwerken op een laag niveau te programmeren. Verder is Python populair als wetenschappelijke programmeertaal. Tot slot is de taal heel geschikt voor het overbrengen van algemene programmeerprincipes, zowel voor beginners als gevorderden. Dat komt door de relatief eenvoudige syntax van Python en doordat Python ruimte biedt om te experimenteren met verschillende benaderingen, zoals functioneel, procedureel en objectgeoriënteerd programmeren.
www.python.org/about/success
Guido van Rossum
Vanaf december 2005: Ontwikkelaar binnen Google. Besteedt de helft van zijn tijd aan de ontwikkeling van Python, schrijft de andere helft van zijn tijd tools voor Google-ontwikkelaars.
2003: senior language architect voor Elemental Security
2000: Director of PythonLabs bij Zope Corporation
2000: Director of PythonLabs bij BeOpen.com
1995-2000: Pythonontwikkelaar en onderzoeker naar mobile agents in gedistribueerde systemen bij het CNRI (Corporation for National Research Initiatives)
1994: Pythonontwikkelaar bij NIST (National Institute of Standards and Technology)
1982– 995: onderzoeker bij het Centrum voor Wiskunde en Informatica (CWI) in Amsterdam