Beste computer analfabeten.
Het is geen schande een computer analfabeet te zijn. We hebben 't allemaal moeten leren met vallen en opstaan. Telkens wanneer ik overging op een nieuw systeem kwam het voor dat mij de neiging bekroop het ding het raam uit te kegelen, omdat het gewoon niet deed wat ik ervan verwachtte. Daar zit hem precies het probleem van computers. De fabrikanten en verkopers geven je de indruk dat zo'n ding alles kan en je het leven op slag verregaand vergemakkelijkt. Zo is het echter allerminst. Als je nooit hebt leren fietsen en je ziet fietsers voorbij komen, lijkt het zóóó eenvoudig! Maar als je er dan voor het eerst opstapt, lig je gelijk met je snufferd op straat, òf in de sloot tussen de brandnetels.
Met computers is 't niet anders. Zelf kunnen ze niks, net zo min als een fiets. Je moet er eerst op leren rijden, je evenwicht leren houden en sturen voor je er iets zinnigs mee kunt doen. En dan nog kan er van alles misgaan. Net als op die fiets; je kunt 'n lekke band krijgen, of de ketting loopt eraf, of, je kijkt even niet goed uit en rijdt pats-boem tegen een telefoonpaal aan en er vliegen 'n paar spaken uit 't wiel en zelf lig je naast die paal je pijnlijke hoofd af te tasten, met de vraag: "Hoe kan dat nou?"
Computers zijn wat dat betreft net fietsen. Zelf kunnen ze niks. Het is de gebruiker, die erop moet leren "fietsen" met vallen en opstaan en met veelvuldig de uitroep: "Hoe kan dat nou?!" Zelfs zeer geroutineerde computergebruikers overkomt dat bijna nog dagelijks.
De hardware zoals dat in modern computoriaans heet, is een vernuftige machine - net zo goed als een fiets dat is. maar je kunt er niks mee beginnen zonder de software om hem iets te laten doen. De software zijn de trappers die het apparaat - de "hardware"- in staat stelt te doen waarvoor het gemaakt is en het is de gebruiker die de trappers moet bedienen.
Die hardware verstaat maar één taal: machinetaal! Machinetaal? ... Wat is dat nou weer? Jaren geleden, eind jaren tachtig, toen ik nog voor mijn allereerste homecomputertje zat, en met de optacon het scherm aflas, had ik het probleem dat veel menu's van mijn goeie ouwe WordStar tekstverwerker in omgekeerde video werden weergegeven, dus zwart op wit in plaats van wit op zwarte achtergrond. Dat was met de optacon bijna niet te lezen, omdat de witte achtergrond op een monitor in feite licht is en geen kleur. Dus vroeg ik iemand, die pretendeerde het nodige van computers te weten, of dat veranderd kon worden. "Als 't in de machinetaal zit niet." zei hij. Ik had toen al wel zoveel kennis van zaken, dat ik begreep dat de goeie man maar wat bralde om de indruk van deskundigheid te wekken.
Met de machinetaal had dat namelijk niets te maken. De machinetaal is niets anders dan de kunst van de computer om te constateren of er een schakelaartje in een verbinding aan staat of uit. Voor onze menselijke hersenen is dat echter geen werkbare methode. Dus geven we die twee toestanden aan met een eentje en een nulletje. 1 is schakelaartje aan, 0 is schakelaartje uit. Die eentjes en nulletjes noemen we bits. Ze vormen het binaire, of tweetallige stelsel.
Alweer, voor ons, die zo gewend zijn om in het tientallige stelsel te rekenen, is het een hele toer om om te schakelen op een tweetallig stelsel. Toch is het niet zo moeilijk als het lijkt. In het tientallige stelsel gebruiken we negen cijfers plus een nul. Met die nul schuiven we een cijfer één positie naar links waardoor de getalswaarde ervan vertienvoudigd wordt. Dat begrijpen we allemaal, nietwaar?
Welnu, bij het tweetallige stelsel gebeurt exact hetzelfde. Alleen, daar hebben we slechts één cijfer plus een nul. De nul verschuift de één een positie naar links waardoor de 1 de dubbele waarde krijgt. Dus: 1 is één, 10 is twee! 100 is vier; 1000 is acht; 10000 is zestien enzovoort! Misschien begrijp je nu ook waarom een kilobyte geen duizend, maar 1024 bytes is. Ga namelijk maar door met verdubbelen: 16 32 64 128 256 512 1024.
Maar goed, om terug te komen op mijn probleem van jaren geleden, ik was er toen al de man niet naar om het erbij te laten zitten en waagde het erop in de configuratie schermen van WordStar te gaan snuffelen en daar vond ik, onder het kopje "HIGHLIGHTING" drie hexadecimale getallen. Ik besloot die te wissen (na ze wel even genoteerd te hebben) en, .... jawel, hoor! de omgekeerde video was verdwenen.
Maar, ... waar had ik 't nu weer over? Over een hexadecimaal getal. Wa's da'? "hexa" is Grieks voor zes en "decimaal" is Latijn voor tientallig. Het is dus een hybride woord, zoals men dat noemt, dat "zestientallig" betekent. Het probleem was namelijk met dat tweetallige stelsel van eentjes en nulletjes, - de machinetaal dus, - dat de programmeurs van de eerste jaren soms stapelgek werden van die rijen eentjes en nulletjes. En dus bedachten ze een gemakkelijker stelsel, waarmee ze 256 coderingen konden weergeven met slechts twee cijfers en dat werd het hexadecimale. Dat was veel makkelijker te onthouden en te lezen. Ze schreven dus een programma waarmee de computer zelf die hexadecimale getallen kon omzetten in binaire.
Er is ook nog een zogenaamd "octaal" stelsel in gebruik, een achttallig stelsel dus, dat vooral voor calculatie programma's wordt gebruikt.
Het hexadecimale stelsel telt dus: 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f. het getal 10 hexadecimaal komt dus overeen met 16 decimaal. Met andere woorden, een verschuiving naar links verzestienvoudigt de waarde. Dus, 20 hexadecimaal is gelijk aan 32 decimaal en 30 hexadecimaal is 48 decimaal enzovoort. 1b komt overeen met 27 decimaal en sommigen onder de lezertjes weten wellicht dat dat de ASCII waarde voor "Escape" is. Binair wordt dat weergegeven met 11011, niet uitgesproken als "elfduizend elf", maar als één één nul één één. Het zal duidelijk zijn dat dergelijke combinaties van eentjes en nulletjes moeilijker te onthouden zijn dan hexadecimale getallen en, tussen twee haakjes, misschien begrijp je nu ook dat als een van de fraaie damesstemmen van het gesproken maandblad NCT het heeft over "tweede" en "derde" dat "twee E" en "drie E" moest zijn, namelijk de hexadecimale getallen overeenkomend met decimaal 46 en 62, en dat zijn respectievelijk de ASCII waarden van de "punt" en van het "groter dan" teken.
Onze brave voorlezers en voorlezeressen van gesproken tijdschriften en boeken geven er regelmatig blijk van ook min of meer computer analfabeet te zijn. Het zij ze vergeven, al wekt het soms wel de lachlust op als iemand ASCII uitspreekt als "A S C twee". Maar de bereidheid en de goede bedoelingen maken dat soort missers wel goed.
Maar goed, die computer heeft dus machinetaal nodig om te kunnen functioneren en de programmeurs vonden het wel wat lastig om direct in machinetaal te programmeren al zijn er nog wel ijverige lieden die dat kunnen. En dus vonden ze andere programmeertalen uit om dit proces te vereenvoudigen. Die zogeheten hogere programmeertalen vereisten echter veel meer werkgeheugen. Tegenwoordig is dat geen probleem meer, maar vóór de 21ste eeuw begon nog wel. Mijn eerste spraakuitvoerprogramma, het PC Talking Program was daarom nog door de blinde Amerikaanse programmeur Clayton Hutchinson gemaakt in machinetaal, waardoor het slechts 12 kilobyte geheugen nodig had en toch alle nodige functies kon uitvoeren. Programma's als het huidige JAWS FOR WINDOWS vereisen minstens het tienvoudige tot honderdvoudige aan megabyte aan werkgeheugen en aangezien er tegelijkertijd ook een aantal andere programma's moet kunnen draaien is een werkgeheugen van zelfs gigabytes echt geen luxe meer. Toch denk ik nog wel eens met weemoed terug aan mijn oude homecomputertje met een werkgeheugen van 64 kilobyte en een opslag capaciteit van 360 kilobyte op enkelzijdige floppy disks.
Programma's worden geschreven in programma codes. Er zijn in de loop der jaren diverse programmeertalen ontwikkeld, waarvan sommige alweer verdwenen zijn. Maar heel oude gezien vanaf het tijdpad van de computerontwikkeling zoals Fortran (voor wetenschappelijke en wiskundige programma's) en Kobol (voor administratieve programmatuur) bestaan nog steeds en zijn nog steeds favoriet. De bekendste programmeertaal, die vooral door hobbyisten werd gebruikt, was BASIC, waarvan het huidige Visual BASIC een kleinkind zou kunnen worden genoemd. BASIC programma's konden worden uitgevoerd zonder ze eerst te "compileren". Weer zo'n woord waar je als leek bij met je oren gaat klapperen. Vergelijk het maar met wat een bakker doet: hij maakt deeg en kneedt dat in de vorm van een brood. Vervolgens stopt hij het in de oven om het te bakken. Iets dergelijks gebeurt met computer programma's. De "broncode" is het deeg, dat aangemaakt wordt en in de juiste vorm gekneed. Als dat gebeurd is, laat je er een "compiler" op los, die het in de juiste vorm "bakt" om uitgevoerd te worden. En, omdat de broncode normaal bestaat uit een serie losse modules of procedures moet het allemaal ook nog ge"linkt" worden om een uitvoerbaar programma te worden.
Bij de bakker verdwijnt het deeg en verandert in een brood. Bij computer programma's niet. De broncode blijft bestaan om er, na ontdekking van eventuele "bugs" veranderingen en verbeteringen in aan te brengen. Na dat soort veranderingen krijgt een programma een nieuw, hoger versienummer. Afhankelijk van hoe radicaal die veranderingen zijn, krijgt het een hoger cijfertje achter de komma, of het hoofdcijfer gaat een stapje omhoog. In geval van puur commerciële programmatuur wordt de broncode angstvallig geheim gehouden. Bij LINUX programmatuur is ze verplicht openbaar, zodat iedereen die daar zin in heeft er veranderingen en verbeteringen in aan kan brengen. Als gevolg daarvan dragen duizenden programmeurs van over de hele wereld aan LINUX programmatuur hun steentje bij, met als resultaat het meest stabiele besturingssysteem.
De twee meest gebruikte programmeertalen op dit ogenblik zijn de taal C++ en Visual Basic. Ook PASCAL geniet nog behoorlijke populariteit. Van CLIPPER en d|base - die favoriet waren voor database programma's, hoor je niet zo veel meer. Al dat soort programmeertalen zijn echt niet zo moeilijk te leren. Ze hebben het voordeel boven echte talen, dat ze geen uitzonderingen op hun regels kennen. Leken kijken altijd vol verbazing naar ' n scherm vol programma codering, evenals ze vol bewondering luisteren naar iemand die vloeiend Frans of Spaans spreekt. Maar als 't je interesseert en je hebt de moeite ervoor over, kun je het evengoed leren. Een programmeertaal is, wat dat betreft veel makkelijker dan een levende taal.