0%

Wat Python eigenlijk is

Waarom Python is gemaakt

Guido van Rossum werkte graag met een bepaalde taal, maar kon er niet genoeg mee doen.

Bij CWI, een onderzoeksinstituut in Amsterdam, had hij gewerkt aan een onderwijstaal met de naam ABC. ABC hechtte veel waarde aan duidelijke programma’s. Dat waardeerde hij en nam hij over. Maar de taal was ook lastig uit te breiden, moeilijk te verbinden met de Unix-systemen eromheen en te traag voor een deel van het werk dat hij wilde doen. Unix is een familie van besturingssystemen die moderne systemen zoals Linux en macOS heeft beïnvloed. Een besturingssysteem is de software die een computer beheert en programma’s toegang geeft tot bestanden en hardware.

ABC verwachtte bovendien dat je de eigen ingebouwde editor gebruikte. Binnen die omgeving werkte dat prettig, maar het maakte de taal moeilijk te combineren met de hulpmiddelen die programmeurs al op hun computer hadden.

In 1989 werkte hij aan een ander CWI-project, het besturingssysteem Amoeba, en zocht hij een betere manier om daar werk te automatiseren. In de kerstvakantie van dat jaar begon hij een taal te bouwen die de leesbare stijl van ABC combineerde met toegang tot andere systemen.

Dat vakantieproject werd het begin van tientallen jaren werk, uiteindelijk samen met een veel grotere gemeenschap.

Wat hij wilde oplossen

Hij wilde een afstammeling van ABC maken die ook programmeurs zou aanspreken die al met Unix en C werkten. C is een oudere taal voor besturingssystemen en andere software die dicht bij de machine werkt. Programma’s moesten gemakkelijker te lezen en te schrijven worden, zonder afgesneden te raken van de rest van de computer.

Drie ontwerpkeuzes van Python worden veel begrijpelijker als je ze ziet als antwoorden op ABC.

ABC was lastig uit te breiden, dus Python werd juist gebouwd om uitbreidbaar te zijn en code in C aan te kunnen roepen. De moderne versie daarvan zag je in de vorige les: pakketten die onder de oppervlakte snellere talen gebruiken. Het ecosysteem is veel groter geworden dan iemand in 1989 had kunnen voorzien, maar de keuze om verbinding te zoeken met andere software in plaats van zich af te sluiten was er vanaf het begin.

ABC was voor sommige echte taken te traag. Python moest daarom snel genoeg zijn voor gewone taken en het zware werk aan C kunnen overlaten. Dat is een afweging, geen truc, en we komen er later eerlijk op terug. Het doel was dat Python bruikbaar bleef in praktische systemen en niet alleen een onderwijsexperiment zou zijn.

ABC hield vast aan de eigen editor. Python werkte juist met de bestanden, editors en systeemhulpmiddelen die mensen al hadden. Een taal wordt veel gemakkelijker in gebruik genomen als ze in de rest van je werkdag past.

Niet de slang

De naam heeft niets met de slang te maken. Hij komt van Monty Python’s Flying Circus, een Britse komedieserie die in 1969 voor het eerst werd uitgezonden en bestond uit korte, opgewekt absurde sketches. Van Rossum was een fan en zocht een korte naam met iets raadselachtigs.

Je hoeft er geen minuut van te hebben gezien, want je bent de invloed ervan al tegengekomen. De Spam-sketch speelt zich af in een café waar bijna elk gerecht spam blijkt te bevatten, het vlees uit blik. Het woord wordt zo vaak herhaald dat het het gesprek overstemt. Daar komt de naam van de spam in je e-mailmap vandaan.

Daarom gebruikt de documentatie van Python ook vaak spam en eggs wanneer een voorbeeld een woord nodig heeft zonder bijzondere betekenis. Andere talen gebruiken foo en bar. Zolang je Python gebruikt, zul je de Python-variant in de officiële documentatie tegenkomen.

En daarom heet de assistent op deze site Monty.

Leesbaarheid die je kunt zien

Eén van die keuzes is zichtbaar in elk Python-programma dat ooit is geschreven. Vergelijk twee manieren om aan te geven dat een paar handelingen bij een voorwaarde hoort:

If the report is ready:
    send it
    record the time
If the report is ready { send it; record the time; }

De eerste gebruikt de positie. De tweede gebruikt leestekens. Python maakte de eerste aanpak tot een regel van de taal in plaats van een kwestie van smaak. Inspringing is de ruimte aan het begin van een regel. In Python is die geen versiering: zo weet de taal welke onderdelen bij elkaar horen.

Van Rossum vond dat dit visuele rommel wegneemt. En als mensen minder vrijheid hebben om de code anders te rangschikken, lijken programma’s van verschillende auteurs meer op elkaar.

Dat is geen belofte dat elk Python-programma leesbaar is. Slechte namen, uitwaaierende stukken code en onverklaarde aannames maken het in elke taal moeilijk. De regel geeft je een consistente vorm. De rest blijft werk.

Keuzes, geen magie

Ik vind dit een mooi ontstaansverhaal omdat er niets geheimzinnigs aan is. Van Rossum nam een taal die hij waardeerde, behield wat hij goed vond, veranderde wat hem hinderde en zorgde dat het resultaat kon samenwerken met de software eromheen.

Niets daarvan stond vast. De eerste versie was veel kleiner dan de huidige Python, maar de nadruk op leesbaarheid en samenwerking met andere software is nog steeds herkenbaar. Vervolgens gingen andere mensen ermee aan de slag. Dat is weer een heel ander verhaal.

Verder lezen (Engels)

Guido van Rossums voorwoord over het ontstaan van Python is een persoonlijk verslag uit 1996. Het is waardevol vanwege zijn eigen uitleg én omdat het laat zien hoe hij er op dat moment naar keek. Optionele leestip.