Codice sorgente

Da Wikipedia, l'enciclopedia libera.

Il codice sorgente (spesso detto semplicemente sorgente o codice), in informatica, è il testo di un algoritmo di un programma scritto in un linguaggio di programmazione da parte di un programmatore in fase di programmazione.

Il sorgente scritto dovrà essere opportunamente elaborato per arrivare a un programma eseguibile dal processore ponendosi dunque come punto di partenza ("sorgente") dell'intero processo che porta all'esecuzione del programma stesso da parte dell'hardware della macchina, e che può includere altre fasi come precompilazione, compilazione, interpretazione, caricamento e linking (a seconda del tipo di linguaggio di programmazione utilizzato) per concludersi con l'installazione.

Per estensione, l'espressione "codice sorgente" viene utilizzata anche per riferirsi a testo scritto in linguaggi informatici non di programmazione, come i linguaggi di markup (HTML, XML e via dicendo).

Caratteristiche[modifica | modifica wikitesto]

Scrittura[modifica | modifica wikitesto]

Esempio di codice sorgente in Python. L'evidenziazione di alcune parti di codice è uno strumento comune fra i programmatori per orientarsi fra il codice. Visibile anche l'indentazione, le strutture condizionali e iterative.

La scrittura del codice sorgente presuppone la risoluzione (a monte o di pari passo) del problema iniziale da risolvere e automatizzare sotto forma di algoritmo risolutivo (eventualmente ricorrendo ad un diagramma di flusso o ad uno pseudolinguaggio), di cui la fase di scrittura del codice rappresenta la fase implementativa (programmazione) ad opera di un programmatore tramite un editor di testo (spesso compreso all'interno di un ambiente di sviluppo integrato) rispettando lessico e sintassi del particolare linguaggio di programmazione scelto/utilizzato.

Tipicamente la scrittura del codice è una parte dell'intera fase di sviluppo (progettazione, realizzazione e testing) del software, gestita in tutti i suoi aspetti tramite conoscenze dell'ingegneria del software da una squadra di sviluppatori. Precede la scrittura del codice l'analisi dei requisiti e la strutturazione del software in moduli, mentre la segue la fase di debugging ovvero l'individuazione e risoluzione degli eventuali bug del codice stesso (ad es. tramite debugger) secondo le regole della sintassi e della semantica del linguaggio e l'effettiva rispondenza alle specifiche iniziali richieste (testing).

Nell'ambito dello sviluppo software il codice sorgente di un programma e la sua complessità è valutato in termini di linee di codice prodotte o da produrre, mentre i tempi di realizzazione in anni-uomo nell'ipotesi puramente indicativa-comparativa di un singolo sviluppatore.

Nel caso di software proprietario il codice sorgente non è normalmente rilasciato all'utente dallo sviluppatore come lo è sempre il codice eseguibile per programmi compilati o il bytecode nel caso di programmi interpretati/semiinterpretati, mentre invece è rilasciato nel caso di software open source e software libero.

Struttura[modifica | modifica wikitesto]

Tipicamente un codice sorgente si compone di dichiarazioni di variabili (locali e/o globali), eventuale inizializzazione di queste tramite assegnamento, costanti, istruzioni e funzioni che agiscono sulle variabili, strutture di controllo del flusso di esecuzione, secondo un certo paradigma di programmazione. Particolare rilevanza teorica a riguardo assume il teorema di Böhm-Jacopini che afferma che qualunque algoritmo può essere implementato utilizzando tre sole strutture, la sequenza, la selezione ed il ciclo (iterazione), da applicare ricorsivamente alla composizione di istruzioni elementari.

In linea teorica un buono stile di programmazione prevede la stesura del codice sorgente cercando un compromesso tra la leggibilità del codice, a vantaggio della manutenibilità, e l'efficienza computazionale in termini di tempo di esecuzione e consumo di risorse (memoria e processore).

Esecuzione[modifica | modifica wikitesto]

L'esecuzione del codice, una volta compilato e/o interpretato, avviene sequenzialmente nel rispetto di selezioni/controlli e iterazioni/iterazioni; spesso inoltre il codice risulta altamente concatenato ovvero il risultato di una certa istruzione (ad es. il valore di una certa variabile) è sfruttato come input o è propedeutico a istruzioni successive secondo la logica del divide et impera.

Norme[modifica | modifica wikitesto]

Nella scrittura del codice, per migliorare la leggibilità e intelligibilità del codice sorgente a favore di chi non ha scritto il codice e favorire l'eventuale debugging, è buona prassi come regole di stile:

  • evidenziare parti di codice, tipicamente effettuata di default dall'editor di testo del codice sorgente;
  • indentare il codice mettendo in risalto con opportuni livelli di tabulazione (rientro) le varie parti del codice stesso;
  • inserire commenti ovvero righe di testo che non fanno parte del codice in sé (cioè dell'algoritmo risolutivo codificato in linguaggio di programmazione), ma che ne commentano il significato/funzionalità almeno nei suoi passi fondamentali. La corretta sintassi per l’inserimento dei commenti (marcatore del commento) varia tipicamente da linguaggio di programmazione ad un altro con possibilità di inserimento di commento su una o più righe.

Errori[modifica | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi Bug (informatica).

Durante lo sviluppo e l'esecuzione di un codice sorgente possono verificarsi i cosiddetti errori di programmazione che si possono distinguere essenzialmente in tre principali categorie: errori di sintassi, errori di logica ed errori di runtime.

  • Gli errori di sintassi sono gli errori che si commettono nella fase di scrittura del programma nel linguaggio scelto, fase successiva alla progettazione dell'algoritmo. Sono In genere errori di ortografia nella scrittura del codice o nella sintassi delle istruzioni. Gli errori di sintassi impediscono la compilazione del programma da parte del compilatore che quindi tipicamente segnalerà la presenza dell'errore. Questo tipo di errore è spesso segnalato al programmatore direttamente dall'editor dell'ambiente integrato di sviluppo (IDE) utilizzato, risultando dunque di facile individuazione e soluzione.
  • Gli errori di logica (o semantica) sono gli errori che si commettono nella fase di progettazione dell'algoritmo: possono essere causati da una mancata comprensione del problema da calcolare o dei vincoli che i dati in input devono rispettare, o ancora nella valutazione del test dell'algoritmo. Questi errori conducono tipicamente alla progettazione di un algoritmo che non fornisce l'output richiesto nell'ambito di una o più istanze del problema da risolvere. Sono difficili da individuare e spesso si deve ricorrere al debugging tramite il debugger dell'IDE.
  • Gli errori di runtime sono errori che possono verificarsi nella fase di esecuzione del programma, anche se l'algoritmo è corretto e il codice viene compilato correttamente. Spesso sono relativi all'utilizzo della memoria da parte del programma stesso, che tenta ad esempio di scrivere ad una locazione di memoria alla quale non ha accesso. Questi errori si verificano principalmente nell'utilizzo dei puntatori e in programmazione dinamica.

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica