Computerpioniers: George Boole
Computers spreken geen mensentaal. Om een computer iets duidelijk te maken moeten de opdrachten en informatie gecodeerd worden in een taal die de computer wel begrijpt: nullen en enen. Ofwel: wél of juist geen stroompje. George Boole leverde met zijn booleaanse logica een belangrijke bouwsteen voor onze hedendaagse computers.
George Boole
In 1815 werd te Lincoln (Verenigd Koninkrijk) George Boole geboren, zoon van John Boole.
De jonge George kreeg aanvankelijk van zijn vader les. Aanvankelijk was hij vooral geïnteresseerd in de klassieken. Dat veranderde op het moment toen hij in Lincoln een nieuwe school stichtte. Deze school verhuisde en in 1849 werd Boole aangesteld als hoogleraar wiskunde. Zijn wiskundig talent kwam volop tot ontwikkeling.
Publicaties
Boole publiceerde vanaf 1840 een aantal artikelen over wiskundige onderwerpen. Daarnaast schreef hij enkele systematische verhandelingen:
- Treatise on Differential Equations (Verhandeling over Differentiaalvergelijkingen) 1859
- Treatise on the Calculus of Finite Differences (Verhandeling over de Analyse van eindige verschillen) 1860, een vervolg op het eerste werk.
Beide waren waardevolle bijdragen aan de desbetreffende takken van de wiskunde.
Logica
Boole hield zich ook bezig met het symbolisch redeneren. Hij analyseerde de manier van redeneren en publiceerde in 1847 zijn bevindingen in een pamflet met de titel
Mathematical Analysis of Logic. Hierin formuleerde hij een algebra, die op logische principes was gebouwd. Deze bleek precies te kloppen voor de schakelingen in de latere computers. Boole bouwde voort op het werk van
Gottfried Wilhelm von Leibnitz, en ging uit van het tweetallig stelsel. In het tweetallig stelsel worden alleen de cijfers
0 en
1 gebruikt om getallen te vormen. Achteraf vond Boole dat het werk nog te oppervlakkig was, te overhaast en nog met teveel fouten. Hij schreef een verder uitgewerkte versie waarin hij zijn logische systeem verder en uitgebreider uit de doeken zou doen:
An Investigation of the Laws of Thought, on Which are Founded the Mathematical Theories of Logic an Probalitities (1854). Inderdaad, een erg lange titel.
Logische verbindingen
Aan het tweetallig stelsel voegde Boole logische verbindingen toe: EN, OF, NIET. (AND, OR, NOT). Door uitspraken te combineren middels zo'n logische verbinding konden conclusies worden getrokken. Voorbeeld:
Een voetbal is bolvormig.
EN
Bolvormige voorwerpen zijn rond.
Conclusie: Een voetbal is rond.
Boole en computers
Het werk van Boole bleef bij het grote publiek onbekend. Alleen diegenen die zich met de logica hadden beziggehouden kenden zijn werk. Ongeveer zeventig jaar na het overlijden van Boole, was
Claude Shannon aanwezig bij een filosofiecollege, waar aandacht werd besteed aan logica, en dus aan het werk van Boole. Shannon begreep dat de Booleaanse algebra belangrijk was voor de verdere ontwikkeling van elektromagnetische systemen. Dit zou de basis vormen van alle huidige digitale computers.
Schakelingen
Het bleek dat de logische, Booleaanse wiskunde precies paste bij de schakelingen in computers. In het tweetallig stelsel, waarbij
1 de betekenis
waar heeft, en
0 de betekenis
niet-waar, konden elektronische schakelaars als volg resultaten geven:
- Een schakelaar met een EN-functie (AND) laat een stroompje door, als beide ingangen de waarde 1 hebben. Ofwel: als via beide ingangen een stroompje binnenkomt.
- Een schakelaar met een OF-functie (OR) laat een stroompje door, als één van beide ingangen de waarde 1 heeft. Ofwel: via één van beide ingangen komt stroompje binnen. De OF-functie geeft dus ook een stroompje als op beide ingangen de waarde 1 staat, dus via beide kanten een stroompje binnenkomt.
- Een schakelaar met een NIET-functie (NOT) laat een stroompje door als beide ingangen de waarde 0 hebben. Ofwel: via beide ingangen komt géén stroompje binnen.
- Toegevoegd is de XOR-functie (Of de een, of de ander, maar niet beide). Deze geeft een stroompje als één van de ingangen de waarde 1 heeft, dus een stroompje levert, en de andere kant niet en dus de waarde 0 heeft.
In een tabel:
Zin-A | Zin-B | Functie (operator) | Resultaat |
Waar (1) | Waar (1) | AND | Waar (1) |
Waar (1) | Niet waar (0) | AND | Niet waar (0) |
Niet waar (0) | Niet waar (0) | AND | Niet waar (0) |
Waar (1) | Waar (1) | OR | Waar (1) |
Waar (1) | Niet waar (0) | OR | Waar (1) |
Niet waar (0) | Waar (1) | OR | Waar (1) |
Niet waar (0) | Niet waar (0) | OR | Niet waar (0) |
Waar (1) | Waar (1) | NOT | Niet waar (0) |
Waar (1) | Niet waar (0) | NOT | Niet waar (0) |
Niet waar (0) | Waar (1) | NOT | Niet waar (0) |
Niet waar (0) | Niet waar (0) | NOT | Waar (1) |
Waar (1) | Waar (1) | XOR | Niet waar (0) |
Waar (1) | Niet waar (0) | XOR | Waar (1) |
Niet waar (0) | Waar (1) | XOR | Waar (1) |
Niet waar (0) | Niet waar (0) | XOR | Niet waar (0) |
Lees de eerste tegel van de tabel als volgt:
Als
zin-A waar is (waarde 1, dus stroompje)
AND zin-B is waar (waarde 1, dus stroompje) DAN is het
resultaat waar (waarde 1).
De overige regels worden overeenkomstig gelezen.
Nagedachtenis
Onze huidige computers zijn gebouwd met een systeem dat is gebaseerd op de logica in de Booleaanse algebra. In de meeste programmeertalen is een variabele naar Boole genoemd: de
boolean. Deze variabele kan de waarde
1 of
0 bevatten (of:
Ja – Nee,
True – False, etc)