Tradurre dal linguaggio umano a quello del computerEdit
I computer moderni sono molto complessi e per programmarli in modo produttivo sono necessarie varie astrazioni. Per esempio, piuttosto che scrivere la rappresentazione binaria di un programma, un programmatore scriverà un programma in un linguaggio di programmazione come C, Java o Python. strumenti di programmazione come assemblatori, compilatori e linker traducono un programma da un linguaggio sorgente umano scrivibile e leggibile in bit e byte che possono essere eseguiti da un computer. Gli interpreti interpretano il programma al volo per produrre il comportamento desiderato.
Questi programmi eseguono molti compiti ben definiti e ripetitivi che sarebbero comunque lunghi e soggetti a errori se eseguiti da un umano, come disporre parti di un programma in memoria e sistemare i riferimenti tra parti di un programma come fa un linker.I compilatori di ottimizzazione d’altra parte possono eseguire trasformazioni complesse sul codice sorgente per migliorare la velocità di esecuzione o altre caratteristiche di un programma. Questo permette ad un programmatore di concentrarsi maggiormente sugli aspetti concettuali di più alto livello di un programma senza preoccuparsi dei dettagli della macchina su cui viene eseguito.
Rendere le informazioni del programma disponibili per gli esseri umaniEdit
A causa dell’alta complessità del software, non è possibile capire la maggior parte dei programmi con un solo sguardo anche per lo sviluppatore di software più esperto.Le astrazioni fornite dai linguaggi di programmazione di alto livello rendono anche difficile capire la connessione tra il codice sorgente scritto da un programmatore e il comportamento effettivo del programma.Per trovare i bug nei programmi e per prevenire la creazione di nuovi bug quando si estende un programma, uno sviluppatore di software usa alcuni strumenti di programmazione per visualizzare tutti i tipi di informazioni sui programmi.
Per esempio, un debugger permette a un programmatore di estrarre informazioni su un programma in esecuzione in termini di linguaggio sorgente usato per programmarlo.Il debugger può calcolare il valore di una variabile nel programma sorgente dallo stato della macchina concreta usando informazioni memorizzate dal compilatore. I debugger di memoria possono evidenziare direttamente gli accessi di memoria discutibili o del tutto errati dei programmi in esecuzione, che altrimenti potrebbero rimanere inosservati e sono una fonte comune di fallimenti del programma.