Artikel van Automatisering Gids: "Vrouwen programmeren beter"
Programmeertalen worden wel ingedeeld in vijf hoofdcategorieën. Deze indeling geeft niet alleen de chronologische volgorde weer, maar ook een toenemende gebruikersvriendelijkheid. We onderscheiden:
Machinecode Assembleertalen Hogere programmeertalen Vierde-generatietalen Objectgeoriënteerde talen Hoewel de eerste twee categorieën vandaag de dag voor de gemiddelde gebruiker geen grote rol spelen omdat ze voor hem verborgen blijven, gaan we hier toch even op in.
De kleinste geheugeneenheid is de bit. Een bit is een binair getal (binary digit), dat twee waarden kan hebben: 0 of 1. Alles in het interne geheugen, maar ook op externe geheugenmedia, wordt binair vastgelegd. Dit betekent dus dat ook een programma in binaire vorm wordt opgeslagen. Dit noemen we de machinecode. Elk type processor heeft een eigen manier, de instructieset, om de machinecode te lezen.
De allereerste computers werden in machinecode geprogrammeerd. Het bedieningspaneel van de computer bevatte een lange reeks schakelaars. De programmeur voerde de opdracht in door de juiste schakelaars omhoog of omlaag (dat is een 1 of een 0) te zetten, waarna de opdracht in het geheugen werd opgeslagen. Dat was eentonig werk, waarbij bovendien gemakkelijk fouten werden gemaakt.
De bedieningspanelen van de ENIAC.
In die begintijd stelde een programma weinig voor, de programmas waren nog niet zo omvangrijk. Bovendien waren ze sterk gekoppeld aan de computer waarvoor ze waren geschreven. Een programmeur was al apetrots als hij de computer zo in kon stellen dat die de vierkantswortel van een getal van vijf cijfers ging berekenen
Machinetalen zijn programmeertalen van de eerste generatie. Ze worden tot de lagere programmeertalen gerekend. Lager wil in dit geval zeggen: dicht bij de processor.
Een opdracht in machinetaal om twee getallen op te tellen, kan als volgt luiden:
Veel informatie over assembler: webster.cs.ucr.edu
Ook assembleertaal is een lagere programmeertaal. Het verschil met machinecode is dat er gebruik wordt gemaakt van gemakkelijker te onthouden lettercodes in plaats van nullen en enen. Een speciaal vertaalprogramma, assembleerprogramma genaamd, dient dan om de lettercodes om te zetten in machine-instructies. Dat blijft onder alle omstandigheden nodig, want uiteindelijk is dat voor een computer de enige verstaanbare taal.
Overigens is gemakkelijker te onthouden maar betrekkelijk. Je moet denken aan combinaties die uit enkele letters bestaan, bijvoorbeeld:
LIR zou kunnen staan voor load into register (haal waarde vanuit het geheugen in het rekenregister), AC voor add constant (tel constante op) PIM voor put into memory (zet inhoud van rekenregister op een geheugenplaats) Een voorbeeld van programmacode in assembler.
Een opdracht in assembleertaal om twee getallen op te tellen, kan als volgt luiden:
LOD Y ADD Z STR X
Geheugenplaatsen Een bijkomend voordeel voor de programmeur is dat hij niet langer geheugenplaatsen hoeft bij te houden. Het vertaalprogramma regelt de plaatsing van de variabele in het geheugen. De programmeur hoeft alleen maar de naam te noemen en niet het nummer van de geheugenplaats.
Assembleertaal is een taal van de tweede generatie. Ondanks het feit dat assembleertaal verder van de processor af staat dan machinetaal, spreken we nog wel van een machinegeoriënteerde taal.
Het schrijven van programmas in assembleertaal is een zeer tijdrovende aangelegenheid, die meestal lange, onoverzichtelijke programmas oplevert. Er wordt daarom alleen gebruik gemaakt van een assembleertaal als het programma afgestemd moet worden op de specifieke kenmerken van een processor, bijvoorbeeld in embedded systems. Je moet dan denken aan de processors (microcontrollers) in apparaten als koffieautomaten en thermostaten. Dit is een veelvoorkomende toepassing van een assembleertaal.
De volgende grote stap in de ontwikkeling van programmeertalen werd gezet toen het mogelijk werd om verschillende machinetaalopdrachten te combineren in één programmaopdracht. Deze programmaopdracht benadert al veel meer de menselijke taal dan assembleertaal.
Bij hogere programmeertalen programmeertalen van de derde generatie hoeft de programmeur geen kennis te hebben van de eigenschappen van de processor. De programmeur schrijft stapsgewijs de procedure (regels) voor die de computer moet volgen om het programma uit te voeren. We spreken daarom ook wel van procedurele talen.
Ook bij deze hogere programmeertalen worden de instructies uiteindelijk weer vertaald naar machinecode. Hiervoor dient een speciaal vertaalprogramma, compiler geheten.
Compiler Een compiler is kort gezegd een vertaalprogramma dat de programmaregels (de zogeheten sourcecode of broncode) omzet in machine-instructies (de objectcode of doelcode).
De programmaopdrachten in een programmeertaal van de derde generatie zijn machine-onafhankelijk. In het ideale geval kan dezelfde broncode zonder aanpassingen worden gebruikt op een computer met een andere processor. De compilers voor de desbetreffende taal zijn wél machine-afhankelijk. Ze zetten de broncode om in opdrachten voor een bepaalde processor of een bepaald besturingssysteem.
Voorbeelden Er zijn tientallen derde-generatietalen. Ze werden vaak ontwikkeld voor een bepaald toepassingsgebied. De bekendste zijn:
Artikel van Computable: "Cobol is nog lang niet afgeschreven"
FORTRAN, ontwikkeld voor technische en wetenschappelijke publicaties.
COBOL, vroeger een populaire programmeertaal voor administratieve toepassingen. In de bank- en verzekeringswereld zijn overigens nog steeds veel COBOL-programmas in gebruik.
C, een nog altijd veelgebruikte taal voor het ontwikkelen van systeem- en applicatiesoftware; het besturingssysteem UNIX is ontwikkeld in C.
Pascal, een taal die helpt bij het ontwikkelen van goed gestructureerde programmas. Een voorbeeld van een statement in Pascal.
De opdracht in COBOL om twee getallen op te tellen, luidt:
In talen van de vierde generatie (4GL) worden de programmaopdrachten steeds krachtiger. De meeste talen van deze generatie zijn niet-procedureel; ze zijn eerder probleemgericht. Dit wil zeggen dat de programmeur moet aangeven welk doel hij voor ogen heeft en dat de computer daarbij bepaalt welke reeks instructies daarvoor nodig zijn. Deze talen zijn weer een stap verder verwijderd van de computer.
De hoge verwachtingen die men had van vierde-generatietalen zijn niet uitgekomen. Een algemeen toepasbare vierde-generatietaal levert onhandelbaar grote programmas op, omdat de software veel ballast bevat. De vierde-generatiesoftware die het programma maakt, begrijpt natuurlijk niet echt wat er moet gebeuren en neemt voor de zekerheid allerlei opdrachten en voorzieningen op. Een menselijke programmeur zou een meer afgewogen keuze maken.
Hulpmiddelen Om deze reden beperkt men zich liever tot vierde-generatiehulpmiddelen. Met deze hulpmiddelen (Engels: tools) kan men snel een toepassing of een bepaald gedeelte van een toepassing genereren. Een voorbeeld van zon hulpmiddel is een schermgenerator, waarmee op eenvoudige wijze de layout van invulschermen kan worden bepaald. Verder zijn er rapportgeneratoren, waarmee men aan de hand van gegevens uit een database snel een overzicht kan produceren.
Ook macros die in applicaties als Microsoft Word en Excel gemaakt kunnen worden en vraagtalen alsSQL worden tot de vierde-generatiehulpmiddelen gerekend.
Met SQL kun je onder meer gericht selecties maken in een database.
Artikel van Infoworld: "25 fatale programmeerfouten"
Procedurele talen Programmas die geschreven worden in procedurele talen (van de derde generatie), zoals Pascal, voeren bewerkingen uit op afzonderlijke gegevens. Het komt regelmatig voor dat in programmas bepaalde handelingen op meerdere plaatsen uitgevoerd moeten worden, bijvoorbeeld het sorteren van getallen. Voor die handelingen kunnen aparte programmaatjes worden gemaakt: procedures.
Doordat in een programma naar een procedure kan worden verwezen, is het niet nodig om de afzonderlijke opdrachten telkens opnieuw uit te schrijven. Omvangrijke programmas blijven door het gebruik van procedures dus veel overzichtelijker.
OO-talen Objectoriëntatie, vaak afgekort tot OO, is een techniek die voortbouwt op de techniek van het werken met procedures. Bij OO wordt uitgegaan van de gegevens als kern. De verschillende verschijningsvormen van het gegeven worden eraan gekoppeld; deze zijn afhankelijk van het gebruik (het proces). De processen worden in gang gezet naar aanleiding van boodschappen van andere objecten. Zo ontstaat een object, waarin gegevens en bijbehorende instructies zijn samengevoegd.
Voor het gebruik van een object in een programma hoeft een programmeur niet te weten hoe het object werkt. Bij gebruik van het object hoeft hij alleen de rol te kennen die het object binnen het programma kan spelen. Binnen het programma functioneert het object als een soort black box. Veel meer dan bij de procedurele software-ontwikkeling wordt een programma dus beschouwd als samenhangende zelfstandige eenheden.
Een voorbeeld van het object leerling met een aantal methoden.
Een beschrijving van de OO-techniek wordt algauw tamelijk abstract. We zullen proberen de theorie met een voorbeeld te verduidelijken.
Voorbeeld:leerlingenadministratie Neem de leerlingenadministratie van een school eens in gedachten. Daar werkt men met zaken als vak, docent, leerling, les en toets. De administratie beschikt per leerling over een aantal gegevens:
naam adres geboortedatum rapportcijfers, enzovoort Bovendien voert de administratie regelmatig bewerkingen op de leerlinggegevens uit: de namen moeten afgedrukt worden, de adresgegevens moeten gewijzigd kunnen worden, enzovoort. Objecten bestaan uit een set gegevens (naam, adres, geboortedatum) en een serie handelingen die op de gegevens uitgevoerd kunnen worden. Dit is dus de hiervoor besproken combinatie van data en bijbehorende instructies.
In de terminologie van OO spreken we over methoden (methods) in plaats van over handelingen.
Voordelen
Als voordelen van objectoriëntatie kunnen we noemen:
snellere ontwikkelingstijd door hergebruik van programmamodules; minder fouten in programmacode; betere onderhoudbaarheid van programmas doordat duidelijker is wat elk deel van de software doet; betere uitwisselingsmogelijkheden als gevolg van vastgestelde standaards.
Problemen
Helaas verloopt de ontwikkeling van objectgeoriënteerde programmas in de praktijk niet zonder problemen. Een paar belangrijke hindernissen bij de ontwikkeling van dit soort programmas zijn:
Omzetten is moeilijk De praktische onmogelijkheid om procedurele programmas om te zetten naar OO-programmas. Dit betekent dat veel programmas opnieuw geschreven zouden moeten worden in een objectgeoriënteerde versie. Omdat er nog zeer veel programmas in omloop zijn die zijn geschreven in procedurele talen, zou het verwijderen van deze programmas een enorme kapitaalvernietiging betekenen.
Tekort aan programmeurs De geringe beschikbaarheid van programmeurs met voldoende OO-kennis.
Sun Developer Network: java.sun.com Tekort aan hulpmiddelen Het ontbreken van voldoende hulpmiddelen die programmeurs kunnen ondersteunen bij hun werk. Bovendien is er lange tijd geen geschikte systeemontwikkelingsmethodiek voorhanden geweest. Zonder deze methodiek is het heel lastig om complexe programmas te maken. Met de komst van Java zijn enkele van deze knelpunten opgelost. Sinds de introductie van Java (in 1995) heeft de ontwikkeling van objectgeoriënteerde programmas dan ook een duidelijke impuls gekregen. Bij grote softwarehuizen zien we de laatste tijd een toename in de ontwikkeling van OO-softwareprojecten voor commerciële doeleinden.
Tot op heden is de klassieke programmatuur (geschreven in COBOL, Pascal, en dergelijke) in omvang nog steeds in de meerderheid. Dit heeft mede te maken met de verrassende vitaliteit van sommige oude talen als COBOL. Van COBOL is overigens ook een OO-versie verschenen.
In het dagelijks leven komen we objecten in allerlei vormen tegen. Een huis, een stofzuiger, een school en een auto zijn voorbeelden van objecten. Ook meer abstracte zaken zoals verslagen, rekeningen, onderdelen van een gebruikersinterface (bijvoorbeeld vensters, knoppen, pictogrammen en menus bij Windows) zijn objecten. Hierbij vormen samenhangende gegevens én de opdrachten die erop uitgevoerd worden, een onlosmakelijk geheel.
Het gebruik van objecten in een programma heeft als voordeel dat het niet nodig is om te weten hoe het object technisch in elkaar zit. Het is alleen van belang om te weten hoe het object gebruikt moet worden. Objecten zijn te onderscheiden op basis van eigenschappen, bij OO noemt men die eigenschappen attributen.
Voorbeeld: auto attributen van het object Auto kunnen zijn:
het hebben van wielen bestuurbaar zijn merk type kleur bouwjaar cataloguswaarde
Klassen
Een object is altijd een vertegenwoordiger van een klasse; klassen zijn rechtstreeks verbonden aan objecten. Men zegt wel dat een object een instantie van een klasse is. In de klasse wordt een lijst beschreven van alle attributen en methoden van het object.
Voorbeeld: auto We hebben daarnet een auto een object genoemd. Er zijn diverse typen autos:
stationwagens cabrios SUVs bestelwagens, enzovoort Alle bestelwagens behoren tot de klasse van autos. Een klasse bestaat dus uit objecten met een aantal gemeenschappelijke attributen. Elke individuele bestelwagen die uit de fabriek komt, is een object van de klasse Auto.
Het is niet altijd gemakkelijk om onderscheid aan te brengen tussen een klasse en een object. Men gebruikt deze begrippen soms door elkaar.
Methoden
Methoden worden gebruikt om te communiceren met andere objecten en met de buitenwereld. De methoden verzorgen het gedrag van het object. Elke methode heeft een unieke naam waarmee deze aangeroepen wordt.
Voorbeeld: auto Methoden bij het object auto kunnen zijn:
verkopen repareren overspuiten
Inkapseling
Onder inkapseling wordt verstaan: het in een object insluiten van alle zaken die het object nodig heeft om te functioneren, in het bijzonder de methoden en de data. Door inkapseling zijn de methoden en de data voor de gebruiker onzichtbaar.
Overerving
Objecten kunnen attributen en/of methoden van andere, vergelijkbare, objecten overnemen; we spreken dan van overerving. Dankzij deze mogelijkheid hoeven niet van alle objecten alle eigenschappen steeds opnieuw beschreven te worden. We zeggen dan wel dat de klasse de attributen van de erboven gelegen klasse erft. Ook methoden kunnen geërfd worden.
Voorbeeld: auto Een klasse Bestelwagen kent grotendeels dezelfde attributen als de klasse Auto. Immers, ook bij elke bestelwagen is er sprake van Merk, Type, Kleur, Bouwjaar, Cataloguswaarde.
C C is zoals gezegd een derde-generatietaal, een gestructureerde procedurele taal die veel wordt toegepast voor het ontwikkelen van besturingssystemen en applicatiesoftware. C wordt beschouwd als een erg compacte en efficiënte taal die dicht bij machinecode staat. Dit maakt dat C snel is, maar het is ook foutgevoelig en niet echt gebruikersvriendelijk.
C++ De objectgeoriënteerde opvolger van C is C++. Het draait in C++ om het OO-begrip klasse en om data-hiding. Dit laatste wil zeggen dat een object niets weet van afzonderlijke gegevens, maar uitsluitend uitgaat van klassen. Als deze techniek goed toegepast wordt, levert dit kortere programmas op, die eenvoudiger te doorgronden en te onderhouden zijn.
C++ is in 1980 ontworpen door Bjarne Stroustrup, een medewerker van AT&T. De naam C++ is als een woordspeling bedoeld. In C betekent C++ namelijk dat C vervangen wordt door zijn opvolger, dus C++ wil zeggen dat het om een volgende versie van C gaat.
Artikel van Computerworld: "Java, een blik in de toekomst"
Java is een objectgeoriënteerde programmeertaal, die wel wat overeenkomsten heeft met C++. Het bijzondere van Java is dat het platformonafhankelijk is.
Java is ontwikkeld door de firma Sun en bestaat uit drie onderdelen:
De programmeertaal Java Deze wordt beschouwd als een veelzijdige, overzichtelijke, betrouwbare en zuiver objectgeoriënteerde taal. De taal is gemaakt om op kleine computers te kunnen draaien en wordt dan ook gebruikt in bijvoorbeeld PDAs en mobiele telefoons.
De JDK DeJDK is een uitgebreide bibliotheek van programmacomponenten. Deze maakt Java tot een soort kist vol handige onderdelen waarmee het leuk programmas bouwen is.
De Java Virtual Machine (JVM) Dit is een vertaler die zogeheten bytecode omzet naar een machinetaal die geschikt is voor het platform waarop het Java-programma wordt uitgevoerd. De bytecode draait op alle platforms waarvoor een JVM bestaat. Het laatstgenoemde punt maakt Java wezenlijk anders dan zijn voorgangers. Bij de programmeertalen die voor de komst van Java gebruikt werden, wordt het geschreven programma vertaald naar de machinecode die de computer begrijpt. Daarvoor wordt een vertaalprogramma gebruikt, de al eerder genoemde compiler. Om het programma voor een ander besturingssysteem (een ander platform) geschikt te maken moet het aangepast worden, waarna het opnieuw gecompileerd moet worden.
Sun Developer Network: java.sun.com Bytecode Bij Java vertaalt de compiler naar een vorm die geen machinecode is van een bestaand besturingssysteem, maar naar een tussenliggende vorm, de zogenoemde bytecode. Voor de uitvoering van die bytecode is het vervolgens noodzakelijk die bytecode om te zetten naar de machinetaal van die machine. Dit gebeurt door de Java Virtual Machine (JVM). Deze virtuele machine moet wel speciaal geschreven zijn voor het betreffende besturingssysteem. Dus is er voor elk besturingssysteem een eigen JVM nodig.
Overigens draait Java onder alle populaire 32-bits besturingssystemen en een aantal 64-bits systemen.
De compiler zet een Java-programma om in platformonafhankelijke bytecode.
Hoewel wij de naam Java vooral associëren met een Indonesisch eiland, is de taal genoemd naar de koffie die de ontwikkelaars dronken (en die hen wakker moest houden). Vandaar dat in het logo van Java ook een kopje koffie te zien is
De Delphi-pagina van Codegear (voorheen Borland): www.codegear.com
Delphi is een visuele, objectgeoriënteerde programmeeromgeving van Borland, die gebaseerd is op de taal Pascal. In Delphi vind je alle bijzonderheden van OO programmeren terug.
Je werkt in Delphi in deIDE. De IDE biedt de mogelijkheid om
tekst op te maken; een programma te compileren (omzetten naar machinetaal); een programma te laten uitvoeren; de fouten uit een programma te halen (te debuggen).
Als een programma een fout bevat, spreken we van een bug. Het zoeken naar fouten wordtdebuggen genoemd. Volgens de overlevering werd een van de eerste gemelde fouten in een computerprogramma ook daadwerkelijk veroorzaakt door een insect: tussen de mechanische onderdelen van de computer was een mot terechtgekomen. Daardoor werkte het apparaat niet naar behoren.
Een van de sterke punten van Delphi is deVCL, een bibliotheek met objecten die klaar zijn voor gebruik.
Delphi leent zich goed voor programmeren voor de Windows-omgeving.
Een programmeertaal van Microsoft isVisual Basic.NET. Voorheen heette deze taal Visual Basic, maar vanaf versie 7 van Visual Basic heeft Microsoft gekozen voor een nieuwe naam (2002). VB.NET maakt deel uit van een groter geheel, dat Microsoft het .NET-platform heeft genoemd.
Met VB.NET kun je onder meer applicaties voor de Windows-omgeving schrijven. De gebruikersinterface staat daarbij centraal. Deze wordt ontworpen met alle voorzieningen die kenmerkend zijn voor Windows-applicaties, zoals:
knoppen dialoogvensters keuzemenus selectievakjes Daarna wordt de bijbehorende programmacode eraan verbonden. Ook het schrijven van webapplicaties behoort tot de mogelijkheden.
Platformonafhankelijk VB.NET heeft meer kenmerken van objectoriëntatie dan zijn voorganger: in Visual Basic was bijvoorbeeld de mogelijkheid van overerving nog niet ingebouwd, in VB.NET wel. Het maakt bij het compileren van de programmacode gebruik van een tussentaal, vergelijkbaar met de bytecode van Java. Dit maakt dat .NET evenals Java platformonafhankelijk is.
VBA De populaire Office-pakketten bevatten een vereenvoudigde versie van VB.NET, dieVBA wordt genoemd. Hiermee kun je niet alleen macros voor de betreffende programmas ontwikkelen, maar ook volwaardige programmas.
Een macro is een programmaatje waarmee bepaalde handelingen in een toepassingspakket geautomatiseerd kunnen worden. Een macro bestaat net als elk programma uit een reeks instructies.
De klassieke programmeertalen schieten over het algemeen tekort op het gebied van webapplicaties. De opkomst van het web heeft dan ook een aantal nieuwe en vernieuwde talen opgeleverd, die in deze paragraaf ter sprake komen. Bij de indeling van deze talen speelt het client/server-model een rol.
Toegepast op het internet bestaat het client/server-model uit verschillende componenten:
De client is de computer van de surfer, waarop een browser draait. Via dit programma bezoekt de surfer websites, bijvoorbeeld door de URL in de adresbalk te typen of op hyperlinks te klikken. De aanvraag voor een webpagina wordt verzonden naar een server waarop de website opgeslagen is. De server stuurt de gevraagde pagina naar de client. Populaire sites zoals Google en MSN kunnen duizenden clients per seconde bedienen. Een schematisch voorstel van het client/server-model: de clients doen een aanvraag voor een webpagina bij een server; de server verzendt de gevraagde pagina via internet.
Zowel voor de server als voor de client zijn programmeertalen ontwikkeld.
De client-sided programmeertalen worden uitgevoerd op de computer van de gebruiker. De server-sided talen worden uitgevoerd op de server die de websites bevat.
HTML dient voor het beschrijven van de structuur van webpaginas. Als je HTML gebruikt, plaats je besturingscodes in teksten en daarmee geef je aan hoe die tekst door een browser afgebeeld moet worden op het beeldscherm. Deze codes zelf, tags genaamd, beeldt de browser natuurlijk niet af.
Er zijn talloze verschillende codes, bijvoorbeeld voor het vet, cursief en onderstreept maken van tekst, voor het maken van grote en minder grote koppen, voor het opnemen van afbeeldingen, voor het kiezen van kleuren, noem maar op. De codes staan tussen punthaken: < en >. Over het algemeen bestaan ze uit een begin- en een eindcode, bijvoorbeeld:
<h1> om een hoofdkop aan te geven </h1> om het einde van deze kop aan te geven De browser geeft koppen van niveau 1 in grote en vette letters weer.
De opmaak van de webpagina wordt verzorgd door zogeheten stylesheets; HTML brengt structuur aan in het document.
Een van de belangrijkste kenmerken van HTML is de mogelijkheid om documenten aan elkaar te koppelen via hyperlinks. Met behulp van HTML geef je hyperlinks de juiste code, zodat ze ook daadwerkelijk fungeren zoals ze bedoeld zijn.
Het is niet zo heel moeilijk om HTML te leren (zeker niet als je het vergelijkt met het leren van een echte programmeertaal), maar het wordt steeds minder noodzakelijk om deze taal te beheersen. Er verschijnen namelijk steeds meer programmas waarmee je op een eenvoudige wijze webpaginas ontwerpt.
HTML-code:
Webpagina:
Voorbeeld van een stukje HTML-code met de resulterende webpagina.
In HTML kun je kleine Java-programmas opnemen, die applets worden genoemd. Applets draaien op de client.
XHTML XHTML is een nieuwere variant van HTML, die striktere eisen aan de codering stelt dan HTML. Zo is het bij voorbeeld verplicht dat alle tags worden afgesloten. Hierdoor kan er bij het afbeelden van webpaginas minder fout gaan.
(X)HTML werkt samen met een techniek dieCSS wordt genoemd. Via CSS is de opmaak van webpaginas zeer nauwkeurig in te stellen.
JavaScript is ontwikkeld door onder meer Netscape Communications Corporation. Het is een opdrachttaal die fungeert als uitbreiding op HTML: er kunnen opdrachtregels aan een webpagina mee worden toegevoegd. De browser interpreteert de JavaScript-opdrachten als de pagina op het scherm geplaatst wordt.
Java en JavaScript worden nogal eens door elkaar gehaald. Het grootste verschil tussen beide talen is dat Java een volwaardige programmeertaal is, terwijl JavaScript is bedoeld als uitbreiding op HTML. JavaScript is eenvoudiger, maar daardoor ook beperkter: het wordt uitsluitend toegepast voor webapplicaties. De toepassingsmogelijkheden van Java zijn veel breder. Je kunt er bijvoorbeeld complete tekstverwerkers in programmeren.
In tegenstelling tot Java is JavaScript geen volledige programmeertaal. De opdrachten zijn beperkt tot de objecten van de webbrowser. Met JavaScript kan een ontwerper webpaginas meer interactiviteit geven. Via het script kan hij reageren op eigenschappen van de browser en de computeromgeving.
Event De gebruiker voert een bepaalde handeling uit: hij tikt gegevens in, kiest een mogelijkheid uit een menu, klikt op een knop of vult een veld in, waarna JavaScript-opdrachten voor een passende reactie zorgen. We zeggen dan dat JavaScript reageert op een event; de handeling van de gebruiker heet in programmeertaaljargon een event of gebeurtenis. Een reactie zou kunnen zijn dat er een aangepaste tekst wordt getoond, die betrekking heeft op de gemaakte keuze.
mouseOver en mouseOut Een voorbeeld van een toepassing is het laten oplichten van een plaatje of tekst als de gebruiker er met de muisaanwijzer overheen gaat. Dat is een visueel signaal dat er op die plaats geklikt kan worden. Er worden in dat geval twee plaatjes gemaakt, een donkere en een lichte versie. De pagina bevat JavaScript-opdrachten die reageren op de event mouseOver en ervoor zorgen dat de lichte versie van het plaatje verschijnt. Bij de event mouseOut (de muisaanwijzer verlaat het gebied) wordt de donkere versie weer teruggezet.
Niet alle browsers begrijpen JavaScript. Ontwikkelaars van een website moeten rekening houden met zulke browsers. Gelukkig komt er geen foutmelding of iets dergelijks. Een browser die geen JavaScript kent, slaat de opdrachten over.
Andere scriptingtalen zijn VBScript en Flash ActionScript.
Moderne websites zijn vaak dynamisch. Ze bevatten allerlei functies die met HTML niet aangebracht kunnen worden. Denk aan een gastenboek, een mogelijkheid om elektronisch te betalen, een discussieforum, een fotoalbum of een gepersonaliseerde website. Om deze functies mogelijk te maken zijn er aanvullingen op HTML ontwikkeld, waarvan PHP de bekendste is.
Andere technieken zijn:
ASP JSP Coldfusion
De syntaxis van PHP vertoont overeenkomsten met die van C, Java en Perl. De betekenis van de afkorting PHP heeft in de loop der tijd een verandering ondergaan. In eerste instantie betekende het Personal Home Page Tools, maar tegenwoordig wordt meestal de aanduiding PHP: HyperText Preprocessor gebruikt. PHP-documenten hebben meestal de extensie .php.
Een preprocessor voert eerst een bewerking uit op een webpagina voordat hij naar de browser wordt gestuurd.
HTML-bestand Overigens merkt de bezoeker van een website niet of er naast HTML ook PHP in de website is verwerkt. Het resultaat dat naar de browser op de client wordt gestuurd, is namelijk een HTML-bestand. Vaak zijn de gegevens afkomstig uit een database. PHP is goed in staat gegevens uit een database te halen en deze op te nemen tussen de HTML-code die naar de client wordt gestuurd. Dit is ook het dynamische aspect van PHP: afhankelijk van wat de internetgebruiker wil, worden verschillende gegevens uit de database geselecteerd.
Zoekmachine Denk bijvoorbeeld aan het gebruik van een zoekmachine: zonder PHP zou dit niet mogelijk zijn. Op basis van de ingevoerde zoekterm wordt het overzicht van websites samengesteld, afkomstig uit een immense database.
Omdat PHP een aanvulling op HTML is, is kennis van HTML voor de PHP-programmeur een vereiste.
PHP is ontwikkeld als open source product. Dit betekent dat de broncode vrij is verspreid en aangepast mag worden (net als bijvoorbeeld Linux).
Hieronder staat een voorbeeld van PHP-code, waarbij duidelijk te zien is dat er tussen de HTML-code een PHP-blok is opgenomen. De resulterende webpagina is in de figuur eronder zichtbaar.
Het resultaat van het PHP-blok is de datum van vandaag.
Charles Babbage wordt beschouwd als de grondlegger van de computer. Hij ontwierp in 1833 een mechanische rekenmachine, de Difference Engine, die kon optellen. In werkelijkheid heeft de Difference Engine overigens nooit gewerkt.
De rekenmachine van Babbage.
In 1880 vond er in de VS een volkstelling plaats. Men ging op zoek naar mogelijkheden om de resultaten hiervan zo efficiënt mogelijk te verwerken. In het kader hiervan vond Herman Hollerith de ponskaart uit, waarmee men op een relatief gemakkelijke manier gegevens kon invoeren.
Het bedrijf dat Hollerith in 1896 oprichtte, bestaat nog steeds! Sinds 1924 is het bekend onder de naam International Business Machines Corporation, oftewel IBM.
Een ponskaart is een kaart waarin op bepaalde plaatsen gaatjes geponst zijn. Via deze gaatjes werden aan de computer instructies gegeven.
Een ponskaart.
Weliswaar is de ponskaart uitgevonden vóór de eerste generatie computers, maar de kaart heeft tot begin jaren tachtig dienst gedaan. Dat betekent dat hij ook werd gebruikt bij de volgende computergeneraties.
In de tweede helft van de twintigste eeuw kwam de ontwikkeling van de computer pas goed op gang. Als gevolg van de vorderingen op het gebied van de techniek en de elektronica kwamen er steeds meer mogelijkheden, met als uiteindelijke resultaat de computer zoals wij die nu kennen. We kunnen de computers indelen in zogenoemde computergeneraties.
Eerste generatie: radiobuizen
De eerste generatie computers dateert uit de tijd van 1940 tot ongeveer 1955 en was gebaseerd op elektronenbuizen (radiobuizen) als schakeleenheden. Wanneer je een radio uit grootmoeders tijd openmaakt, zie je deze zelfde 'lampen' zitten. De computers van de eerste generatie hadden de afmeting van een flink klaslokaal. De snelheid en de prestaties waren voor die tijd geweldig, maar vergeleken met de eerste pcs minimaal.
Ter vergelijking: het aantal instructies per seconde bedroeg ca. 102 (nu meer dan 109) en het geheugen 10 KB (nu enkele gigabytes).
De eerste generatie computers werkte met elektronenbuizen.
Tweede generatie: transistors
Artikel van Automatisering Gids:
"Misser in transistortheorie blokkeert miniaturisering"
Transistors deden hun intrede rond 1955; ze vervingen de radiobuizen. Een transistor heeft twee voordelen boven een radiobuis: hij is kleiner en vraagt minder energie.
De eerste grootschalige toepassing van transistors was in draagbare radio's. Voor een radio met radiobuizen moest je de energie van het elektriciteitsnet betrekken, met een draagbare transistorradio had je aan een aantal batterijen genoeg. Computers van de tweede generatie maakten gebruik van transistors. Ze zijn sneller en kleiner dan die van de eerste.
Een transistor.
Derde generatie: IC's
De computers van de derde generatie (vanaf midden jaren 60) konden flink kleiner worden doordat de schakeleenheden opnieuw sterk verkleind werden. Het zogeheten integrated circuit (IC) deed zijn intrede. Dit is een andere term voor de chip: een dun schijfje siliciumoxide van enkele vierkante millimeters, met daarop zeer kleine schakelingen van transistoren. Deze zijn erop gedampt en dus geïntegreerd.
Vierde generatie: microprocessorchips
Halverwege de jaren 70 doet de microprocessorchip zijn intrede en hiermee wordt een nog verdere verkleining bereikt. Hierdoor is het mogelijk op één chip een complete processor te realiseren. Als je een computer van de vierde generatie openmaakt, zie je dat de elektronica maar een klein gedeelte van de inhoud beslaat. De opkomst van de personal computer, vanaf 1981, werd mogelijk dankzij deze voortschrijdende verkleining. De computers van eerdere generaties waren namelijk allesbehalve persoonlijk. Dit zorgde voor een grote verandering in de wijze waarop computers gebruikt werden.
Een illustratie van de voortschrijdende verkleining: een microprocessor naast enkele punaises.
heel veel informatie over de geschiedenis van de computer.
Naast de verschillende generaties kunnen we vier soorten computers onderscheiden: de supercomputer, het mainframe, de minicomputer en de microcomputer, oftewel de pc. Elk van deze computers heeft zijn specifieke eigenschappen en mogelijkheden, die we hierna kort bespreken.
Supercomputers
Waarvoor wordt de snelste computer ter wereld gebruikt?:
www.howstuffworks.com
Top 500:
www.top500.org
Artikel van Automatisering Gids:
"De petaflops-barrière is doorbroken"
Artikel van Computer Idee:
"Supercomputer net zo krachtig als 2 miljoen laptops"
Supercomputers zijn de krachtigste en snelste computers die gemaakt worden. Ze worden vooral gebruikt voor gecompliceerde berekeningen. Hierbij moet je denken aan:
ruimtevaartprojecten
wetenschappelijk onderzoek
weersvoorspellingen
Dit betekent dat je zulke computers vooral aantreft bij universiteiten, meteorologische instituten en multinationals. In Nederland zijn maar weinig van dit soort computers aanwezig, naar schatting minder dan tien.
Supercomputers kunnen miljarden instructies per seconde uitvoeren. Bovendien maken ze gebruik van zogeheten parallelle verwerking. Hierbij vinden op hetzelfde moment verschillende bewerkingen naast elkaar plaats, die stuk voor stuk vaak een enorme rekencapaciteit vergen.
In plaats van parallelle verwerking wordt ook wel de termMPP gebruikt. MPP is mogelijk wanneer de computer over een groot aantal processors beschikt.
Mainframes zijn eveneens zeer krachtige en snelle computers. Ze zijn in staat om verschillende programmas tegelijkertijd uit te voeren. Tenminste, dat lijkt zo: in werkelijkheid krijgen de programmas na elkaar een kort moment toegewezen om een bewerking uit te voeren, zodat honderden gebruikers op hetzelfde moment op een mainframe kunnen werken.
We spreken in dit verband van time sharing: de processor verdeelt zijn tijd over een groot aantal gebruikers en programmas. Er wordt korte tijd aandacht aan een programma besteed, waarna een volgend programma aan de beurt is.
Een mainframe van IBM uit de jaren 60.
Mainframes zijn ontworpen om grote hoeveelheden gegevens snel te verwerken. Banken gebruiken bijvoorbeeld een mainframe voor het bijhouden van de gegevens van bankrekeningen. Deze computersystemen worden meestal toegepast in organisaties waar de klantenbestanden een belangrijk bedrijfskapitaal vormen. De betrouwbaarheid van deze computers en hun besturingssystemen zorgt ervoor dat bedrijven als banken en verzekeringsmaatschappijen in deze systemen blijven investeren.
In veel bedrijven worden de mainframes met de erop draaiende software beschouwd als zogeheten legacy-systemen. Hiermee wordt bedoeld: verouderde systemen die men niet probleemloos kan moderniseren omdat dan het risico bestaat dat essentiële bedrijfsgegevens verloren gaan.
Minicomputer
Minicomputers, ook wel bekend onder de naam midrangecomputer, zijn kleiner en minder krachtig dan een mainframe. Het aantal mensen dat tegelijk op een minicomputer werkt, blijft meestal beperkt tot enkele tientallen. Minicomputers worden bijvoorbeeld gebruikt bij procesbesturing in fabrieken. Dit type computer wordt ook vaak als netwerkserver ingezet. De kans is groot dat de administratie van jouw school er ook mee werkt.
Microcomputer
Een microcomputer, beter bekend onder de naampc, wordt veel gebruikt voor tekstverwerking, boekhoudprogrammas, tekenprogrammas, surfen op het internet, enzovoort. Programmas worden in de systeemeenheid van de pc verwerkt. Vaak worden de gegevens ook op die pc opgeslagen. Als de pc deel uitmaakt van een netwerk, kunnen gegevens ook centraal opgeslagen worden.
Door verbetering van de technische mogelijkheden worden microcomputers steeds sneller en nemen de toepassingsmogelijkheden toe. Als gevolg hiervan worden ze steeds vaker gebruikt op plaatsen waar voorheen een minicomputer of mainframe ingezet werd.
Gordon Moore, een van de oprichters van chipsfabrikant Intel, stelde in de jaren 60 dat het aantal transistors dat op een chips geplaatst kan worden iedere achttien maanden verdubbelt. Dit houdt in dat ook de capaciteit van de processor iedere anderhalf jaar verdubbelt. Tot nog toe heeft Moore gelijk gekregen. Dit principe staat bekend als de Wet van Moore.
Niet alleen in het bedrijfsleven is de pc populair, ook in de meeste huishoudens treffen we er een of meer aan.
Notebook (laptop)
Artikel van Computable:
"De negen nadelen van een notebook"
Artikel van ZDNet:
"Een op de vijf laptops is een netbook"
Artikelen van Webwereld:
"Laptop viert verjaardagsfeestje"
"Laptops nu wereldwijd beter verkocht dan desktops"
Een bijzondere variant van de pc is de draagbare computer: de notebook (ook bekend onder de naam laptop). Een notebook weegt zon 2 tot 4 kilo. Met behulp van oplaadbare batterijen (accus) wordt het apparaat van stroom voorzien.
Op veel kantoren kan de notebook op het computernetwerk worden aangesloten, zodat er gegevens uitgewisseld kunnen worden.
PDA
Een nog kleinere computer is dePDA, die de grootte heeft van een forse mobiele telefoon en vaak ook gebruikt kan worden als mobiele telefoon. Je komt ook wel de term handheld tegen. Enkele populaire toepassingen van zon apparaatje zijn:
agenda- en relatiebeheer
beperkt tekstverwerken
als rekenmachine
Als er een draadloze verbinding met het internet mogelijk is, kan met een PDA ook e-mail worden gelezen en worden gesurft. PDAs hebben soms een piepklein toetsenbordje en in andere gevallen werken ze met een aanraakscherm.
Omdat het apparaat zo klein is, zijn het geheugen en de capaciteit van de harde schijf natuurlijk beperkter dan bij een pc. Er wordt ook een ander besturingssysteem gebruikt, voorbeelden zijn Symbian en Windows CE.
Bij vrijwel alle PDAs is het mogelijk om te synchroniseren met de gegevens op pcs. Dit houdt in dat je veranderingen in bijvoorbeeld je agenda kunt doorvoeren op de agenda van de gewone pc. Dit kan via een zogenoemd docking station plaatsvinden, maar ook draadloos.
Stel je voor dat je op een computer een autorace-spel speelt. De computer moet dan veel rekenwerk verrichten. De processor moet uitrekenen waar de puntjes op het scherm moeten worden gezet om de auto af te beelden. Als je naar links of naar rechts stuurt, moet hij weer opnieuw beginnen. Ondertussen moet hij ook berekenen hoe de andere autos rijden en ook die moeten op het scherm weergegeven worden. Ook het publiek, de achtergronden en geluidseffecten moeten berekend worden. Al met al heeft de processor het aardig druk.
Geheugen is daarbij om twee redenen noodzakelijk:
De processor kan niet zelf verzinnen wat hij moet doen. Het programma in dit geval het spelprogramma bevat een lijst met duizenden of zelfs miljoenen opdrachten die de processor moet uitvoeren. Er staat in wat er moet gebeuren als je naar links stuurt, als je niets doet, als je botst, enzovoort. De processor moet deze instructies kunnen lezen.
De processor moet kunnen zien wat de uitkomsten van eerdere berekeningen waren. Als door een botsing de auto beschadigd raakt, moet de processor weten dat deze nu minder goed stuurt. Op het moment dat je naar links stuurt, moet de processor weten waar op dat moment de auto is.
Kortom: bij verwerking van gegevens zijn de processor en het (interne) geheugen erg belangrijk.
Nodig voor verwerking
Uit dit voorbeeld blijkt dat voor het verwerken van invoer minstens het volgende nodig is:
Een programma, met opdrachten die de computer moet uitvoeren.
Een processor, om de opdrachten uit te voeren.
Geheugen, om het programma en de gegevens tijdens de verwerking tijdelijk in op te slaan.
In dit gedeelte van de theorie behandelen we de twee rode vlakken: het interne geheugen en de centrale verwerkingseenheid.
Hoe weet de computer wat er bedoeld wordt als je bijvoorbeeld een A op het toetsenbord indrukt? Iedere toets die ingedrukt wordt, genereert een combinatie van acht stroomstootjes. Zo'n stroompje kan van een hoge spanning zijn of van een lage spanning:
De hoge spanning geven we voor het gemak aan met een 1.
De lage spanning geven we aan met een 0.
Iedere 0 of 1 wordt eenbit genoemd. Een combinatie van 8 bits noemen we een byte. Ieder teken dat de computer verstuurt of opslaat omvat één byte.
Sinds de eerste computers worden acht bits bij elkaar gegroepeerd. Per acht is in het Engels by eight. Als je dat snel uitspreekt, begrijp je waarom we van byte spreken
Code
Voor het versturen van gegevens en opdrachten is er een code nodig. Het volgende voorbeeld illustreert dat.
Stel dat we beschikken over acht lampjes waarmee we getallen willen laten zien. De gemakkelijkste manier is: 0 (alle lampjes uit) tot en met 8 (alle lampjes aan).
Dit zouden van boven naar beneden de getallen 0, 3 en 8 zijn.
Op deze manier kun je slechts de getallen 0 tot en met 8 weergeven. Als je grotere getallen wilt afbeelden, heb je meer lampjes nodig. Het is daarom veel slimmer om combinaties te maken. In feite spreek je hiermee een code af.
Bijvoorbeeld:
De getallen 1 t/m 8 en het getal 100 in een code.
Het wel of niet branden van een lampje, met andere woorden wel of geen stroom, kun je ook aangeven met 1 of 0. Het getal 6 kun je volgens de afgesproken code dan ook noteren als: 00000110.
Onderdelen van een computer en computers onderling communiceren met een soortgelijke code.
Als er stroom door een draad loopt, beschouwt de computer dit als een 1.
Loopt er geen stroom door, dan beschouwt de computer dit als een 0.
Met een groep van acht bits kun je 256 verschillende combinaties van nullen en enen maken. Deze 256 combinaties worden gebruikt voor:
de getallen 0 tot en met 9;
de letters a tot en met z;
de letters A tot en met Z.
Dan houd je er nog 256102626 = 194 over voor allerlei andere tekens zoals + , ).
De afgesproken codering staat bekend als deASCII-code. Het is de standaardcode voor het uitwisselen van gegevens. Het maakt niet uit of die uitwisseling binnen één computersysteem of tussen computersystemen gebeurt.
ASCII-tabel
Welke code bij welk teken hoort, kun je aflezen in een ASCII-tabel. In zo'n tabel is een teken gekoppeld aan een bepaalde decimale waarde. Om de binaire code van een teken te vinden moet je het decimale ASCII-getal omrekenen naar het overeenkomstige binaire getal.
Hieronder zijn enkele tekens uit de ASCII-set afgebeeld. Je ziet het desbetreffende teken, gevolgd door de binaire waarde en de decimale waarde.
A: 0100 0001 (=65)a: 0110 0001 (=97)
B: 0100 0010 (=66)b: 0110 0010 (=98)
C: 0100 0011 (=67)c: 0110 0011 (=99)
Ä: 1100 0100 (=196)ë: 1110 1011 (=235)
ASCII is van oorsprong een 7-bits code met 128 verschillende mogelijkheden (27). De meeste computers werken echter met bytes, dus 8-bits codes. In diverse landen bestond behoefte aan extra tekens, bijvoorbeeld aan letters met accenten en valutatekens. (In het overzichtje hierboven bijvoorbeeld Ä en ë). Door ook het 8e bit te gebruiken kon men het aantal mogelijkheden verdubbelen tot 256.
Zo ontstonden de zogeheten extended ASCII-tekensets. Helaas zijn er diverse uitbreidingen ontwikkeld en is 'extended ASCII' niet één bepaalde standaard.
ASCII is wel de meest gangbare, maar niet de enige codering. Doordat veel karakters door de beperking van 256 tekens niet weergegeven kunnen worden denk alleen al aan alle Chinese karakters heeft men een veel uitgebreidere codeset ontwikkeld. Dit werdUnicode.
Unicode biedt ruimte aan honderdduizenden verschillende karaktertekens, waarvan er zon 40.000 zijn vastgesteld. Met dit aantal kunnen alle geschreven talen bestreken worden, evenals bijvoorbeeld wiskundige symbolen en valutatekens. Met Unicode kunnen ook verschillende schriftsoorten in één document worden opgenomen, iets wat ASCII niet toelaat.
Bij ASCII geldt dat één byte één karakter vertegenwoordigt, maar bij Unicode is hiervan geen sprake. Hoeveel bytes een code inneemt, is niet vastgelegd. Wel bestaan er standaarden om de karaktersets in series bytes op te kunnen slaan (zoals UTF-8 en UTF-16).
Overigens zijn nog lang niet alle computers en software in staat Unicode te begrijpen.
In het interne geheugen van de computer wordt de waarde van de bits opgeslagen en als wij daarvoor opdracht geven, wordt deze ook in het externe geheugen (bijvoorbeeld een harde schijf) vastgelegd. In het interne en externe geheugen kunnen miljoenen bytes worden opgeslagen.
SI-stelsel: verouderd!
Meer over tera, giga, mega e.d.:
www.nmi.nl
Net zoals we grote afstanden niet in centimeters of meters uitdrukken, drukken we de capaciteit van geheugens niet in bytes uit, maar in kilobytes of nog gebruikelijker in megabytes of gigabytes. In de tabel zie je om hoeveel bytes het daarbij gaat. Deze tabel is gebaseerd op het zogeheten SI-stelsel.
Computers werken met nullen en enen en daardoor heb je te maken met het binaire of tweetallige stelsel. Getallen worden uitgedrukt in machten van 2. Zo is 1024 bytes gelijk aan 210 bytes (2x2x2x2x2x2x2x2x2x2). Omdat 1024 en 1000 zo dicht bij elkaar liggen, zeggen we meestal dat 1024 bytes gelijk is aan 1 kilobyte (1 KB). Hetzelfde geldt voor de andere eenheden (zie de tabel).
Dit spraakgebruik blijkt echter voor steeds meer verwarring te zorgen omdat niet duidelijk is of de precieze grootte bedoeld wordt, of de afgeronde SI-getallen. Het RAM-geheugen in een computer wordt bijvoorbeeld in megabytes van 1024×1024 byte aangegeven, maar de capaciteit van harddisks wordt in gigabytes van 1000×1000×1000 byte opgegeven.
Om aan deze onduidelijkheid een einde te maken heeft men aan het eind van de vorige eeuw een nieuwe standaard in het leven geroepen. Deze is ontwikkeld door deIEC.
Men heeft besloten dat de bestaande voorvoegsels kilo, mega, giga en tera gebruikt worden voor machten van 10. Een megabyte is daarmee 1.000.000 bytes (106). Een hoeveelheid van 1024x1024 (220) bytes wordt nu mebibyte genoemd. De letters 'bi' duiden op 'binair'.
Bekijk hier een video over de inhoud van de systeemkast:
howstuffworks.com
Gegevens zijn voor een computer niets anders dan afzonderlijke reeksen van enen en nullen. Wat komt er allemaal kijken bij de verwerking van die enen en die nullen? We nemen een kijkje in het inwendige van een computer om te ontdekken welke rol de diverse onderdelen spelen bij de verwerking.
Een geopende systeemkast van een towermodel.
Intern geheugen
In het interne geheugen van een computer worden gegevens en instructies voor de verwerking bewaard en deze worden doorgegeven aan de processor. De processor vormt het hart van een computer, maar de processor kan alleen wat doen als hij instructies krijgt. Deze instructies krijgt hij in de vorm van programmas. Voordat de processor deze instructies kan verwerken, moeten de programmas in het geheugen worden geladen.
Het interne geheugen bestaat uit twee soorten geheugenchips:
ROM
RAM
ROM
Meer over het BIOS:
www.howstuffworks.com
Het zogeheten Read Only Memory is een gedeelte van het interne geheugen waarin gegevens staan die alleen gelezen (read only) kunnen worden. Het ROM speelt een grote rol tijdens het opstarten van de computer. Er wordt bijvoorbeeld aan de computer opgedragen om een aantal hardwaretests uit te voeren. Ook het instellen van de belangrijkste onderdelen, zoals de harde schijf en de grafische kaart, gebeurt met behulp van instructies uit het ROM. Verder wordt opdracht gegeven tot het laden van de eerste onderdelen van het besturingssysteem.
De gegevens in het ROM-geheugen worden niet gewist, ook niet als de pc wordt uitgezet.
EEPROM
De chips die je in het ROM aantreft, zijn meestalEEPROM's. Net als de USB-stick is een EEPROM een vorm van flashgeheugen: door middel van elektrische spanning kunnen gegevens gewist worden en nieuwe gegevens toegevoegd. Als je de harde schijf vervangt of het interne geheugen uitbreidt, moeten de EEPROMs aangepast worden. Op die manier kan de computer op de hoogte gebracht worden van bijvoorbeeld een geheugenuitbreiding of een nieuwe harde schijf. Bij het opstarten is dit natuurlijk van belang.
Het lijkt tegenstrijdig: read-only geheugen dat wel gewist en aangepast kan worden. Het read-only aspect heeft echter vooral betrekking op het feit dat de computer bij het opstarten alleen leest uit het ROM. Als de nieuwe hardware door middel van flashen eenmaal bekendgemaakt is aan de EEPROMs, blijven deze tijdens het opstarten onveranderd; dit in tegenstelling tot het RAM.
Een EEPROM op het moederbord.
BIOS (Architectuur)
Belangrijke zaken die via het ROM worden bewaard of uitgevoerd, zijn:
BIOS. Dit omvat de gegevens die de computer nodig heeft om met de belangrijkste randapparaten (harde schijf, toetsenbord en dergelijke) te kunnen werken.
POST. Wanneer de computer opstart, worden de processor, het geheugen en een aantal andere zaken getest. Deze tests worden samen POST genoemd. Het POST-programma wordt in gang gezet door het BIOS.
Setup. Door tijdens het opstarten van de computer een bepaalde toets of toetsencombinatie in te drukken kom je in de Setup: een programma dat allerlei menus op het scherm weergeeft. Met deze menus kun je de gegevens in het BIOS op een eenvoudige manier veranderen. De nieuwe instellingen kunnen vervolgens naar de EEPROM worden weggeschreven.
De naam van de chip waarin de BIOS-gegevens opgeslagen worden, is CMOS. Dat staat voor Complementary Metal Oxid Semiconductor. Die naam slaat op het materiaal waarvan de chip gemaakt is en is eigenlijk nogal onzinnig: de meeste andere chips zijn van hetzelfde materiaal gemaakt.
BIOS aanpassen
Er zijn dus twee mogelijkheden om de gegevens in het BIOS aan te passen:
Via het Setup-programma. Hier kun je instellingen aanpassen. De keuze uit de instellingen ligt vast in het BIOS; je kunt dus alleen kiezen wat aangegeven is.
Door middel van flashen. Het kan voorkomen dat de keuze die jij wilt maken niet in de Setup wordt aangeboden. In dat geval moet je de software van het BIOS geheel vervangen.
RAM
Geheugenmodules en geheugenbanken (Architectuur)
Random Access Memory is het gedeelte van het interne geheugen waarin tijdelijk gegevens en instructies worden opgeslagen. Het wordt ook wel het werkgeheugen van de computer genoemd. Er zijn twee belangrijke verschillen met ROM:
De gegevens die in het RAM staan, veranderen doorlopend.
De gegevens in het RAM gaan verloren als de pc wordt uitgezet. Dus ook als de stroom uitvalt! Ben je op dat moment ergens mee bezig zonder dat er tussentijds iets opgeslagen is, dan ben je het gemaakte werk kwijt. We noemen het RAM dan ook een vorm van vluchtig geheugen; het ROM is niet-vluchtig, oftewel persistent.
In het dagelijkse spraakgebruik is het interne geheugen synoniem met het RAM.
Capaciteit
De capaciteit van het interne geheugen wordt uitgedrukt in gigabytes. De grootte van het interne geheugen is belangrijk: hoe meer gegevens daarin opgeslagen kunnen worden, hoe sneller de computer kan werken.
Als het interne geheugen te klein is, zal de processor de benodigde gegevens van en naar de harde schijf moeten halen en brengen. Dat kost meer tijd omdat de toegangstijd van de harde schijf veel groter is dan van het geheugen.
De pcs van tegenwoordig worden hoofdzakelijk als towermodel geleverd. Aan een van de zijkanten van een towermodel bevindt zich een grote printplaat. Hierop is een doolhof van chips, koperen leidingen en aansluitpunten voor onderdelen aangebracht. Deze plaat wordtmoederbord genoemd.
De belangrijkste functie van het moederbord is dat het alle andere onderdelen met elkaar verbindt. De processor, het geheugen, de harde schijf, het diskettestation en de cd/dvd-speler worden niet direct met elkaar verbonden, maar worden op de bedrading van het moederbord aangesloten.
Een foto (van boven) en een schematische weergave van een moederbord.
Alle onderdelen waarvan de computer gebruik maakt, moeten (direct of indirect) met het moederbord verbonden zijn. Anders kan de processor ze niet besturen. De uitgangen aan de achterkant van de computer (waarop de monitor, het toetsenbord en andere apparaten aangesloten kunnen worden) zijn dus de stopcontacten van het moederbord.
De Central Processing Unit is het hart van de pc: deze bestuurt het hele computersysteem. Als Nederlandse term hoor je wel eens 'centrale verwerkingseenheid' (CVE).
Tegenwoordig is de CPU een zogeheten multicore processor. Het Engelse woord 'core' betekent 'kern'; de processor bestaat dus als het ware uit diverse kernen, die apart instructies kunnen verwerken. Hierdoor kan multitasking een stuk sneller verlopen. Momenteel zijn processors met vier kernen gangbaar; deze worden quad core genoemd.
Twee voorbeelden van quad core processors:
Intel Core 2 Quad
AMD Opteron 64
De AMD Opteron 64.
Bij een mini, mainframe of supercomputer zijn er doorgaans verschillende processors die voor de verwerking zorgen. We spreken dan van multiprocessorsystemen. Dit is niet hetzelfde als een multicore processor!
Een processor uitrusten met meerdere kernen heeft als voordeel dat er tegen geringe kosten behoorlijk wat snelheid gewonnen kan worden. Je kunt een oude processor gemakkelijk vervangen door een nieuwe met meer kernen. Daardoor wordt een computer voor relatief weinig geld een stuk sneller. Wel is het zaak de warmteontwikkeling in de systeemkast in de gaten te houden, want een multicoreprocessor verbruikt veel meer energie.
Ook moet erop gelet worden dat het besturingssysteem quad core ondersteunt.
Taken van de CPU
De CPU regelt alle gegevensverwerking in de pc. Daarmee zorgt de processor voor de besturing van de computer én voor het uitvoeren van berekeningen.
In feite kun je de CPU splitsen in:
een besturingsorgaan
een rekenorgaan
De processor als grote regelaar.
De taken van de processor zijn bijvoorbeeld:
het ophalen van instructies en gegevens uit het interne geheugen;
het laten uitvoeren van berekeningen door het rekenorgaan;
het opslaan van resultaten in het computergeheugen;
het regelen van de uitvoer van gegevens, bijvoorbeeld naar beeldscherm of printer.
Snelheid van een processor
Artikel van Webwereld:
"IBM stopt waterkoeling in de processor"
Of een processor snel genoemd kan worden, heeft te maken met de snelheid waarmee hij gegevens verwerkt: deverwerkingssnelheid. Deze heeft betrekking op de hoeveelheid instructies die een computer in één seconde kan verwerken. Daarom wordt deze snelheid uitgedrukt inmips.
Behalve over de verwerkingssnelheid kun je bij een computer ook spreken van de kloksnelheid. Deze wordt bepaald door de klokchip, die een vast aantal malen per seconde een puls aan de processor geeft om (als een dirigent) alle verwerkingsstappen synchroon te laten lopen. Het aantal pulsen per seconde, dus de kloksnelheid, drukken we uit in Hertz (Hz).
De verwerkingssnelheid is dus iets anders dan de kloksnelheid. Voor het uitvoeren van een instructie zijn namelijk vaak meerdere pulsen van de klok nodig. Om hoeveel pulsen dit gaat, is afhankelijk van het type processor en het type instructie.
De kloksnelheid van moderne pcs bedraagt meer dan 3 GigaHertz, dat wil zeggen 3.000.000.000 pulsen per seconde.
Ter vergelijking: de eerste consumenten-pc, die een 8088-processor bezat, had een kloksnelheid van 5-8 MHz!
Cachegeheugen
De producenten van computers zijn voortdurend op zoek naar manieren om een processor sneller te maken. De toepassing van dual core, die hierboven genoemd is, is een methode om dit te bereiken. Ook de aanwezigheid van cachegeheugen draagt bij aan een snellere gegevensverwerking.
Het ophalen van instructies en gegevens uit het interne geheugen kost tijd. Die tijd kan verkort worden door de instructies en gegevens op te slaan in extra snel werkgeheugen, dat de processor rechtstreeks kan gebruiken en dat dicht bij die processor (of zelfs erin) zit. Dit noemen we het cachegeheugen van de processor. Door gebruik van het cachegeheugen worden de prestaties van de computer sterk vergroot. Het is wel een stuk duurder dan het gewone werkgeheugen.
Pipelining
Het uitvoeren van een instructie kan aanmerkelijk versneld worden als de instructie wordt gesplitst in deelinstructies die elk in één klokpuls uitgevoerd kunnen worden. Deze deelinstructies worden sequentieel door een onderdeel van de processor uitgevoerd. Door nu de processor te voorzien van de mogelijkheid om deze deelinstructies parallel uit te voeren, neemt de efficiëntie per klokpuls toe.
Deze techniek wordt pipelining genoemd. Het onderdeel van de processor waar de instructies worden uitgevoerd heet pipeline stage.
Branch prediction
Als een instructie in de ene pipeline stage moet wachten op de uitkomst van een andere pipeline stage, is pipelining niet zo effectief. Dit wordt opgelost door middel van branch prediction. Dit houdt in dat de processor vast bedenkt welke instructie er volgt en deze ook vast uitvoert.
Als de voorspelling juist is, werkt de processor efficiënter.
Is de voorspelling niet correct, dan moet de processor de verkeerde instructie en de bijbehorende gegevens verwijderen en dat kost natuurlijk tijd.
Toch hoeft dit laatste niet zo vaak te gebeuren, want in zon 90% van de gevallen blijkt de voorspelling juist te zijn.
Om gegevens van het interne geheugen naar de processor of de randapparatuur te brengen, moet er een verbinding tussen die onderdelen zijn. Zon verbinding noemen we een bus. Zonder bus kunnen de onderdelen van de computer niet met elkaar communiceren. Wanneer je bijvoorbeeld via je toetsenbord een e-mailtje invoert, gaan de aanslagen (in de vorm van nullen en enen) via de bus naar de processor.
Een bus is dus een fysieke verbinding
tussen de processor en het interne geheugen óf
tussen de processor en de randapparatuur.
Systeembus en I/O-bussen
I/O, IRQ en DMA
De belangrijkste bus is de systeembus, ook wel local bus of front side bus (FSB) genoemd. Deze verbindt de processor met het interne geheugen. De andere bussen, die de communicatie tussen de randapparaten verzorgen, worden de I/O-bussen genoemd
Binnen de FSB (en ook binnen de I/O-bussen) onderscheiden we drie verschillende bussen:
de databus
de adresbus
de controlbus
Twee vormen
Bussen komen in twee vormen voor:
Als voorgedrukte bedrading op een printplaat. Deze vormt bijvoorbeeld de verbinding tussen het interne geheugen en de processor.
Als een losse kabel, meestal een lintkabel. Hierdoor worden bijvoorbeeld intern en extern geheugen (harde schijf, cd/dvd) met elkaar verbonden.
Snelheid
Voor de snelheid van de verbinding zijn twee zaken van belang:
De lengte van de verbinding (in centimeters). Hoe korter de bus, hoe sneller de verbinding.
De busbreedte. Hieronder verstaan we het aantal bits dat tegelijk door de bus getransporteerd kan worden: 8, 16, 32 of meer.
Databus
Over de databus worden de te verwerken gegevens verstuurd tussen de processor, het geheugen en andere apparaten. De snelheid waarmee de gegevens op de databus worden gezet, hangt af van de klokchip. Daarnaast geldt hoe breder de databus, hoe meer bits tegelijkertijd verstuurd kunnen worden en hoe sneller de computer werkt. De databus wordt ook wel processorbus genoemd.
De bus die momenteel het meest wordt toegepast isPCI-Express. Dit is een snelle verbinding die busmastering en plug-and-play ondersteunt:
Busmastering is de techniek waarbij gegevens van de ene kaart naar de andere worden verzonden zonder hulp van de processor.
Plug-and-play wil zeggen dat een aangesloten apparaat herkend wordt door het besturingssysteem zonder dat de gebruiker iets aan de instellingen hoeft te veranderen.
Oudere bustypen die je ook nog steeds tegenkomt zijn:
PCI Dit is de tragere voorganger van PCI-Express.
ISA en EISA DeISA-bus is een verouderde bus voor uitbreidingskaarten. Er zijn verschillende uitvoeringen verschenen. EISA, waarbij de E staat voor Extended, was de opvolger van ISA, maar ook deze standaard is verouderd.
Let op: aan het einde van een bus zit een slot, waarin de kaart gestoken wordt. Een PCI-kaart stop je dus in het PCI-slot van de PCI-bus.
PCI-E-slots.
Controlbus
Via de controlbus die ook wel besturingsbus wordt genoemd worden de aanwijzingen verstuurd hoe de gegevens van de databus verwerkt moeten worden, dus wat de processor ermee moet doen. De klokchip bepaalt de snelheid waarmee deze aanwijzingen worden gegeven.
Adresbus
Wanneer via de databus gegevens verzonden worden, moet het moederbord weten waar deze gegevens naartoe moeten. Via de adresbus wordt het adres van de geheugenplaats meegestuurd. De breedte van deze bus is bepalend voor het maximale aantal plaatsen in het RAM dat geadresseerd kan worden en daarmee voor de maximale hoeveelheid geheugen die gebruikt kan worden.
Uitbreidingen op bussen
SCSI en AGP zijn te beschouwen als uitbreidingen op de busstructuur. Beide zijn op dit moment wel verouderd.
SCSI
EenSCSI-kaart wordt op de bestaande busstructuur in de computer aangesloten. Op deze kaart kunnen vervolgens weer andere apparaten (vooral opslagmedia) worden aangesloten. De SCSI-kaart bevat een kleine processor, die de besturing van die aangesloten apparaten regelt en zorgt dat ze onderling kunnen communiceren.
AGP
DeAGP-bus is een uitbreiding die was bedoeld om afbeeldingen sneller op het beeldscherm te laten verschijnen. Deze bus biedt plaats aan een videokaart die AGP ondersteunt. AGP is grotendeels verdrongen door PCI-Express.
Hier vind je informatie over de werking van de CPU:
electronica.infonu.nl
Logische schakelingen
Vrijwel alle bestaande computers werken volgens het Von Neumann-principe. Dit houdt in dat er een scheiding is tussen de verwerkingseenheid en het geheugen voor de opslag van instructies en gegevens. John Von Neumann was een Hongaarse wis- en natuurkundige die leefde in de eerste helft van de 20e eeuw.
Een computer doet niets zonder een programma. Een computerprogramma bestaat uit een groot aantal instructies die gedetailleerd beschrijven wat een processor moet doen. Een instructie kunnen we beschouwen als een nauwkeurig beschreven stap in een totaal van uit te voeren handelingen.
Een voorbeeld: wanneer we willen dat de computer twee getallen optelt, moeten deze getallen uit het interne geheugen worden opgehaald en via de bussen naar de processor worden gebracht. Het resultaat van de optelling moet uit de processor naar het interne geheugen worden overgebracht.
Twee soorten instructies
De processor verwerkt daarvoor twee soorten instructies:
Rekeninstructies
Hierbij gaat het niet alleen om rekenkundige bewerkingen zoals wij die kennen (optellen, aftrekken, vermenigvuldigen, enzovoort), maar ook om logische bewerkingen zoals vergelijken (is groter dan, is gelijk aan). De CPU is voortdurend aan het rekenen en vergelijken als hij bij het sorteren van een gegevensbestand bijvoorbeeld moet bepalen of mevrouw K.P. Oosterhof vóór de heer J.G. Miedema moet komen.
In- en uitvoerinstructies
In- en uitvoerinstructies vallen onder de besturingstaak van de CPU. Hierbij moet je denken aan het doorvoeren van gegevens van en naar het geheugen, bijvoorbeeld het opslaan van een document op de harde schijf.
Gezien deze twee soorten instructies is het goed te verklaren dat de CPU uit twee hoofdonderdelen bestaat:
het rekenorgaan, ook wel aan geduid met de termALU
het besturingsorgaan
Verder bevat de CPU speciale schakelingen, waaronder snelle registers voor tijdelijke opslag van instructies en gegevens.
Registers
De belangrijkste registers in de CPU zijn:
het instructieregister, waarin de instructie staat die in behandeling is;
de program counter met het geheugenadres van de eerstvolgende instructie;
de rekenregisters, met getallen die voor berekeningen nodig zijn.
Deelinstructies
Als de CPU een instructie uitvoert, kunnen we de volgende deelinstructies onderscheiden:
De uit te voeren instructie wordt opgezocht in het interne geheugen, in het instructieregister.
De eerstvolgende instructie wordt aangewezen en de program counter wordt verhoogd.
De instructie uit het instructieregister wordt geanalyseerd.
De instructie uit het instructieregister wordt uitgevoerd.
Het resultaat van de instructie wordt opgeslagen.
Schematische voorstelling van de uitvoering van een instructie door de CPU.
Instructiecyclus
Deze vijf stappen noemen we de instructiecyclus. Deze cyclus wordt steeds herhaald totdat alle instructies van het programma zijn afgewerkt. De deelinstructies worden door middel van pipelining via het volgende schema afgewerkt:
Stage 1 1.1 1.2 1.3 1.4 1.5 5.1 5.2 5.3 5.4 5.5
Stage 2 2.1 2.2 2.3 2.4 2.5 6.1 6.2 6.3 6.4
Stage 3 3.1 3.2 3.3 3.4 3.5 7.1 7.2 7.3
Stage 4 4.1 4.2 4.3 4.4 4.5 8.1 8.2
Op deze wijze is de processor, als er vier pipeline stages zijn, op een gegeven moment met vier instructies tegelijkertijd bezig. Een probleem kan ontstaan als bijvoorbeeld instructie 7 afhankelijk is van het resultaat van instructie 4. Door middel van branch prediction wordt geprobeerd zoveel mogelijk te voorkomen dat onnodig aan een instructie wordt begonnen.
Uitbreidingskaarten of interfacekaarten zijn kaarten met daarop chips en leidingen, die zich grotendeels in de systeemkast bevinden (zie onderstaande figuur). Bij uitbreidingskaarten moet je bijvoorbeeld denken aan de netwerkkaart, waar de netwerkkabel in past. Op het moederbord zitten speciale gleuven waar deze kaarten in passen. Dit zijn deuitbreidingsslots.
Een geopende systeemkast van een towermodel.
Het begrip interface ken je waarschijnlijk uit de term 'grafische interface'. Het woord kent echter een ruimere betekenis; het is de gemeenschappelijke grens tussen twee systemen, bijvoorbeeld tussen een computer en de randapparatuur of tussen een computer en de gebruiker.
In dat laatste geval kan er sprake zijn van een grafische gebruikersinterface, maar dat hoeft niet.
Veel functionaliteit die vroeger in een uitbreidingskaart zat, is bij moderne computers ingebouwd op het moederbord (oftewel on board). Toch worden er nog veel losse uitbreidingskaarten toegevoegd. Ze hebben als voordeel dat ze eenvoudig vervangen kunnen worden. Bovendien zijn ze kwalitatief vaak beter dan de ingebouwde standaardvoorziening.
Voor veel computergebruikers is de standaard ingebouwde grafische voorziening vaak niet voldoende om het beeld snel genoeg te laten opbouwen. Zij rusten hun computer dan uit met een extra grafische kaart. Zon grafische kaart, ook wel videokaart geheten, zorgt voor de gegevensstroom naar het beeldscherm. De aansluiting op deze kaart is zichtbaar aan de achterkant van de computer: hierop sluit je de monitor aan.
De kwaliteit van het beeld en de snelheid waarmee het beeld wordt opgebouwd, is sterk afhankelijk van de grafische kaart. Een nieuwe grafische kaart, met meer geheugen, kan de prestaties van de pc vaak aanzienlijk verhogen. Vrijwel elke computer is uitgerust met eenSVGA-kaart, met meer of minder mogelijkheden om gecompliceerde beeldopbouw van de CPU over te nemen.
Geluidskaart
Ook de ingebouwde mogelijkheden om geluid voort te brengen worden niet door iedereen als voldoende beschouwd. Vandaar dat er nog regelmatig geluidskaarten in een uitbreidingsslot worden geplaatst, zeker door mensen die computerspellen spelen of vaak audio-cds afspelen. Op een geluidskaart worden de luidsprekers aangesloten. Hoe de geluidskwaliteit uiteindelijk is, is natuurlijk mede afhankelijk van de speakers.
Twee uitbreidingskaarten (onderop een grafische kaart, bovenop een geluidskaart).
Netwerkkaart
Hoewel ook deze voorziening tegenwoordig vaak on board wordt aangetroffen, bestaan er nog steeds netwerkkaarten. Zon kaart zorgt voor de verbinding tussen de pc en het netwerk indien de pc is opgenomen in een netwerk of aangesloten op het internet.
PCMCIA-kaart
Hoewel dit type zijn langste tijd heeft gehad, noemen we hem nog wel. De PCMCIA-kaart, ook wel PC Card geheten, is speciaal voor laptops ontwikkeld en kan aan de buitenkant in de computer worden gestoken. Er zijn onder meer kaarten verkrijgbaar die als modem werken, of als extra geheugen.
De opkomst van het draadloze netwerk, de inbouw van netwerkkaarten en het gebruik van de USB-stick hebben deze kaart overbodig gemaakt.
Naast de processor zijn er enkele ondersteunende chips nodig om de computer vlot te laten werken. Deze chips horen bij elkaar en worden daarom chipset genoemd. De chipset speelt een belangrijke rol in het regelen van het verkeer over de bussen.
De chipset bestaat doorgaans uit twee aparte chips: de North bridge en de South bridge.
De North bridge regelt het verkeer tussen de snelle onderdelen van een computer: tussen de CPU en het interne geheugen en de grafische kaart.
De South bridge zorgt voor communicatie met de relatief tragere componenten: het toetsenbord, de harde schijf, het diskettestation, de USB-poort en de PCI-E-slots.
Het onderstaande schema verduidelijkt een en ander. Hierin is tevens te zien dat de Front Side Bus de verbinding vormt tussen de CPU en de chipset.
De chipset bestaat uit de North bridge en de South bridge.
Op elk moederbord zijn jumpers aanwezig. Vroeger moest je deze schakelaartjes met de hand omzetten, bijvoorbeeld als je een snellere processor had geplaatst. Tegenwoordig herkennen moederborden doorgaans zelf een nieuwe processor. Bovendien kunnen veel instellingen in het BIOS via een setup-programma in de CMOS-EEPROM worden aangepast.
Het handmatig omzetten van jumpers is dus steeds minder noodzakelijk. Ze worden nog wel gebruikt voor het instellen van de harde schijf.
Een jumper; door het blokje over de twee pinnetjes te schuiven zorg je ervoor dat deze met elkaar worden verbonden.
Hier vind je informatie over 'pinouts' van een groot aantal connectors:
pinouts.ws
Op de systeemkast vind je een aantal aansluitingen waarop randapparaten aangesloten kunnen worden. Deze aansluitingen worden connectors genoemd. Zo zijn er connectors voor de printer, voor communicatieapparatuur, voor muis en toetsenbord, voor een microfoon, enzovoort.
De USB-aansluiting (Universal Serial Bus)
Een video over USB:
www.howstuffworks.com
USB
USB-standaard
Hoewel de aanduiding 'Universal Serial Bus' de indruk wekt dat we met een bus te maken hebben, behoort de USB-aansluiting toch echt bij het onderwerp 'Connectors' besproken te worden. Het gaat om een platte, rechthoekige aansluiting waaraan diverse randapparaten tegelijk gekoppeld kunnen worden, zoals een printer, scanner, camera, toetsenbord of muis.
Bekend is natuurlijk ook de USB-stick of memory stick: een extra geheugenmedium dat rechtstreeks op de USB-connector kan worden aangesloten.
Een groot voordeel van USB is dat het apparaat gekoppeld kan worden zonder dat het systeem opnieuw gestart hoeft te worden, de poort is wat we noemen hot-pluggable. De USB-kabel kan het aangesloten apparaat van stroom voorzien.
Links een USB-poort; in het midden een USB-plug en rechts een USB-stick.
Lees hier meer:
www.usb.org
Artikel van Automatisering Gids:
"USB 3.0 begin 2010 in massaopslag"
USB 2.0
De snelste uitvoering van USB is versie 2.0, die inmiddels de verouderde versie 1.1 goeddeels heeft verdrongen. USB 2.0 ondersteunt in tegenstelling tot versie 1.1 hi-speed. Hi-speed apparaten zijn bijvoorbeeld een MP3-speler, een scanner of externe harde schijf. Deze apparaten hebben regelmatig veel data te versturen of te ontvangen, en krijgen dan een groot deel van de beschikbare capaciteit op de bus toegewezen.
Als er via deze poort één byte wordt verstuurd, gaan de bits één voor één (achter elkaar oftewel in serie) door de poort. We spreken daarom van een seriële poort.
On-the-Go
USB On-the-Go is een aanvulling op USB 2.0. Dankzij deze technologie kunnen mobiele apparaten via de USB-poort verbinding maken met pc's en randapparaten. Draagbare apparaten die voorzien zijn van OTG kunnen bovendien direct data overbrengen naar een ander randapparaat zonder verbinding te hoeven maken met een pc.
LPT-poort
Voor de komst van USB, halverwege de jaren negentig, diende de LPT-poort voor het aansluiten van een printer. Deze printerpoort staat ook wel bekend als parallelle poort omdat er meerdere signalen tegelijk (parallel aan elkaar) verzonden kunnen worden.
Door de parallelle poort kunnen acht bits tegelijk (naast elkaar oftewel parallel) verstuurd worden. Dit betekent dat er steeds één hele byte tegelijkertijd de printerpoort verlaat. Dat lijkt snel, maar de snelheid waarmee de bits tegenwoordig achter elkaar door een USB-aansluiting gaan ligt nog veel hoger.
Op de LPT-poort wordt een brede connector aangesloten, die 25 gaatjes bevat. Hierin passen dus 25 pinnetjes.
COM-poort
Deze seriële aansluiting bestaat (aan de computerkant) meestal uit negen en soms uit 25 pinnetjes. Zij werd gebruikt voor veel verschillende randapparaten, zoals muizen, scanners, modems en zelfs voor sommige printers, maar tegenwoordig beschikken deze apparaten vrijwel allemaal over een USB-connector.
De COM-aansluiting wordt ook wel genoemd naar zijn standaard: RS-232.
Misschien vraag je je af waarom een seriële aansluiting over maar liefst 25 pinnen beschikt. Een groot aantal hiervan wordt in beslag genomen door besturingssignalen.
Andere aansluitingen
Miniplug-connectors zijn meestal te vinden op de geluidskaart. Ze zijn bedoeld voor stekkers zoals die van een koptelefoon en luidspreker. Vaak staan er merktekens bij om aan te geven wat er in moet.
Andere connectors zijn bedoeld voor het toetsenbord en de muis (als deze niet op de USB-poort worden aangesloten), het netsnoer, een netwerkkabel en een telefoonkabel.
Een ander onmisbaar onderdeel van een computer is de voeding met de bijbehorende ventilator.
De voeding voorziet een pc van stroom. De voeding zit samen met de ventilator in een afgesloten kastje: de voedingseenheid. Dit kastje vind je achter in de pc, zodat het netsnoer aan de achterkant in de daarvoor bestemde connector kan worden gestoken. Bij laptops werkt het anders: hier wordt de ingebouwde batterij via een extern voedingsblok, een adapter, van stroom voorzien.
De voeding en de ventilator.
Overigens produceren de snelle processors van tegenwoordig zoveel warmte dat de standaardkoeling van de pc onvoldoende is. Er wordt daarom een extra koelvoorziening ingebouwd om te voorkomen dat de CPU oververhit raakt.