In
informatica
, il
codice sorgente
(spesso detto
sorgente
o
codice
o
listato
[1]
) e il
testo
di un
algoritmo
di un
programma
scritto in un determinato
linguaggio di programmazione
, compreso all'interno di un
file sorgente
, che definisce il
flusso di esecuzione
del programma stesso, ovvero la sua codifica
software
.
Il codice sorgente, scritto in un linguaggio di programmazione leggibile dagli esseri umani, fornisce indicazioni ai computer affinche questi possano tradurle (compilarle) in
linguaggio macchina
, costituendo cosi la base di siti web e programmi. Il processo di compilazione include i link alle librerie di sistema.
[2]
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
(ad esempio
HTML
o
XML
) o i
linguaggi di interrogazione
, come
Structured Query Language
(SQL)
Il codice sorgente deve 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 puo includere altre fasi come
precompilazione
,
compilazione
,
interpretazione
, caricamento e
linking
(a seconda del tipo di linguaggio di programmazione utilizzato) per concludersi con l'
installazione
.
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 al riguardo assume il
teorema di Bohm-Jacopini
che afferma che qualunque algoritmo puo 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 leggibilita del codice, a vantaggio della manutenibilita, e l'efficienza computazionale in termini di tempo di esecuzione e consumo di
risorse
(
memoria
e processore). Secondo la
best practice
si cerchera dunque di eliminare o evitare il piu possibile
codice ridondante
e
codice morto
.
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.
Il programmatore esperto salta spesso la fase di sviluppo in termini di algoritmo e passa direttamente alla fase successiva, pensando direttamente la soluzione algoritmica del problema dato in termini di linguaggio di codifica ovvero
linguaggio di programmazione
o in pseudocodice.
Inoltre molti linguaggi per semplificare e velocizzare la stesura del codice mettono a disposizione una serie di
librerie
software che consentono di richiamare codice gia scritto (
riuso di codice
) sotto forma di
funzioni
utili e ricorrenti raggruppate in cosiddette API (
application programming interface
) che vengono fornite al programmatore anche sotto forma di documentazione. In fase di
compilazione
il cosiddetto
linker
"collega" il programma scritto con le librerie richiamate. Spesso per la scrittura del codice si fa uso di un
software development kit
(SDK) e piu spesso di un
IDE
a cui e possible agganciare la
piattaforma
software per lo sviluppo compresa nell'SDK.
Tipicamente la scrittura del codice e 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 complessita e 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.
Nella scrittura del codice, per migliorare la
leggibilita
e intelligibilita del codice sorgente a favore di chi non ha scritto il codice e favorire l'eventuale
debugging
, e buona prassi come
regole di stile
:
- evidenziare parti di codice, tramite
grassetto
o a colori, operazione tipicamente effettuata di
default
dall'editor di testo del codice sorgente;
- indentazione
del 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 se (cioe dell'algoritmo risolutivo codificato in linguaggio di programmazione), ma che ne commentano il significato/funzionalita 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 possibilita di inserimento di commento su una o piu righe.
Alla fine della stesura del codice il programmatore opera una prima fase di test valutando se l'output del programma e quello atteso compilando/interpretando ed eseguendo il codice. 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
run-time
.
Nel caso di
software proprietario
, il codice sorgente non e normalmente fornito all'utente dallo sviluppatore come lo e sempre il codice eseguibile per programmi compilati o il
bytecode
nel caso di programmi interpretati/semiinterpretati, mentre invece e disponibile nel caso di software
open source
e
software libero
.
- Codice sorgente
, in
Enciclopedia della scienza e della tecnica
, Roma, Istituto dell'Enciclopedia Italiana, 2007-2008.
- Mauro Capelli,
codice sorgente
, in
Enciclopedia della scienza e della tecnica
,
Istituto dell'Enciclopedia Italiana
, 2007-2008.
- codice sorgente
, in
Enciclopedia della Matematica
,
Istituto dell'Enciclopedia Italiana
, 2013.
- (
EN
)
Opere riguardanti Source code (Computer science)
, su
Open Library
,
Internet Archive
.
- (
EN
)
The Hello World Collection
, su
helloworldcollection.de
.