Översättning från mänskligt till datorspråkEdit
Moderna datorer är mycket komplexa och för att programmera dem på ett produktivt sätt behövs olika abstraktioner. I stället för att skriva ner ett programs binära representation skriver en programmerare till exempel ett program på ett programmeringsspråk som C, Java eller Python.Programmeringsverktyg som assemblers, kompilatorer och linkers översätter ett program från ett mänskligt skrivbart och läsbart källspråk till de bitar och bytes som kan exekveras av en dator. Tolkar tolkar programmet i farten för att åstadkomma önskat beteende.
Dessa program utför många väldefinierade och repetitiva uppgifter som ändå skulle vara tidskrävande och felbenägna om de utfördes av en människa, t.ex. att lägga ut delar av ett program i minnet och fixa referenser mellan delar av ett program som en länkare gör.Optimerande kompilatorer kan å andra sidan utföra komplexa omvandlingar av källkoden för att förbättra programmets exekveringshastighet eller andra egenskaper. Detta gör det möjligt för en programmerare att fokusera mer på de konceptuella aspekterna av ett program på högre nivå utan att oroa sig för detaljerna i den maskin som programmet körs på.
Att göra programinformation tillgänglig för människorRedigera
På grund av programvarans höga komplexitet är det inte möjligt att förstå de flesta program med en enda blick, inte ens för den mest erfarna programvaruutvecklaren.De abstraktioner som tillhandahålls av programmeringsspråk på hög nivå gör det också svårare att förstå sambandet mellan källkoden som skrivs av en programmerare och det faktiska programmets beteende.För att hitta fel i program och för att förhindra att nya fel skapas när ett program utvidgas använder en programutvecklare vissa programmeringsverktyg för att visualisera alla typer av information om program.
En felsökare gör det till exempel möjligt för en programmerare att extrahera information om ett kört program i termer av det källspråk som använts för att programmera det.Felsökaren kan beräkna värdet av en variabel i källprogrammet från tillståndet i den konkreta maskinen med hjälp av information som lagrats av kompilatorn. Minnesfelsökare kan direkt peka ut tvivelaktiga eller helt felaktiga minnesåtkomster i pågående program som annars kan förbli oupptäckta och som är en vanlig källa till programfel.