article

In informatica, un programma per calcolatore, o semplicemente programma, è la descrizione di un algoritmo in un linguaggio adatto a essere eseguito da un computer o da una macchina virtuale.

Un programma scritto in linguaggio macchina, e direttamente eseguibile da un computer (normalmente inteso come unione di hardware e sistema operativo), è detto anche programma eseguibile o programma binario. Un programma scritto in linguaggio assembly o in un linguaggio di programmazione ad alto livello, per contro, può essere eseguito solo utilizzando un compilatore o un interprete (o entrambi) e viene detto programma sorgente.

Il termine programma deve essere distinto da quello, più generico, di software; per programma si intende infatti un oggetto software che può essere caricato nella memoria di un computer ed eseguito in un nuovo processo. Altri oggetti software (per esempio le librerie) non hanno questa proprietà, ovvero non possono essere "eseguite" direttamente. Analogamente sarebbe opportuno distinguere il termine "programma" dal termine applicazione, che viene usato normalmente nella prospettiva dell'utente finale per intendere un "servizio" di cui l'utente può usufruire, a prescindere dal fatto che questo sia realizzato da un programma solo o da una collezione di programmi; una considerazione analoga si può applicare all'espressione sistema software, usata di norma per indicare esplicitamente una collezione di componenti software (programmi, librerie, file e così via) interagenti.

Nella maggior parte dei computer moderni, basati sull'architettura di von Neumann, l'esecuzione di un programma binario prevede che il programma stesso sia inizialmente caricato in memoria, tipicamente a partire da una periferica di memoria di massa, come un disco rigido. Viene quindi identificato il "punto d'ingresso" del programma (la prima istruzione), e il suo indirizzo di memoria viene copiato in un registro del processore detto program counter. A questo punto viene avviato un ciclo di fetch-execute che ripetutamente preleva l'istruzione "puntata" dal program counter, incrementa il program counter in modo da farlo puntare all'istruzione successiva, ed esegue l'istruzione caricata (in quest'ordine). Si può osservare che il ciclo fetch-execute, per default, comporta l'esecuzione sequenziale delle istruzioni del programma. L'istruzione corrente, tuttavia, può modificare il program counter; questa operazione corrisponde a un goto ed è il meccanismo fondamentale su cui si basa l'implementazione delle strutture di controllo più evolute da parte di compilatori e interpreti.

Al giorno d'oggi, è raro che un programma sia adatto all'esecuzione diretta da parte di un computer inteso come solo hardware; di norma, esso richiede una macchina virtuale che comprende l'hardware del computer con l'aggiunta di uno o più livelli di software che contribuiscono a creare l'ambiente di esecuzione adatto per il programma stesso. Gli stessi programmi eseguibili richiedono di norma la presenza di un determinato sistema operativo, di determinate librerie, e così via. Benché le linee generali del funzionamento di una macchina virtuale siano talvolta piuttosto simili a quelle descritte sopra per la macchina di von Neumann, in molti casi esse se ne discostano in maniera sostanziale, introducendo numerosi concetti non presenti in tale architettura (per esempio, lo stack dei record di attivazione). Si può dire che un linguaggio di programmazione è tanto più ad alto livello quanto più la corrispondente macchina virtuale esibisce caratteristiche concettualmente distanti dai meccanismi fondamentali dell'architettura di von Neumann (o, in generale, dell'architettura hardware sottostante).

Voci correlate


Collegamenti esterni


Programmazione

Programa d'ordenador | Софтуер | Programa informàtic | Program | Computerprogram | Computerprogramm | Computer program | Programaro | Software | Arvutiprogramm | برنامه (رایانه) | Tietokoneohjelma | Programme informatique | Programa informático | תוכנה | सोफ्टवेर | Softver | Szoftver | Program komputer | Programo | プログラム (コンピュータ) | 컴퓨터 프로그램 | Nivîsbarî | Programinė įranga | Datorprogramma | Software | Computerprogramma | Dataprogram | Software | Компьютерная программа | Computer program | Programska oprema | Datorprogram | โปรแกรมคอมพิวเตอร์ | Sanaq programı | Програмне забезпечення | 程序

 

This article is licensed under the GNU Free Documentation License. It uses material from the "Programma (informatica)".

Home Pageartsbusinesscomputersgameshealthhospitalshomekids & teensnewsphysiciansrecreationreferenceregionalscienceshoppingsocietysportsworld