Tag: intelligentie

  • PacMan programmeert PacMan

    Ik ben eerder ingegaan op een beeld van een werkelijkheid waarin PacMan, het gele happertje uit het Atari-spelletje van decennia geleden, zelfbewustzijn heeft. Het roept de vraag op wat “echt” is in de wereld van PacMan, maar ik ga liever eerst een nog wat vreemder kant op. Ik legde ook de gedachte voor dat PacMan op één of andere manier in staat zou zijn de computer te programmeren waarop het spel draait. Dit heeft een aantal vreemde implicaties. Immers, dat wat PacMan programmeert op “zijn” computer wordt daarmee werkelijkheid in “zijn” echte, reële wereld. Geprogrammeerd IS echt.

    De vraag die natuurlijk gesteld moet worden is hoe PacMan de computer zou programmeren waarop het spel draait. Die vraagt valt te splitsen in twee delen. Enerzijds is dat de programmeertaal waarmee PacMan programmeert, ofwel de taal die de computer verstaat en vertaalt naar het spel. Anderzijds is van belang welke interface PacMan gebruikt. Hoe worden de gedachtes van onze gele vriend omgezet naar computer-instructies? Om dat beeld goed te laten werken zullen we met heel praktische zaken rekening moeten houden. Zoals het feit dat PacMan geen handen heeft en dus geen toetsenbord kan bedienen.

    De programmeertaal voor PacMan is probleemloos. We weten dat het spel PacMan oorspronkelijk werd geprogrammeerd op een Z80 processor, aangevuld met wat ondersteunende electronica. Dat betekent automatisch dat als PacMan zelf wil gaan programmeren, dat in de machinecode van de Z80 zal moeten. Het bekent echter niet dat PacMan zelf machinecode moet kunnen schrijven. Voor programmeurs is het gebruik van machinecode grotendeels volledig in onbruik geraakt. De moderne programmeur gebruikt een hogere programmeertaal, die door een programma, de compiler, wordt vertaald naar machinecode. Ook als je geen programmeur bent, is een eenvoudig programma in een dergelijke hogere taal nog redelijk te snappen, terwijl machinecode vrijwel kansloos zal zijn.

    Ter illustratie twee korte stukjes code, de ene in de programmeertaal Pascal en de andere in machinecode voor de Z80. Het verschil in begrijpelijkheid moge evident zijn.

    In Pascal:

    program SomVanTweeGetallen;

    uses crt;

    var
    getal1, getal2, som: Integer;

    begin
    clrscr;
    Write(‘Voer het eerste getal in: ‘);
    ReadLn(getal1);
    Write(‘Voer het tweede getal in: ‘);
    ReadLn(getal2);

    som := getal1 + getal2;

    WriteLn(‘De som van ‘, getal1, ‘ en ‘, getal2, ‘ is: ‘, som);
    ReadLn; // Wacht op invoer voor afsluiten
    end.

    In Z80 machinecode wordt dit:

    CD 52 52 CD 66 52 47 CD 52 52 CD 66 52 4F 78 81 FE 0A DA 70 52 21 78 52 CD 89 52 C3 7A 52 C6 30 CD 86 52 C3 7A 52 D6 30 C9 DB 00 DB 00 CB 7F 28 F9 E6 7F C9 5F 0E 02 CD 38 00 C9 7E FE 00 C8 CD 86 52 23 C3 93 52 53 6F 6D 20 3E 20 39 21 00 C3 A6 52

    Een programmeertaal als Pascal heeft een hoger abstractieniveau dan machinecode, en is ook expressiever. Abstractie slaat op het vermogen om met simpele taal-elementen complexe ideeën weer te geven en daardoor de complexiteit te verbergen, en expressiviteit zegt iets over het vermogen in een taal kort, helder en nauwkeurig ideeën uit te drukken.

    Zoals de meeste programmeurs zal ook PacMan waarschijnlijk weinig tot geen kennis hebben van de computer, van machinecode of van de compiler. Sterker, dit zijn allemaal elementen die geen deel uit maken van zijn werkelijkheid! Het neemt niet weg dat als PacMan zijn eigen computer kan programmeren, dat gebeurt via een programmeertaal, of korter gezegd, via taal.

    Dan is er nog het probleem van de interface. Hoe krijgt PacMan zijn ideeën omgezet in taal, en hoe wordt die taal weer omgezet in machinecode?

    Hier moet ik het vaag houden, om twee redenen. Ten eerste, omdat het voor dit moment niet geheel relevant is. Maar ten tweede, omdat het op het moment dat het wel relevant wordt een vraag is die alleen indirect te beantwoorden lijkt. De gedachtensprong die daarvoor nodig is ga ik pas maken als we PacMan achter ons hebben gelaten.

    Wel stel ik voor dit moment vast dat in het spel PacMan geen toetsenbord te vinden is, en PacMan geen handen heeft om een toetsenbord mee te bedienen. PacMan is niets meer dan een hoofd met een mond. Het lijkt me dan ook niet volledig onredelijk te veronderstellen dat PacMan programmeert door zich uit te spreken.

    Wat houden we nu over uit dit beeld over PacMan? Een levende, zelfbewuste entiteit die weliswaar geen eigen wil heeft vanuit onze optiek en al evenmin emoties, intelligentie of zelfbewustzijn, maar die dat zelf wel zo ervaart en die we daarom toch zo beschouwen voorlopig. Deze entiteit heeft geen begrip, nee zelfs geen weet van het feit dat hij slechts een virtueel wezen is in een virtuele wereld die geprogrammeerd is op een computer. Toch, zo nemen we even aan, is hij in staat die computer te programmeren. Hiertoe gebruikt hij taal, die voldoende abstractie kent en expressief genoeg is, om zijn ideeën over zijn wereld in uit te drukken. Hoe deze taal door een compiler wordt vertaald naar machinecode voor de computer waarin de wereld van PacMan bestaat weet PacMan niet, hij weet niet eens van het bestaan van die computer.

  • De stochastische papegaai

    Sinds vrij kort is AI het buzzword, en die fase lijkt zelfs al weer gepasseerd. Hoewel onderzoek naar AI al redelijk oud is, heeft het lange tijd het brede publiek alleen bereikt in de vorm van science fiction. Maar sinds OpenAI met haar large language model kwam, is ineens iedereen deskundig.

    Een vraag die daarbij vaak aan de orde komt is natuurlijk of deze AI wel echt intelligent is. Om die vraag te kunnen beantwoorden zou je verwachten dat men eerst een goede definitie geeft van intelligentie. Immers, hoe kan je iets intelligents zeggen over de intelligentie van kunstmatige intelligentie als je niet weet wat intelligentie is? Aan het woordenboek hebben we dan vrij weinig: verstandelijk vermogen, en kunstmatige intelligentie is volgens datzelfde woordenboek het nabootsen van menselijk denken. ja toedels, wat is denken dan?

    Wat mij al een tijdje opvalt is dat mensen “intelligentie” de facto lijken te definiëren als “dat wat mensen wel kunnen en machines niet”. En heel gek, maar met die definitie blijken machines nou nooit echt intelligent te worden.

    Sinds OpenAI is de term stochastische papegaai redelijk populair geworden. Het suggereert dat wat modellen als ChatGPT en CoPilot doen niks met intelligentie te maken heeft, maar uitsluitend op basis van statistiek woorden napraten is.

    Ik zal die analyse niet weerspreken. Maar ik heb wel een tegenvraag: wat doen mensen dan precies méér?