Un computer, dal latino computare (calcolare) attraverso l'inglese, to compute (calcolare), anche detto calcolatore o elaboratore, è un dispositivo fisico che implementa il funzionamento di una macchina di Turing.
Durante la primavera del 1936 Turing inventò la macchina più generale mai concepita, e probabilmente mai concepibile. Il dispositivo virtuale era dotato di:
- un nastro di lunghezza infinita diviso in settori in grado di scorrere
- una testina di lettura e scrittura dei simboli scritti nei settori del nastro
- una tavola di istruzioni comprensibile alla macchina di tutte le attività da svolgere e tutti gli stati in cui la macchina poteva trovarsi.
Più semplicemente si può definire il computer una macchina in grado di elaborare dati, automatica e programmabile.
La pascalina è uno strumento di calcolo precursore della moderna calcolatrice. Fu inventata nel 1642 dal matematico e filosofo francese Blaise Pascal, da cui prese il nome. Lo strumento consente di addizionare e sottrarre numeri composti da un massimo di dodici cifre, operando automaticamente i riporti. Per molti secoli si pensò che fosse la prima macchina aritmetica mai realizzata. In realtà questo dispositivo a ruote era stato preceduto di circa vent'anni da un analogo tentativo dello scienziato tedesco Wilhelm Schickard. Di fatto è la realizzazione fisica di un solo algoritmo tramite movimenti meccanici.
Il primo, invece, ad avere l'idea di un calcolatore programmabile fu sir Charles Babbage (1791-1871), che tra il 1833 ed il 1842 progettò la sua "Macchina Analitica" (Analytical Engine). Doveva essere uno strumento di calcolo "universale", in quanto le sue operazioni potevano essere definite ogni volta insieme ai dati da elaborare, grazie ad un sistema di input basato su schede perforate: Babbage, però, non riuscì mai a costruirlo per mancanza di fondi... e di tecnologia, che ai tempi non garantiva ancora sufficiente precisione nella realizzazione e nell'assemblaggio delle minuscole parti meccaniche.
Nel 1854 si sviluppa la definizione dell'Algebra Booleana, dal nome del matematico britannico George Boole: nell'algebra booleana le procedure di calcolo si possono effettuare grazie a operatori logici matematici (AND, OR, NOT, ecc.).
Basandosi sull'algebra di Boole, nel 1936, il matematico Alan Mathison Turing, teorizzò una "macchina" o "automa" in grado di eseguire qualsiasi algoritmo per risolvere un problema in un numero finito di operazioni.
Fu solo negli anni '50 del XX secolo, tuttavia, che i progressi dell'elettronica consentirono di costruire i primi veri e propri computers (utilizzati, naturalmente, a scopo militare). Erano enormi "mainframe", occupavano intere stanze, assorbivano quantità spropositate di corrente ed il loro funzionamento richiedeva intere squadre di ingegneri; negli anni '70 del XX secolo, grazie ai progressi nella miniaturizzazione dei componenti, fu possibile costruire hardware con dimensioni paragonabili a quelle di un moderno desktop: nel decennio successivo, il computer sarebbe diventato "Personal", ovvero il PC che oggi conosciamo.
Una curiosità: nel 1991, bicentenario della nascita di Babbage, alcuni studiosi del Museo delle Scienze di Londra costruirono finalmente il Motore Analitico utilizzando i progetti originali: funzionava perfettamente.
Si parte dalla struttura più elementare e, anche se in seguito si sono sviluppati molti tipi di computer costruiti e specializzati per vari compiti, a prescindere da quanto siano grandi e da che cosa facciano, possiedono tutti quattro elementi: una unità centrale di elaborazione o CPU, una memoria, un dispositivo di ingresso/uscita, e un canale tramite i diversi elementi comunicano fra loro, in accordo all'architettura di von Neumann.
Con hardware, in ingegneria elettronica e informatica, si indica la parte fisica di un personal computer, ovvero tutte quelle parti magnetiche, ottiche, meccaniche ed elettroniche che ne consentono il funzionamento. Più in generale il termine si riferisce a qualsiasi componente fisico di una periferica o di una apparecchiatura elettronica. L'etimologia del vocabolo nasce dalla fusione di due termini della lingua inglese, hard (duro) e ware (manufatto, oggetto), in contrapposizione con il software, la parte logica (e perciò soft, "morbida") che compone il personal computer.
Gli elementi fondamentali dell'hardware sono:
-) CPU (Central Processing Unit) | L'unità centrale di elaborazione, anche chiamata processore, ha il compito di leggere i dati dalla memoria ed eseguirne le istruzioni del programma in memoria. Rappresenta il cervello del computer, in grado di eseguire gli algoritmi dei software, per ottenere dei risultati in uscita partendo dai dati in ingresso.
-) Memoria | In ambito informatico la memoria è la parte del computer destinata a conservare informazioni per un certo periodo di tempo. La memorizzazione di informazioni in memoria, e il successivo recupero delle medesime, sono funzioni fondamentali nel funzionamento del computer. Una memoria può essere considerata astrattamente come una sequenza finita di celle in cui ogni cella contiene una sequenza finita di bit. Pertanto lo spazio fisico della memoria può essere immaginato come una sequenza di locazioni, ognuna contenente un byte. Ogni locazione è individuata da un preciso indirizzo, normalmente espresso tramite un numero intero positivo.
-) Dispositivi ingresso/uscita | Con il termine input/output o I/O in informatica si intendono tutte le interfacce messe a disposizione dal sistema operativo, o più in generale da qualunque sistema di basso livello, ai programmi per effettuare uno scambio di dati o segnali con altri programmi, con l'utente (a livello sensoriale), col computer o con lo stesso sistema. Gli input sono i dati che il programma riceve in ingresso mentre gli output sono i dati che il programma trasmette verso un soggetto terzo. Anche i dati salvati su disco sono output dato che vengono inviati al gestore delle periferiche che provvede a memorizzarli nella memoria magnetica. Anche l'utente utilizza dispositivi di I/O infatti, per esempio il mouse, la tastiera ed il microfono sono dispositivi di Input mentre il monitor, la stampante e le casse audio sono dispositivi di Output.
-) Canale di comunicazione | Nei sistemi elettronici e nei computer in particolare, il bus è un canale che permette a periferiche e componenti del sistema di "dialogare" tra loro. Diversamente dalle connessioni punto-punto un solo bus può collegare tra loro più dispositivi (AGP, PCI Express, USB, FireWire, etc.).
Un algoritmo è una sequenza prestabilita di istruzioni per risolvere un problema o eseguire un compito. Il termine "algoritmo" è stato originariamente coniato dal matematico persiano Al-Khwarizmi, le cui opere nel IX secolo hanno avuto un’influenza significativa sulla matematica e sull’informatica. La parola "algoritmo" deriva dal termine latino "algorismi", che si ricollega proprio a Al-Khwarizmi.
Un algoritmo informatico descrive un procedimento metodico definito attraverso passaggi chiari e univoci. Questi passaggi portano da un input a un risultato desiderato e devono essere formulati in modo tale da poter essere eseguiti da un computer o da una macchina di Turing (un modello computazionale astratto dell’informatica).
Un esempio semplice di algoritmo è una ricetta di cucina: hai una lista di ingredienti (input) e una serie di passaggi da seguire per ottenere il piatto finito (output).
Un algoritmo applica una serie di passaggi di elaborazione chiaramente definiti agli input per ottenere un risultato specifico. Questi passaggi sono logicamente ordinati e deterministici, il che significa che con uno stesso insieme di input un algoritmo porta sempre allo stesso risultato.
Firmware è una parola formata dall’unione di firm e software, con il significato abbastanza eloquente di “componente logico permanente”. Il firmware è nient’altro che una sequenza di istruzioni – un programma informatico – che si trova integrato direttamente in un componente elettronico. Quando si dice che il firmware è una sequenza di istruzioni, significa che si tratta di un piccolo software in grado di eseguire compiti semplici.
Non è un sistema operativo, ma funge da ponte fra l’eventuale componente software di un dispositivo e la componente hardware.
Il firmware quindi si occupa di:
- avviare il componente elettronico su cui risiede;
- consentirgli di interagire con altri componenti hardware;
- implementare protocolli di comunicazione e interfacce di programmazione.
Il firmware è più diffuso di quanto si possa pensare. Visto il suo funzionamento in relazione all’hardware e al software di un dispositivo, si può immaginare come il più basilare scintilla di "vita" di un dispositivo elettronico. Lo hanno tutti.
I due firmware forse più conosciuti sono il BIOS e l’UEFI presenti nei computer. In realtà, in entrambi i casi non sono tanto parte del computer quanto della scheda madre, piccoli software che permettono: il controllo all’avvio del PC; l’ordine di componenti da avviare; la gestione di temperature e raffreddamento.
Quando accendiamo un dispositivo (computer, portatile, cellulare, etc...) e comincia a circolare l'energia elettrica ogni firmware del sistema si attivano e mettono in funzione tutti i componenti creando le basi per le funzionalità elementari; poi si carica il BIOS o UEFI della scheda madre che render il sistema complessivamente funzionante, fornendo un'interfaccia, sistemi di input, settaggi... a questo putno, viene caricato e avviato il Sistema Operativo (se disponibile su Hard Disk o memorie simili) che rende il dispositivo completamente funzionante.
In informatica il sistema operativo (SO o OS all'inglese "operating system") è un insieme di subroutine e strutture dati responsabile del controllo e della gestione dei componenti hardware che costituiscono un computer e dei programmi che su di esso vengono eseguiti. In sostanza sono un gruppo di programmi che gestiscono il funzionamento di base del computer. Il sistema operativo rimane sempre attivo dal momento in cui viene caricato (all’accensione della macchina) fino allo spegnimento.
Solitamente un sistema operativo mette a disposizione dell'utente un'interfaccia software (grafica o testuale) per accedere alle risorse hardware (dischi, memoria, I/O in generale) del sistema.
Il compito principale del sistema operativo è quello di permettere all'utente, umano o non, di interagire direttamente con la macchina. Sono gestite dal sistema operativo tutte le funzioni generali della macchina, come l’aspetto grafico delle visualizzazioni su monitor, la scrittura e la lettura dai dischi, la messa in esecuzione e la chiusura dei vari programmi, la ricezione e trasmissione di dati attraverso tutti i dispositivi di I/O. In definitiva si può dire che il Software di sistema serve alla macchina per funzionare, mentre il Software applicativo serve all'utente per lavorare.
Il sistema operativo risiede sull’hard disk come tutti gli altri programmi e viene caricato nella memoria RAM all’accensione della macchina. Un computer appena uscito dalla fabbrica non è neppure in grado di funzionare ma può solo eseguire il boot e arrestarsi con un messaggio d'errore quando rileva l'assenza del sistema operativo. In questo caso occorre eseguire l'installazione del sistema prima di qualunque altra operazione.
Esistono molti sistemi operativi: i più diffusi oggi sono i vari Windows della Microsoft (98, 2000, XP, Vista, Seven, 10, 11), MacOSX della Apple per i computer Macintosh, Linux e Unix in ambito universitario e della ricerca, o in generale per la gestione di reti di computer, e altri ancora. Molto diffuso fino ad alcuni anni fa era anche l’MS-DOS, oggi soppiantato da Windows. Si dice che questi sistemi sono user friendly (amichevoli verso l'utente) perché anche un utente inesperto riesce, entro certi limiti, ad intuirne il funzionamento.
Il computer, in quanto mero esecutore, nasce per eseguire programmi o applicazioni. Un computer senza un programma da eseguire è inutile, 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 (programmi o applicazioni) vengono comunemente chiamate software in contrapposizione all'hardware che è la parte fisica (elettronica), nel senso di materiale e tangibile, degli elaboratori. 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 al software stesso garantendo così grande flessibilità di utilizzo anche a chi non ne conosce i principi fisico-elettronici di funzionamento.
Il programma 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. Fornisce così all'utente un'interfaccia (grafica o testuale) con la macchina per inserire ed eseguire gli altri programmi.