Esempio di diagramma di flusso di un algoritmo di un programma

In informatica, un programma è una sequenza di istruzioni codificate in un linguaggio interpretabile da un elaboratore, espressione di un algoritmo per la risoluzione automatica di una certa classe di problemi.[1] L'insieme dei programmi presenti su un elaboratore ne forma il software.

Descrizione

[modifica | modifica wikitesto]
Codice sorgente ed esecuzione di un semplice programma dimostrativo (chiamato "Hello world") scritto in linguaggio Perl

Un programma è un insieme di linee di codice a loro volta costituite da un insieme di istruzioni. Il procedimento deve essere eseguibile attraverso un algoritmo affinché un programmatore possa codificarlo in istruzioni in un linguaggio di programmazione; in questa fase - detta programmazione - viene realizzato il codice sorgente del programma che definisce il suo flusso di esecuzione.

La programmazione del computer (conosciuta anche come sviluppo del software e ingegneria del software) è il processo di scrittura o modifica del codice sorgente. In un ambiente formale, un analista di sistema raccoglie informazioni dai manager su tutti i processi dell'organizzazione da automatizzare. Questo professionista prepara poi un piano dettagliato per il sistema nuovo o modificato. Il piano assomiglia alle planimetrie utilizzate in architettura. Un programmatore di computer è uno specialista responsabile di scrivere o modificare il codice sorgente per implementare il piano dettagliato.[2]

Il termine indica una sequenza logicamente ordinata di comandi, istruzioni e operazioni e differisce dal termine - più generico - di software in quanto un programma è un software che può essere caricato nella memoria RAM per essere eseguito sotto forma di processo, includendo quindi anche quei programmi che girano in background come ad esempio in un sistema operativo in esecuzione come per esempio le librerie. Analogamente, differisce dal termine "applicazione" il quale viene usato normalmente nella prospettiva dell'utente finale per intendere un servizio di cui questi può usufruire, a prescindere dal fatto che questo sia realizzato da un solo programma o da un insieme di programmi - e infatti i programmi operanti su sistemi embedded non sono dunque applicazioni per l'utente ma consentono comunque la funzionalità del dispositivo. In questo caso l'applicazione si compone di un'interfaccia utente e di un nucleo elaborativo.[non chiaro] L'espressione "sistema software" è usata poi, di norma, per indicare esplicitamente una collezione di componenti software come programmi, librerie, file e altro, interagenti fra loro.

Scrittura

[modifica | modifica wikitesto]
Codice sorgente scritto in C++

Un programma, per essere scritto, deve rispettare la sintassi e la semantica del particolare linguaggio di programmazione scelto. Errori di scrittura vengono poi rilevati e segnalati in fase di compilazione o interpretazione. Il presupposto base per la corretta scrittura e funzionalità del programma, secondo le specifiche desiderate, è anche la corretta elaborazione a monte dell'algoritmo di risoluzione del problema da automatizzare.

Compilazione/interpretazione e linking

[modifica | modifica wikitesto]
Codice sorgente in HTML e JavaScript

L'esecuzione del codice, una volta precompilato, compilato e/o interpretato, avviene sequenzialmente nel rispetto di selezioni/controlli e 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.

Esecuzione

[modifica | modifica wikitesto]
Livello di esecuzione dall'utente all'hardware
Ciclo del processore (fetch-execute)

Un programma scritto in linguaggio assembly o in un linguaggio di programmazione ad alto livello (codice sorgente), può essere eseguito solo compilando il codice sorgente in codice oggetto ovvero traducendolo in linguaggio macchina che darà vita poi al programma eseguibile, oppure servendosi di un interprete.

Note

[modifica | modifica wikitesto]
  1. ^ computer program, su TheFreeDictionary.com. URL consultato il 6 aprile 2022.
  2. ^ George Walter Reynolds, Principles of information systems : a managerial approach, 6th ed, Thomson/Course Technology, 2003, ISBN 0-619-06489-7, OCLC 50919802. URL consultato il 6 aprile 2022.

Voci correlate

[modifica | modifica wikitesto]

Altri progetti

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
Controllo di autoritàLCCN (ENsh85029524 · GND (DE4047394-6 · BNE (ESXX526558 (data) · J9U (ENHE987007545774305171
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica