Programma
Un programma, nel contesto della programmazione informatica, è una sequenza di istruzioni o un insieme di codice scritto in un linguaggio di programmazione specifico. Queste istruzioni sono progettate per essere eseguite da un computer o da un altro dispositivo programmabile al fine di svolgere una serie di operazioni o compiti specifici. In altre parole, un programma è un software che contiene un insieme di istruzioni che guidano un computer o un dispositivo per svolgere un compito specifico.
Generalmente un programma è costituito da istruzioni scritte in un linguaggio di programmazione. Queste istruzioni indicano al computer cosa fare passo dopo passo. Perché un programma sia utile, deve essere eseguito su un computer o su un dispositivo programmabile. Durante l’esecuzione, il computer segue le istruzioni del programma e produce risultati in base a esse.
Molte volte, i programmi interagiscono con l’utente o con altre parti del sistema attraverso input e output. Ad esempio, un programma può richiedere all’utente di inserire dati tramite una tastiera e quindi visualizzare i risultati su uno schermo.
Linguaggio di programmazione
Un linguaggio di programmazione è un insieme di regole e simboli utilizzati per scrivere programmi o software che possono essere eseguiti da un computer o da un altro dispositivo programmabile. Questi linguaggi sono progettati per consentire agli sviluppatori di comunicare con il computer in modo da poter specificare le azioni che il computer deve eseguire. In breve, un linguaggio di programmazione è il mezzo attraverso il quale gli esseri umani possono istruire il computer per svolgere determinate operazioni.
Ogni linguaggio di programmazione ha una sintassi specifica, che definisce come devono essere scritte le istruzioni. La semantica di un linguaggio definisce il significato di queste istruzioni. Gli sviluppatori devono seguire le regole di sintassi e comprendere la semantica per scrivere codice corretto e funzionante.
Con il termine linguaggio di programmazione si intende un insieme di frasi (detti “programmi”) per cui esiste un calcolatore che li esegue. Non tutte le frasi sono eseguibili. Ad esempio se considerassimo le seguenti frasi:
- Matteo è giovane
- Mattia ha la penna
- Maria mangia la mela
- Giuditta guarda la televisione
Come possiamo allora definire delle frasi formalmente eseguibili? Per farlo dobbiamo definire una grammatica cioè un insieme di regole che permettono di derivare solamente ed esattamente gli elementi dell’insieme che stiamo definendo.
Linguaggio Macchina
La struttura di un calcolatore elettronico moderno (intendiamo anche i moderni smartphone o smartwatch), è stata definita da un grande matematico chiamato Von Neumann. Egli progettò un calcolatore elettronico avente i seguente blocchi:
- CPU: Central Processing Unit , unità che permette di eseguire le istruzioni delle quali sono composti i programmi;
- Memoria: memoria nella quale vengono caricati i programmi per essere eseguiti;
- I/O: dispositivi di input (come tastiera, mouse), output (come schermo, stampante);
- BUS: canale di connessione dei vari blocchi.
Il linguaggio usato dal processore è detto codice macchina. Si tratta di dati come quelli che arrivano al processore, costituiti da una serie di 0 e di 1 (codici binari). Ad esempio una istruzione scritta in linguaggio macchina potrebbe essere:
1010100101111000
Quindi il linguaggio macchina è un linguaggio di programmazione molto basico e specifico che è direttamente comprensibile e eseguibile da un computer o da una CPU (Unità Centrale di Elaborazione). È il linguaggio più basso livello con cui un computer può operare ed è costituito da una serie di istruzioni binarie o esadecimali che corrispondono direttamente a operazioni eseguibili dalla CPU.
Come vediamo questo linguaggio non è comprensibile all’uomo è per questo da subito sono stati creati dei linguaggi comprensibili per scrivere agevolmente i programmi per il calcolatore. processore.
Chiaramente ogni programma scritto con questi linguaggi deve sempre essere prima convertito nel linguaggio macchina intramezzato da linguaggi intermedi messi a punto per essere compresi dall’uomo. Il codice scritto in questo tipo di linguaggio è poi trasformato in linguaggio macchina per essere utilizzabile dall’esecutore.
Linguaggio Assembly
L’assembly, o linguaggio assembly, è un linguaggio di basso livello utilizzato nella programmazione informatica. È un linguaggio a basso livello perché offre una rappresentazione simbolica delle istruzioni di una CPU (Unità Centrale di Elaborazione), ma è ancora più comprensibile per gli esseri umani rispetto al linguaggio macchina puro. L’assembly è spesso utilizzato per scrivere programmi che interagiscono direttamente con l’hardware del computer o per ottimizzare il codice in applicazioni specifiche. Le istruzioni dell’assembly sono rappresentate da mnemonici (o opcode) e operandi simbolici. I mnemonici sono abbreviazioni leggibili delle istruzioni della CPU, mentre gli operandi indicano gli indirizzi di memoria o i registri coinvolti nell’operazione. Un esempio di istruzione Assembly è:
MOV EAX, 10
che comanda alla CPU di spostare il valore 10 nel registro EAX.
- Scrittura del codice sorgente in linguaggio assembly: Gli sviluppatori scrivono il codice sorgente in linguaggio assembly utilizzando mnemonici, registri e operandi simbolici per rappresentare istruzioni e dati.
- Compilazione tramite l’assemblatore: Il codice sorgente in linguaggio assembly viene passato all’assemblatore, che esegue la traduzione in codice macchina. L’assemblatore cerca di corrispondere i mnemonici e gli operandi alle istruzioni specifiche supportate dall’architettura della CPU di destinazione.
- Generazione del file eseguibile: L’assemblatore produce un file eseguibile che contiene le istruzioni in codice macchina. Questo file può essere eseguito direttamente dalla CPU o da un sistema operativo
Paradigmi
In informatica e programmazione, il termine “paradigma” si riferisce a un modello o a un approccio generale alla progettazione e alla risoluzione di problemi. È un insieme di principi, concetti e pratiche che guidano la progettazione e l’implementazione di software. I paradigmi di programmazione rappresentano un modo di pensare e di affrontare i problemi, e influenzano il modo in cui vengono scritti i programmi.
Nel modello procedurale rientrano tutti i linguaggi di tipo algoritmico. Nei linguaggi imperativi i programmi sono composti da una serie di istruzioni che modificano lo stato del programma. Gli sviluppatori specificano come le operazioni devono essere eseguite passo dopo passo. Il linguaggio C++ è un esempio di linguaggio imperativo.
Nella programmazione orientata agli oggetti, i programmi sono organizzati intorno agli “oggetti”, che rappresentano entità del mondo reale o astratte. Gli oggetti hanno attributi (variabili di istanza) e metodi (funzioni) che operano su di essi. Linguaggi come Java, C++, e Python sono orientati agli oggetti.
La programmazione logica è un paradigma di programmazione che si basa sulla logica matematica e sulla deduzione. In questo paradigma, i programmi vengono scritti in modo dichiarativo, definendo le relazioni tra variabili e facendo uso di regole di inferenza logica per dedurre automaticamente risultati desiderati. La programmazione logica è strettamente associata al linguaggio di programmazione Prolog (Programming in Logic), che è uno dei linguaggi più noti per questo paradigma.
Infine la programmazione funzionale è un paradigma di programmazione che tratta il calcolo come una valutazione di funzioni matematiche e si basa su concetti dalla teoria dei linguaggi funzionali.
Compilatori e interpreti
La trasformazione del programma sorgente in programma eseguibile avviene sostanzialmente secondo tre alternative:
- compilazione (linguaggi come C, C++, Fortran, Pascal, ecc.)
- interpretazione (Basic, Python, Javascript)
- compilazione iniziale e successiva interpretazione (Java)
Un linguaggio invece si dice compilato se viene tradotto tutto in una volta da un programma compilatore che crea un nuovo file tradotto in linguaggio macchina pronto ad essere eseguito
Un linguaggio si dice interpretato quando per eseguirlo è necessario un programma aggiuntivo chiamato interprete che traduce man mano le istruzioni nel linguaggio macchina.
Torna a Programmazione Strutturata