Basiskennis informatica/Codering

Uit Wikibooks
Naar navigatie springen Naar zoeken springen

Bij het onderdeel talstelsels in het boek wiskunde wordt uitleg gegeven over de algemene "werking" van een talstelsel en bij het onderdeel over de basiskennis informatica worden enkele toepassingen besproken. Deze talstelsels kunnen in een binaire wereld rechtstreeks gebruikt worden om natuurlijke getallen voor te stellen. Zo is 101(2) het natuurlijke getal 5(10). Maar hoe stel je andere gegevens binair voor? Zaken zoals kommagetallen, negatieve getallen, letters, speciale tekens, afbeeldingen,...

Daarvoor moet een codering of protocol gevonden worden, zodat een bepaalde bitreeks ook iets anders kan voorstellen dan enkel een natuurlijk getal. Deze codering moet met slechts een "alfabet" met twee tekens (een 0 en een 1) toch enorm veel computer"talen" kunnen voorstellen. Net zoals wij als mens met ons alfabet a, b, c, d,..., z ook talen kunnen coderen: Nederlands, Engels, Frans,... De letters "beer" betekenen in het Nederlands dan ook wat anders dan in het Engels.

Soort gegevens[bewerken]

Betreffende de soort gegevens die we met één of andere codering moeten kunnen voorstellen, kunnen er vier onderscheiden worden:

  1. Gewone data: tekst, afbeeldingen, muziek,...
  2. Instructies: als je bv. luistert naar muziek, dan is de muziek zelf gewone data, maar om die te beluisteren heb je een programma nodig. Dit programma bestaat uit instructies die op één of andere manier gecodeerd zijn met nulletjes en eentjes, zodat de processor ze begrijpt en ook kan uitvoeren. Om een programma te maken gebruik je een programmeertaal zoals Java, C, C# of PHP.
  3. Adres: als data wordt opgeslagen, is het de bedoeling om ze ook terug te kunnen vinden. Hiervoor worden adressen gebruikt. Dit is de meest simpele codering, daar je hiervoor een talstelsel kan gebruiken. Gebruik je bv. 16 bit om een adres voor te stellen (zoals bij het bestandssysteem FAT16 het geval is), dan heb je 216 = 65536 mogelijke adressen. Dit is binair 0000000000000000, 0000000000000001, 0000000000000010,..., 1111111111111111 of decimaal 0, 1, 2,.... , 65535.
  4. Controlesignalen. Dit is een vorm van codering die zaken controleert, bv. een lees- of schrijfsignaal.

In wat volgt, komt vooral de gewone data aan bod.

Voorbeelden[bewerken]

Het is onmogelijk om met dit boek álle computertalen te bespreken. In dit onderdeel wordt met enkele bekende voorbeelden duidelijk gemaakt wat de bedoeling is van coderen.

Bij bepaalde talen wordt de codering op een binair niveau bekeken:

Bij andere talen wordt de codering bekeken op een tekstueel niveau, waarbij onderliggend een andere codering, zoals bv. Unicode wordt gebruikt:

Vaak is een combinatie van coderingen/protocollen nodig. Je wil bv. enkele bestanden (met bv. als codering 'pdf', 'docx', 'txt',...) doormailen (via bv. het protocol SMTP) naar iemand anders. Je wil dat de bijlage zo klein als mogelijk is, dus comprimeer je alles (bv. als codering zip, rar of 7z). De andere persoon leest zijn mail (bv. via het IMAP-protocol), decomprimeert de bijlage en bekijkt elk van de bestanden met een programma dat de codering begrijpt (bv. pdf-lezer, MS Office, Kladblok,...).

Open versus gesloten[bewerken]

Er zijn verschillende coderingen, elk met hun eigen toepassingsgebied. Maar ook binnen één toepassingsgebied kan je vaak kiezen uit meerdere coderingen. Binnen de grafische formaten heb je zo 'jpg', 'png', 'bmp', 'gif' en nog vele meer. Een weloverwogen keuze is belangrijk, zodat je de gevolgen van de gekozen codering kan inschatten. Eén van de aspecten is het verschil tussen 'gesloten' en 'open' codering.

ASCII, Unicode, bitmap, HTML, SVG en XMPP zijn voorbeelden van een open codering/specificatie: het woordenboek om de binaire/tekstuele informatie te coderen in een voor de (IT-)mens verstaanbare uitleg is vrij beschikbaar. Dit laat toe aan om het even welke programmeur om een eigen programma te schrijven, dat compatibel is met de gekozen codering. Zo kan bv. iedereen met de nodige kennis zijn eigen browser schrijven, door de HTML- en CSS-specificatie van het W3C te bekijken.

Een bedrijf kan echter ook een bepaalde codering ontwerpen, zonder het "woordenboek" aan iedereen vrij ter beschikking te stellen. Wil je dan gebruikmaken van hun formaten, dan kan dat enkel door de software van dat bedrijf te gebruiken. Zo creëer je echter een afhankelijkheid t.o.v. dat bedrijf, wat bekend staat als vendor lock-in, omdat je gebruik maakt van een gesloten codering/specificatie. Zo is het "woordenboek" van hoe Skype zijn berichten ed. verstuurt een gesloten specificatie (het Skype protocol). Als een programmeur zijn eigen Skype-software wil maken, moet hij/zij dit reverse engineeren, wat tijdrovend en weinig toekomstgericht is. Andere voorbeelden van gesloten coderingen zijn WhatsApp en Facebook Messenger.

Een belangrijk misverstand bij een open codering/specificatie is dat je dit vrij zou mogen aanpassen. Het gaat hier echter niet om (open source) software, maar over een codering/taal! Het aanpassen van een taal zou betekenen dat je vanaf nu bv. wit door blauw vervangt en zwart door rood. Als je tegen je medemens zou zeggen dat hier rode tekst op een blauwe achtergrond staat, zal er een communicatieprobleem ontstaan. Of dat je de b-tag van HTML maar niets vindt en dat je liever een bold-tag zou hebben, maar geen enkele browser zal jouw tag begrijpen!

Een bedrijf/persoon kan zelf een codering ontwerpen en die (het "woordenboek") vrij ter beschikking stellen aan iedereen. Om wildgroei te vermijden wordt voor veel formaten gewerkt met een standaardenorganisatie, die alles in goede banen leidt. Als zo'n codering de volledige procedure heeft doorlopen, spreekt men niet zomaar van een open codering/specificatie, maar van een open standaard. Zo wordt HTML en SVG ontwikkeld door de standaardenorganisatie W3C.

In het Wikibook van open standaarden, kan je terecht voor meer informatie. Bovenstaande items worden hierbij diepgaander uitgewerkt.

Informatie afkomstig van http://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.