Programma sorgente
Programma sorgente è una nozione usata come sinonimo di codice sorgente. Sono le istruzioni che un programma per computer trasmette a un computer in modo che possa essere eseguito. Queste istruzioni sono righe di testo scritte in un linguaggio di programmazione (una struttura capace di fornire istruzioni informatiche da una data base semantica e sintattica).
Si può dire che, nel programma sorgente, un pezzo di software dettaglia la totalità del suo funzionamento. Un programmatore è colui che sviluppa queste istruzioni, rispettando i principi del linguaggio di programmazione scelto. Il sistema in questione, quando accede al programma sorgente, interpreta le istruzioni e le implementa.
Si noti che il programma sorgente non è interpretato direttamente dall'hardware: le istruzioni sono tradotte in un linguaggio diverso, che l'hardware è in grado di eseguire. Il processo di traduzione è effettuato da interpreti, assemblatori e compilatori, tra diversi sistemi di traduzione.
Quello che gli interpreti, gli assemblatori e così via fanno è convertire il programma sorgente in codice binario, fatto di uno e zero, che segnala quando l'energia elettrica deve essere trasmessa, o meno, attraverso i dispositivi.
La creazione di un programma sorgente è protetta da diritti di proprietà intellettuale. Il programmatore decide se il suo programma sorgente può essere reso accessibile ad altri programmatori. Quando il codice sorgente viene chiuso, si indica che sarà accessibile solo al suo creatore e a quelli autorizzati dal creatore in anticipo. Se il codice sorgente è aperto, invece, il programmatore autorizza altri a leggere, modificare e ridistribuire il programma sorgente.
Si deve notare che mentre i linguaggi di programmazione esistono in un numero limitato e, rispetto alle lingue, non così esteso, il modo in cui ogni programmatore può usarli è praticamente illimitato. Un linguaggio di programmazione è costituito da una combinazione di simboli e di regole sintattiche e semantiche, che stabiliscono certi limiti e forniscono un set di strumenti di base per lo sviluppo del software.
A seconda delle capacità, delle conoscenze e della tenacia di un programmatore, le possibilità possono sembrare infinite, anche se usa sempre lo stesso set di simboli ed è vincolato dalle stesse regole di chiunque altro. Per questo motivo, anche se due individui conoscono a memoria tutte le parole riservate, i tipi di dati, i condizionali (if, else if) e i cicli (for, while) a loro disposizione, il modo in cui uno li usa può essere illeggibile per l'altro, o per la loro complessità o per certe decisioni di progettazione.
In questo senso, il programma sorgente è un riflesso della personalità e del modo di pensare di ogni programmatore, che può essere molto rivelatore. Tra i tratti più comuni ci sono i seguenti:
* indentazione impeccabile: alcuni sviluppatori non possono sopportare il pensiero di dimenticare un'indentazione quando scrivono il loro codice. È importante menzionare che in Python, per esempio, l'indentazione è essenziale per una corretta interpretazione, ma questo non è il caso nella maggior parte delle lingue, quindi è una decisione molto personale;
* giuste interruzioni di riga: simile al punto precedente, c'è chi non aggiunge un'interruzione di riga se non è assolutamente necessario. Naturalmente, anche questa è una scelta personale, dato che non esiste una regola universale che determini il numero giusto;
* disordine: anche se il programmatore stereotipato è caratterizzato da un'ossessione per l'ordine e il controllo, ci sono alcuni che producono codice che sembra essere versamenti casuali di caratteri, senza alcun tipo di regola o schema da seguire. Inutile dire che questo non è un fenomeno molto frequente.