# Rekenaarwetenskap

Fundamentele areas van rekenaarwetenskap

Programmeringstaalteorie

Berekeningskompleksiteitsteorie

Kunsmatige intelligensie

Rekenaar argitektuur

**Rekenaarwetenskap** is die studie van berekening en inligtingverwerking, asook die implementering daarvan in inligtingstegnologie, in beide hardeware (apparatuur) en sagteware (programmatuur). In die praktyk omvat dit 'n wye aantal velde – van die abstrakte studie van algoritmes, en formele grammatikas tot meer konkrete onderwerpe soos programmeertale, bedryfstelsels, rekenaarnetwerke, databasisse en beheerstelsels. As 'n wetenskaplike dissipline, sluit dit aan by wiskunde, fisika en elektronika, maar verskil heelwat en is 'n dissipline in eie reg.

Rekenaarwetenskaplikes bestudeer wat programme kan of nie kan doen nie (onderwerpe soos berekenbaarheid en kunsmatige intelligensie is ter sprake), hoe programme sekere take effektief kan doen, hoe programme verskillende tipes inligting moet stoor en terugkry, en hoe programme en mense met mekaar kommunikeer.

*Rekenaarwetenskap gaan net so veel oor rekenaars as wat sterrekunde oor teleskope gaan.*
– toegeskryf aan Edsger Dijkstra
*Rekenaarwetenskap is nie so oud soos fisika nie; dit kom 'n paar honderd jaar agterna. Dit beteken egter nie dat daar aansienlik minder op die rekenaarwetenskaplike se bord is as op die fisikus s'n nie: jonger mag dit wees, maar dit het 'n baie meer intense opvoeding gehad!*
– Richard Feynman
Die Church-Turing-stelling sê dat alle bekende algemene rekentoestelle in wese ekwivalent is in wat hulle doen, alhoewel hulle verskil wat tyd- en ruimtedoeltreffendheid betref. Meeste navorsing in rekenaarwetenskap het te make met von Neumann-rekenaars of Turing-masjiene (rekenaars wat een klein, toegewyde taak op 'n slag uitvoer). Hierdie modelle stem ooreen met meeste werklike rekenaars wat vandag gebruik word. Rekenaarwetenskaplikes bestudeer ook ander masjiene, soos parallelle- en kwantumrekenaars.

Rekenaarwetenskap het sy wortels in elektroniese ingenieurswese, wiskunde en linguistiek. In die laaste paar dekades van die 20ste eeu is rekenaarwetenskap erken as 'n dissipline in eie reg en het dit sy eie metodes en terminologie ontwikkel.

By universiteite is rekenaarwetenskap aanvanklik gedoseer vanuit die wiskundedepartemente, maar deesdae het meeste universiteite aparte departemente vir rekenaarwetenskap en/of informatika.

Die grootste eerbewys in rekenaarwetenskap is die Turing-toekenning.

## Verwante terreine

Rekenaarwetenskap is naverwant aan verskeie ander wetenskapdissiplines. Hierdie dissiplines oorvleuel heelwat, alhoewel daar ook belangrike verskille bestaan.

* Inligtingswetenskap is die studie van data en inligting, hoe om dit te interpreteer, analiseer, stoor en oor te dra. Inligtingswetenskap het begin as die grondslag van die wetenskaplike analise van kommunikasie en databasisse.
* Programmering beklemtoon die ontwerp en skryf van programme in rekenaartale en vertaling na masjienkode.
* Sagteware-ingenieurswese beklemtoon bestuur van analise, ontwerp, bou en toets van programme.
* Inligtingstelsels is die toepassing van berekening om die aktiwiteite van 'n organisasie te ondersteun: werking, installering en onderhoud van die rekenaars, sagteware en data.
* Bestuursinligtingstelsels (BIS) is die subterrein van inligtingstelsels wat finansiële en personeelbestuur beklemtoon.
* Wiskunde deel baie tegnieke en onderwerpe met rekenaarwetenskap, maar is meer algemeen. In 'n sekere sin is rekenaarwetenskap die wiskunde van berekening.
* Rekenaaringenieurswese is die analise, ontwerp en bou van rekenaarhardeware.
* Inligtingsekerheid is die analise en inwerkingstelling van inligtingstelselsekuriteit, insluitend kriptografie.

## Vakgebiede van groot belang vir rekenaarwetenskap

### Wiskundige fondasies

* Boolse algebra
* Diskrete wiskunde
* Grafiekteorie
* Inligtingsteorie
* Simboliese logika
* Waarskynlikheidsleer en Statistiek

### Teoretiese rekenaarwetenskap

* Algoritmiese inligtingsteorie
* Berekenbaarheid
* Kriptografie
* Formele semantiek
* Teorie van berekening
	+ analise van algoritmes en probleme se kompleksiteit
	+ Logikas en die betekenis van programme
	+ Logika en formele tale
* Tiperingsteorie

### Hardeware

(sien ook elektroniese ingenieurswese)

* Beheerstrukture en mikroprogrammering
* Geheuestrukture
* Afvoer en datakommunikasie
* Logika-ontwerp
* Geïntegreerde stroombane
	+ Grootskaalintegrasie-ontwerp
* Werkverrigting en betroubaarheid

### Rekenaarstelsel organisasie

(sien ook elektroniese ingenieurswese)

* Rekenaarargitektuur
* Rekenaarnetwerke
	+ Verspreide verwerking
* Werkverrigting van stelsels
* Rekenaarstelselinwerkingstelling

### Sagteware

* Rekenaarprogrammering en tegnieke
	+ Parallele programmering
	+ Programspesifisering
	+ Programverifikasie
* Sagteware-ingenieurswese
	+ Sagteware-optimering
	+ Sagteware-meting
	+ Sagtewarekonfigurasiebestuur
	+ Gestruktureerde programmering
	+ Objekoriëntasie
	+ Ontwerpspatrone
	+ Vrye sagteware en oopbronsagteware
* Programmeertale
* Bedryfstelsels
* Vertalers
	+ Leksikale ontleding
	+ Sintaktiese ontleding
	+ Semantiese ontleding

### Data en inligtingstelsels

* Datastrukture
* Datavoorstelling
* Data-enkripsie
* Datasamepersing
* Inligtingsteorie
* Lêers
	+ Lêerformate
* Inligtingstelsels
	+ Databasisse
	+ Inligtingberging en verkryging
	+ Inligtingkoppelvlakke en voorstelling

### Metodologieë

* Simboliese en algabraïse manipulasie
* Kunsmatige intelligensie
* Rekenaargrafika
* Beeldverwerking en rekenaarsig
* Patroonherkenning
	+ Handskrifherkenning
	+ Spraakherkenning
* Simulasie en modellering
* Dokument- en teksverwerking
* Digitale seinverwerking
* Neuromorfiese rekenaarverwerking

### Rekenaartoepassings

* Administratiewe dataverwerking
* Wiskundige sagteware
	+ Numeriese analise
	+ Geoutomatiseerde stellingbewyse
	+ Rekenaaralgebra
* Fisiese wetenskappe en Ingenieurswese
	+ Berekeningschemie
	+ Berekeningsfisika
* Lewens- en mediese wetenskap
	+ Bio-informatika
	+ Berekeningsbiologie
	+ Mediese informatika
* Sosiale en gedragswetenskappe
* Geesteswetenskappe
* Rekenaargesteunde ingenieurswese
* Robotika
* Mens-rekenaar-interaksie
	+ Spraaksintese
	+ Bruikbaarheidsingenieurswese

### Rekenaarmilieu

* Rekenaarindustrie
* Geskiedenis van rekenaarhardeware
* Rekenaars en opvoeding
* Rekenaars en die gemeenskap
	+ Rekenaargesteunde samewerking
* Regsaspekte van rekenaargebruik
* Bestuur van rekenaar- en inligtingstelsels
* Persoonlike rekenaars
* Rekenaar- en inligtingsekerheid

## Rekenaarwetenskap-pioniers

* Gottfried Wilhelm Leibniz, die universele genie van die baroktyd, wat die binêre stelsel uitgevind het, die Leibnizrekenaar Geargiveer 17 Februarie 2008 op Wayback Machine – alhoewel hy destyds nie eens geweet het waarvoor mens dit kan gebruik nie, maar besef het dat dit baie nuttig sal kan wees. Daar is ook 'n boek oor hom geskryf, 'Rekene met nul en een', (Duits: *Rechnen mit Null und Eins*).
* Charles Babbage. Hy het verskeie meganiese optelmasjiene en een meganiese programmeerbare rekenaar ontwerp, maar nooit sy planne tot uitvoer gebring nie.
* John Backus, uitvinder van FORTRAN, die eerste praktiese hoërvlakprogrammeertaal en die Backus-Naur-vorm om formele taaksintaks mee te beskryf.
* James W. Cooley en John W. Tukey vir die Vinnige Fourier-transform en die impak daarvan op wetenskaplike navorsing.
* Ole-Johan Dahl en Kristen Nygaard, uitvinders van die proto-objekgeoriënteerde taal SIMULA.
* Edsger Dijkstra vir algoritmes, *Goto considered harmful*, nougesetheid en pedagogiek.
* Admiraal Grace Murray Hopper vir pionierswerk in die 1940's, een van die eerstes wat die noodsaaklikheid van hoërvlakprogrammeertale herken. Sy skryf die eerste vertaler. Haar idees beïnvloed die COBOL-taal grootliks.
* Kenneth Iverson, uitvinder van APL, vir sy bydrae tot interaktiewe programmering.
* William Kahan vir die IEEE-dryfpuntstandaard.
* Donald Knuth vir die *The Art of Computer Programming*-reeks.
* Ada Lovelace, beroemd as die wêreld se eerste rekenaarprogrammeerder.
* John von Neumann vir die ontwerp van die von Neumann-argitektuur waarop meeste hedendaagse rekenaars gebaseer is.
* Claude E. Shannon vir inligtingsteorie.
* Alan Turing vir berekenbaarheidsleer, het ook die Pilot ACE ontwerp.
* James H. Wilkinson vir die tegniek van *"terugwaartse foutanalise"* en vooruitgang op die gebied van matriksberekeninge. Wilkinson was ook 'n belangrike rolspeler in die ontwikkeling van die Pilot ACE, die eerste Britse rekenaar, in die laat 1940's.
* Konrad Zuse, bouer van 'n binêre rekenaar in die 1930's, waarvoor hy na bewering (as eerste) 'n teoretiese hoërvlakprogrammeertaal, Plankalkül, ontwerp het.

## Sien ook

* Internet
* Neromorfiese rekenaarverrekening

## Eksterne skakels

* Die "Jargon-lêer"
* *Women and Computer Science*, deur Ellen Spertus