Broncode: verschil tussen versies

807 bytes toegevoegd ,  7 jaar geleden
geen bewerkingssamenvatting
k (Verplaatsing van 56 interwikilinks die op Wikidata beschikbaar zijn op d:q128751)
[[Bestand:CodeCmmt002.svg|thumb|Broncode in [[Java (programmeertaal)|Java]] met [[Commentaar (programmeren)|commentaar]] in rood en groen, de uitvoerbare code is blauw weergegeven.]]
De '''broncode''' (ook wel '''brontekst''' of in het Engels: '''''source''''' of '''''source code''''') van een [[computerprogramma]] is de codeleesbare tekst die door de [[programmeur]] in een formele [[programmeertaal]] is geschreven. Dit staatin tegenstelling tegenovertot de ''uitvoerbare (executable) code'' of [[machinetaal]] voor de [[Processordoelcode (computer{{en}}target-code)|processor]] zoals die door een [[compiler]] of [[interpreter]] vanuit dedeze broncode gegenereerd wordt.
 
== Gebruik van de broncode ==
* Met een compiler: Een compiler zet de broncode om in machinetaal zodat deze uitgevoerd kan worden. Als de compiler eerst assembly-code genereert moet de [[assembler]] dat eerst naar machinetaal vertalen om het uitvoerbare programma te verkrijgen.
* Met een interpreter: De broncode kan in sommige gevallen ook uitgevoerd worden met een interpreter, een programma dat de broncode gelijk uitvoert. Dit is doorgaans een stuk langzamer dan een gecompileerd programma, aangezien elke regel van de code eerst omgezet moet worden naar machinetaal, waarna het uitgevoerd wordt. Een interpreter die direct de broncode uitvoert is mogelijk, maar wordt in verband met de slechtere prestatie niet gebruikt voor veeleisende toepassingen.
* MetMiddels een [[virtuele machine]]. Bij veel moderne programmeertalen, zoals [[Programmeertaal JavaC♯|JavaC#]], [[PerlProgrammeertaal (programmeertaal)Java|PerlJava]], [[PythonPerl (programmeertaal)|PythonPerl 6]] en [[C♯Scala_(programmeertaal)|C#Scala]] wordt meestal een mengvorm gebruikt: de broncode wordt eerst gecompileerd naar een tussentaal ([[bytecode]], [[P-code]] of 'managed code' [[MSIL]]), die vervolgens door een ''virtuele machine'' wordt geïnterpreteerd. Enkele voordelen van deze constructie zijn:
** De gecompileerde code is platformonafhankelijk en kan tot op het moment van uitvoeren over een netwerk worden verplaatst en gecombineerd met andere componenten.
** De interpreter kan op het moment van uitvoeren nog bepaalde controles en bewerkingen uitvoeren, zoals de [[sandbox security]] van Java-[[applet]]s en een optimalisatie van de performance.
<!-- ** Bij sommige talen wordt het ontwikkelmodel vereenvoudigd, doordat de compilatiestap impliciet wordt uitgevoerd. De programmeur ervaart de flexibiliteit van een interpreter terwijl de performance veel beter is dan wanneer niet gecompileerd zou worden. -->
 
Er is ook een constructie waarbij de broncode in een andere broncode wordt vertaald. Bijvoorbeeld in de taal [[PL/SQL]] waarbij de universele PL/SQL compiler de broncode naar een C-code (ontdaan van [[objectgeoriënteerd]]e code maar voorzien van 'embedded SQL') vertaald die automatisch door een 'native' C compiler weer vertaald wordt naar een zeer optimale machinecode.
Het is ook mogelijk direct te [[Programmeren (computer)|programmeren]] in machinetaal. Doorgaans wordt hier ook van een (low-level) programmeertaal gebruikgemaakt in de vorm van een [[assembler]]. Dit wordt alleen gedaan voor uiterst tijdkritische of compacte code, want het is specialistisch en zeer arbeidsintensief werk.
 
Het is ook mogelijk direct te [[Programmeren (computer)|programmeren]] in machinetaal. Doorgaans wordt hier ook van een (low-level) programmeertaal gebruikgemaakt in de vorm van een [[assembler]] waarbij in principe één regel code enkele machine-codes opleveren voor slechts één processorstap. Dit wordt alleensoms gedaan voor uiterst tijdkritische of compacte code, want het is specialistisch en zeer arbeidsintensief werk. Optimalisaties die compilers doen zijn tegenwoordig onovertroffen. Ook is machinetaal platformafhankelijk en de investering wordt direct waardeloos bij gebruikt van een incompatibele constellatie.
 
=== Voorbeeld ===
De volgende broncode in [[Programmeertaal C|C]]:
 
int square(int i )
{
return i * i;
}
 
wordt bijvoorbeeld in een assembleertaal zoiets als:
 
RET
 
en in machinetaaleen gebruikersvriendelijke machinecode (hier weergegeven in het [[hexadecimaal|hexadecimale]] stelsel, in de volgorde dubbele punt geheugenadres, machinecodes en checksom):
:1800260225005510120003FF
1.353

bewerkingen