Wat is software?
Software:
Computersoftware, of gewoon software, maakt deel uit van een computersysteem dat bestaat uit gegevens of computerinstructies, in tegenstelling tot de fysieke hardware waaruit het systeem is opgebouwd. In computerwetenschap en softwareontwikkeling is computersoftware alle informatie die wordt verwerkt door computersystemen, programma’s en gegevens. Computersoftware omvat computerprogramma’s, bibliotheken en gerelateerde niet-uitvoerbare gegevens, zoals online documentatie of digitale media. Computerhardware en -software hebben elkaar nodig.
Op het laagste niveau bestaat de uitvoerbare code uit instructies voor de machinetaal die specifiek zijn voor een individuele processor, meestal een centrale verwerkingseenheid (CPU). Een machinetaal bestaat uit groepen binaire waarden die processorinstructies aangeven die de status van de computer van de voorgaande toestand wijzigen. Een instructie kan bijvoorbeeld de waarde wijzigen die is opgeslagen op een bepaalde opslaglocatie in de computer – een effect dat niet direct waarneembaar is voor de gebruiker. Een instructie kan ook (indirect) veroorzaken dat er iets verschijnt op een display van het computersysteem – een statusverandering die zichtbaar moet zijn voor de gebruiker. De processor voert de instructies uit in de volgorde waarin deze zijn verstrekt, tenzij de instructie wordt gegeven om naar een andere instructie te “springen” of wordt onderbroken (momenteel zijn processoren met meerdere kernen dominant, waarbij elke kern instructies in volgorde kan uitvoeren; elke applicatiesoftware draait echter standaard maar op één core, maar sommige software is op veel systemen gemaakt).
Het merendeel van de software is geschreven in programmeertalen op hoog niveau die voor programmeurs eenvoudiger en efficiënter kunnen worden gebruikt, omdat ze in natuurlijke talen dichterbij zijn dan machinetalen. Hoogwaardige talen worden vertaald in machinetaal met behulp van een compiler of een interpreter of een combinatie van beide. Software kan ook worden geschreven in een assembleertaal op laag niveau, die sterk overeenkomt met de machinestaalinstructies van de computer en wordt vertaald in machinetaal met behulp van een assembler.