# data[].attributes.body
Un computer (pronuncia italiana: /komˈpjuter/[1]), in italiano anche elaboratore (vedi «aspetti linguistici»), è una macchina automatizzata programmabile in grado di eseguire sia complessi calcoli matematici (calcolatore) sia altri tipi di elaborazioni dati (elaboratore)
È nato come macchina per automatizzare alcune capacità della mente umana come ad esempio il calcolo e la capacità di memorizzazione potenziandone la portata e applicandole alla soluzione di particolari problemi scientifici e ingegneristici.[4] In particolare il computer nasce esclusivamente come macchina in grado di eseguire calcoli matematici e, solo a partire dalla seconda metà del XX secolo, evolve in macchina in grado di eseguire le elaborazioni dati più varie. Nel corso della storia, l'implementazione tecnologica di questa macchina si è modificata profondamente sia nei meccanismi di funzionamento (meccanici, elettromeccanici ed elettronici), che nelle modalità di rappresentazione dell'informazione (analogica e digitale) che in altre caratteristiche (architettura interna, programmabilità, ecc.)
Ci si riferisce comunemente al computer come ad un dispositivo elettronico e digitale, programmabile a scopo generico, costruito secondo il modello teorico-computazionale della cosiddetta macchina di Turing e la cosiddetta architettura di von Neumann. Sebbene i computer programmabili a scopo generico siano oggi i più diffusi, esistono in specifici ambiti di applicazione modelli di computer dedicati a vari campi e settori come automazione industriale, domotica, computer grafica. In questa forma e al pari della televisione, esso rappresenta il mezzo tecnologico simbolo che ha maggiormente modificato le abitudini umane dopo la seconda guerra mondiale: la sua invenzione ha contribuito alla nascita e allo sviluppo dell'informatica moderna, che ha segnato l'avvento della cosiddetta terza rivoluzione industriale e della società dell'informazione.
Il computer è la versione più evoluta di una serie di strumenti di calcolo inventati sin dall'antichità: l'abaco, la macchina di Anticitera, i bastoncini di Nepero. Gli esemplari di macchine calcolatrici più famosi sono forse la macchina di Pascal (1645) e la macchina di Leibniz (1672), ma va ricordata anche la macchina calcolatrice di Wilhelm Schickard, del 1623, della quale sono rimasti soltanto i progetti.
Il passaggio da macchina calcolatrice a vero e proprio computer (nel senso di dispositivo programmabile) si deve a Charles Babbage. La sua Macchina analitica, progettata nel 1833 ma mai realizzata, è il primo computer della storia. Si trattava di una colossale macchina a ingranaggi, alimentata a vapore e dotata di input, output, unità di memoria, di unità di calcolo decimale con registro dell'accumulo dei dati e di un sistema di collegamento tra le varie parti. Contrariamente a quanto si potrebbe pensare, la macchina analitica era interamente digitale.
Nel corso dei secoli successivi il computer è passato attraverso vari stadi: il computer analogico (ne è un esempio l'analizzatore differenziale di Vannevar Bush del 1927), la macchina di Turing, i computer digitali meccanici ed elettromeccanici (la Serie Z di Konrad Zuse, la macchina di Stibitz e l'ASCC di Howard Aiken) ed infine quelli digitali ed elettronici (l'ABC di John Vincent Atanasoff e Clifford Berry, l'ENIAC di John Presper Eckert e John Mauchly, il Colossus britannico). Nel corso del XX secolo, inoltre, importanti progressi nel campo dell'elettronica - come il transistor e il circuito integrato - e dell'informatica hanno contribuito all'evoluzione del computer nella sua forma attuale passando da dispositivo elettronico presente solo in aziende e centri di ricerca a dispositivo ad uso comune e consumo di massa per gli utenti comuni.
Come per gran parte della terminologia informatica, tra il termine italiano «elaboratore» e il termine «computer» mutuato dall'inglese, nel linguaggio comune prevale nettamente l'uso del termine «computer».[6] In altre lingue europee accade diversamente: nella lingua francese si usa il termine ordinateur; nella lingua spagnola si usano i termini computadora e ordenador. La tendenza di usare parole inglesi è spesso biasimata in una diatriba sull'esterofilia della lingua italiana recente,[7][8] ma le proposte alternative, come il computiere[9] del professor Arrigo Castellani, accademico della Crusca e fondatore degli Studi Linguistici Italiani, non hanno ancora vasta applicazione. Negli anni 1960 e 1970 è stato utilizzato anche il termine «ordinatore», oggi in disuso, calco linguistico sul francese ordinateur.
In italiano il termine computer significa «calcolatore», che però ha un significato più ampio: può indicare anche una macchina non automatizzata (come ad esempio un regolo calcolatore), oppure una macchina automatizzata in grado di eseguire esclusivamente semplici calcoli matematici (come ad esempio una macchina addizionatrice). Nel secolo scorso poteva indicare anche un essere umano: la figura di «calcolatore» era un ruolo presso alcuni Osservatori astronomici italiani.
Il termine computer è il nome d'agente del verbo inglese to compute, derivato il francese computer.[10] L'etimo latino è composto da com = cum (insieme) e putare (tagliare, rendere netto – da cui l'odierno potare) e significa propriamente: «confrontare (o comparare) per trarre la somma netta».[11] In inglese, il termine indicava originariamente un essere umano,[12] incaricato di eseguire dei calcoli. Il primo utilizzo nel senso moderno è attestato nel 1947,[13][14] ma bisognerà attendere la metà degli anni 50 perché questa accezione diventi di uso comune (si notino, a questo proposito, i diversi acronimi dei computer ASCC ed ENIAC).
La struttura logica del computer attuale può ricondursi alla presenza di almeno cinque elementi fondamentali o sottosistemi:
Unità centrale di elaborazione (o CPU, acronimo di Central Processing Unit);
Memoria;
Schede elettroniche di espansione;
Dispositivi di input/output;
Canale di comunicazione dei dati (o Bus).
Questo schema venne proposto per la prima volta dal matematico John von Neumann all'interno di uno scritto informale del 1945 noto come First draft of a report on the EDVAC.[15] L'opera nasce dalla partecipazione di von Neumann al progetto ENIAC e raccoglie le idee provenienti da vari membri del team di sviluppo su come migliorare la funzionalità del computer nascituro.
Va inoltre ricordato che von Neumann era stato profondamente influenzato da Alan Turing,[16] il quale aveva proposto nel 1937[17] un modello di calcolo - passato alla storia come Macchina di Turing - che ben si prestava a descrivere le operazioni eseguite da un computer, pur non essendo stato concepito per quello scopo (Turing si stava occupando in quella sede del problema della computabilità, non della realizzazione di un calcolatore). Il funzionamento della Macchina di Turing suggerì a von Neumann l'idea che la memoria dovesse contenere non solo i risultati delle operazioni svolte dal computer, ma anche le istruzioni di programmazione.
Premesso il contributo degli altri progettisti dell'ENIAC e quello di Alan Turing, a von Neumann va il merito di aver approfondito, arricchito e messo a sistema gli spunti raccolti: motivo per il quale la struttura logica sopra indicata è oggi nota come architettura di von Neumann.
A differenza della mente umana, intesa come attività del cervello, che è in grado di affrontare e risolvere problemi nuovi a mezzo di facoltà cognitive come intuizione e ragionamento, il computer, in quanto macchina, pur partendo ugualmente da dei dati in input, è invece un semplice esecutore di ordini, compiti o istruzioni impartite dall'esterno per risolvere determinati problemi d'interesse attraverso un algoritmo di risoluzione del problema stesso in modo tale che a partire da determinati input produca determinati output attraverso elaborazione degli stessi. Esso nasce dunque per eseguire programmi o applicazioni: un computer senza un programma da eseguire è inutile.

Il computer, in quanto esecutore, ha dunque bisogno di essere istruito o programmato dall'esterno per mano competente di un programmatore: questi comunica/interagisce con la macchina attraverso i linguaggi di programmazione ad alto, medio o basso livello di astrazione (linguaggio macchina), che si differenziano tra loro secondo vari paradigmi di programmazione.
Queste parti immateriali che consentono l'utilizzo di programmi vengono comunemente chiamate software in contrapposizione all'hardware che è invece la parte fisica (elettronica), nel senso di materiale e tangibile, degli elaboratori e che consente l'esecuzione dei programmi stessi. Tutto ciò che si può ottenere con l'utilizzo accoppiato di strumenti informatici o risorse hardware e software costituisce un 'applicazione informatica. Tutto il resto, oltre ad hardware e software, sono i dati presenti nella memoria del computer, compresi all'interno di file e directory ed utilizzati in input dai programmi stessi per l'espletamento in output del particolare servizio richiesto dall'utente.
Ovviamente quando si lavora su un computer scompare agli occhi dell'utilizzatore il funzionamento hardware interno della macchina interfacciandosi con essa unicamente tramite il linguaggio di programmazione ad alto livello oppure grazie all'interfaccia utente del software stesso garantendo così quella grande flessibilità di utilizzo anche a chi non ne conosce i principi fisico-elettronici di funzionamento e che costituisce, assieme alla potenza di elaborazione, a quella di memorizzazione e alla riprogrammabilità, la chiave di successo dei computer stessi. Questo processo di astrazione a partire dal livello fisico è comune a tutta l'informatica.
Il programma o software di base di gran lunga più importante per un computer (se previsto nell'architettura generale) senza il quale la macchina non potrebbe funzionare è il sistema operativo, che si occupa di gestire la macchina, le sue risorse hardware e le altre applicazioni che vi sono eseguite.[18] Fornisce così all'utente un'interfaccia (grafica o testuale) con la macchina gestendo o coordinando in maniera efficiente le operazioni di Input/Output comandando le rispettive periferiche di sistema, gestendo le operazioni di esecuzione dei programmi applicativi assegnandovi di volta in volta le risorse hardware necessarie al processamento (scheduling) ed infine gestendo l'archiviazione e l'accesso ai dati memorizzati attraverso il cosiddetto file system.
Dal punto di vista hardware il computer inoltre è un sistema elettronico digitale (programmabile) che elabora cioè tutti i dati in formato digitale o numerico ovvero come sequenze di 0 e 1 corrispondenti a due livelli di tensione (alto e basso) corrispondenti a loro volta ai due stati fisici di interruttore aperto e chiuso. La logica elettronica interna di funzionamento è dunque basata sull'Algebra di Boole. Il linguaggio dell'hardware è propriamente un linguaggio macchina ovvero sequenze di bit cui si associano per semplice codifica i linguaggi a più alto livello. Ovviamente l'immissione dei dati in input alla macchina elaboratrice è di tipo alfa-numerico decimale per cui è necessaria un'operazione di traduzione o codifica delle informazioni in binario; viceversa per ottenere una visualizzazione in output dei risultati dell'elaborazione è necessaria una traduzione o codifica inversa da binario ad alfa-numerico decimale. Tale codice è generalmente il codice ASCII.
A larghe linee la progettazione di sistemi di elaborazione a livello hardware ricade in massima parte nel campo dell'ingegneria informatica (la quale a sua volta afferisce conoscenze dall'ingegneria elettronica), mentre lo sviluppo software è affidato in massima parte al campo dell'informatica pura. Pur tuttavia i confini tra le due discipline non sono rigidi bensì spesso assai sfumati.
In sostanza un computer è in grado di eseguire operazioni logiche come ad esempio calcoli numerici e storicamente è stato proprio il calcolo la prima forma di applicazione del computer ovvero il problema che ha spinto all'invenzione e alla realizzazione del computer stesso. Dalla nascita della struttura più elementare in seguito si sono sviluppati e succeduti molti tipi di computer, costruiti per svariati compiti, professionali e non, che, pur affinando sempre più il calcolo numerico fino ad arrivare al moderno calcolo scientifico ad elevate prestazioni grazie ai supercalcolatori, vanno ben oltre offrendo applicazioni diffusissime all'utente comune come la videoscrittura in sostituzione delle vecchie macchine da scrivere e in generale applicazioni di office automation, fogli di calcolo, creazione e gestione di database, la progettazione assistita al calcolatore, la computer grafica, la simulazione, sistemi elettronici di controllo, applicazioni di diagnostica medica, i videogiochi ecc.
Le chiavi di successo del computer sono dunque la grande potenza di elaborazione e la notevole capacità di memorizzazione che, in qualità di macchine, estendono le rispettive capacità umane di calcolo, processamento e memorizzazione consentendo una diminuzione sensibile dei tempi richiesti per la risoluzione di un problema dato o spesso la sua effettiva risoluzione, altrimenti non possibile. Ad essa si aggiunge la grande usabilità grazie al suo utilizzo in molti campi dell'elaborazione dati (vedi i sistemi embedded) e, sul fronte del consumo di massa, allo sviluppo di innumerevoli applicazioni a favore di una vasta gamma di utenti e, nella maggior parte dei casi, anche la semplicità di utilizzo da parte dell'utente stesso grazie all'implementazione di sistemi di interfacciamento utente/macchina molto spesso di tipo user-friendly.
Il termine computer, nel senso moderno-elettronico, ha ormai assunto un significato sempre più vasto comprendendo la semplice calcolatrice fino ai grandi sistemi di calcolo e venendo dunque ad assumere il significato più generale di sistemi di elaborazione dati. Tuttavia i computer possono essere idealmente divisi in alcune categorie molto generali, a seconda delle loro caratteristiche salienti, dell'uso che in generale se ne fa, del software e dei sistemi operativi che fanno girare e dell'epoca in cui sono comparsi. Le definizioni nel tempo sono molto cambiate e i confini non sono mai così netti.
Una prima classificazione in base all'uso distingue tra computer general purpose ovvero riprogrammabili per svariate applicazioni dall'utente e computer special purpose ovvero sistemi embedded dedicati ad una sola applicazione specifica come ad esempio i microcontrollori.
Un'altra classificazione è basata sull'accesso condiviso o meno alle risorse hardware: un computer general purpose può essere monoutente oppure multiutente sfruttando il cosiddetto timesharing delle risorse e con diversi sistemi operativi. Un computer monoutente può essere monotasking oppure multitasking ovvero può eseguire più processi in contemporanea (in pratica tutti i computer moderni). Ovviamente un computer multiutente è anche multitasking.
Una classificazione basata sulle dimensioni, sull'evoluzione storica e sulla destinazione d'uso è invece quella che segue. In linea di massima le dimensioni dei sistemi di elaborazione sono progressivamente diminuite nel tempo in virtù del miglioramento delle tecniche di elaborazione digitale ovvero all'alta capacità di integrazione dei transistor all'interno dei processori ed il parallelo aumento della capacità di processamento. Computer di grandi dimensioni rimangono ora solo nei grandi centri di calcolo.