Programmeren voor computers, ook wel coderen genoemd, is het proces van het maken van software.Maar wat is software precies, en hoe wordt het gemaakt?
Wat is software?
Software is een set instructies voor een computer om uit te voeren.
Het is een beetje als een kookrecept:
- Kraak een ei in een kom
- Klop het ei los
- Zet een pan op middelhoog vuur
- Vet de pan in
- Stort de eieren in de pan
- Enzovoort
In plaats van ingrediënten te manipuleren, manipuleren computers gegevens.De instructies in software zien er meer als volgt uit:
- Laad wat gegevens
- Laad wat andere gegevens
- Verander die twee stukjes gegevens in resultaatgegevens
- Zend de resultaatgegevens naar de monitor voor weergave
- Zend de resultaatgegevens over het internet
- Enzovoort
Deze instructies worden gewoonlijk broncode genoemd.Broncode is gewoon een verzameling geschreven instructies die een computer kan begrijpen.
Hoe ziet broncode eruit?
Code wordt niet in natuurlijke talen geschreven, zoals Engels.
Hier volgt een programmaatje dat is geschreven in een taal die Ruby heet:
require 'open-uri'require 'json'FRONT_PAGE_URL = 'https://reddit.com/r/all.json'front_page = JSON.load(open(FRONT_PAGE_URL).read)top_post = front_pageputs 'The top post on reddit is:'puts top_postputs top_post
Dit programma geeft het huidige topbericht op reddit weer, zoals dit:
The top post on reddit is:One of my favourite things about working in the ski fieldshttp://i.imgur.com/hWwlWgI.jpg
Hier staat exact hetzelfde programma, geschreven in een vergelijkbare taal genaamd Python:
import urllib, jsonFRONT_PAGE_URL = "https://reddit.com/r/all.json"front_page = json.loads(urllib.urlopen(FRONT_PAGE_URL).read())top_post = front_pageprint "The top post on reddit is:"print top_postprint top_post
Hier is hetzelfde programma in een anders uitziende taal genaamd Clojure:
(require ')(def front-page-url "https://reddit.com/r/all.json")(let ))] (println "The top post on reddit is:") (println (get top-post "title")) (println (get top-post "url")))
Zoals u ziet, zijn programmeertalen heel anders dan natuurlijke talen.Natuurlijke talen zijn dubbelzinnig, met veel verschillende betekenislagen – sarcasme, toespelingen, en dat soort dingen. Dat is geweldig als je met een mens communiceert, maar computers begrijpen daar niets van.
Computers nemen alles letterlijk. Als je een computer vraagt of een getal oneven of even is, zal hij altijd met “ja” antwoorden.”Ik maak niet eens een grapje – hier is de Ruby-code:
puts (5.odd? or 5.even?)
Deze code geeft “true” weer, wat technisch gezien correct is.Het getal vijf is óf oneven óf even, maar dat is niet wat ik bedoelde.
Het is meer dan alleen code schrijven
Het schrijven van code is slechts één onderdeel van het maken van software.
Grote stukken software – zoals Windows, OS X, en big-budgets games – bestaan uit miljoenen en miljoenen regels code.Als je zoveel code hebt, moet je plannen hoe de code geschreven zal worden, en hoe de verschillende delen van de code zullen samenwerken.Dit soort planning wordt ontwerp of architectuur genoemd.Bij grote projecten wordt veel tijd besteed aan ontwerpen en architectuur voordat de code geschreven wordt.
Een ander groot deel van het maken van software is testen.Dat de code geschreven is, wil nog niet zeggen dat hij goed is.De code kan soms crashen, of de verkeerde resultaten geven, of bevriezen, of een aantal andere problemen.Om te proberen deze problemen te voorkomen, hebben professionele softwareontwikkelaars verschillende manieren om hun code te testen.
Dan is er nog het debuggen, dat is het proces van onderzoeken, diagnosticeren en repareren van problemen in de broncode.Dit is een vaardigheid op zich.