# Terminale (informatica)

Un terminale in campo informatico, è un dispositivo hardware, elettronico o elettromeccanico, che viene usato per inserire dati in ingresso ad un computer o in un sistema di elaborazione e riceverli in uscita (output) per la loro visualizzazione. Per estensione, il termine indica anche il dispositivo equivalente realizzato dal sistema operativo o tramite un emulatore software (terminale virtuale).
In un'architettura di rete client-server possono essere considerati terminali anche i server in quanto elaboratori che ricadono all'estremità opposta di rete rispetto ai client. Il concetto di Terminale, nelle sue diverse implementazioni, costituisce l'interfaccia tra le applicazioni con interfaccia testuale e i molteplici dispositivi di visualizzazione che queste possono usare.
Il termine videoterminale (o abbreviato VDT) si riferisce esplicitamente al dispositivo fisico, e viene usato ad esempio in ambito legislativo. Nell'ambito delle reti wireless il terminale ricetrasmittente (dispositivo mobile) è spesso etichettato come terminale mobile (vedi Terminale nelle telecomunicazioni).

## Storia

I primi terminali erano delle telescriventi (TTY), ovvero apparecchiature che stampavano i risultati dell'elaborazione su carta; successivamente si sono diffuse versioni a schermo. Normalmente un terminale comunica col computer tramite una linea seriale, che di solito è un'interfaccia RS232 o, nel caso di sistemi IBM, un sistema di comunicazione su cavo coassiale che utilizza il protocollo SNA.
I terminali più vecchi erano costruiti con porte logiche singole e non avevano una CPU. Una delle motivazioni che spinsero verso lo sviluppo del microprocessore fu il tentativo di semplificare e ridurre i componenti elettronici dei terminali.
Più avanti negli anni furono introdotti i cosiddetti terminali intelligenti, come il VT100 e il VT102, che ancora oggi sono spessissimo emulati in software. Furono denominati "intelligenti" perché avevano la capacità di interpretare speciali sequenze di escape per posizionare il cursore e controllare la visualizzazione.
Molti terminali erano connessi a computer mainframe e tipicamente avevano uno schermo di colore verde o ambra. Prima dell'introduzione su larga scala del monitor CRT, si usavano alcuni (seppur non molti) terminali a stampa a colori.

## Descrizione
### Terminali grafici

Esistono terminali in grado di visualizzare non solo testo ma anche grafica vettoriale e a raster. Il computer principale invia comandi di disegno al terminale, e il terminale invia al computer principale l'input che l'utente dà tramite una tastiera o un dispositivo di puntamento.
Al giorno d'oggi i più semplici terminali grafici sono stati resi completamente obsoleti soprattutto dall'X Window System, che non solo è molto potente ma anche altamente standardizzato, e non soffre quindi di problemi di compatibilità. Nonostante ciò, alcuni programmi come xterm continuano ad emulare terminali grafici come il Tektronix 4014. Un terminale X è un computer dedicato all'esecuzione del solo server X dell'X Window System, che presuppone l'esistenza di un server su cui vengano eseguite le applicazioni.

### Oggi

Dall'avvento e conseguente crescita di popolarità del personal computer, l'uso di terminali veri e propri per interfacciarsi con i computer è andato scomparendo. Usando il monitor e la tastiera, i sistemi operativi moderni come Linux e i derivati di BSD implementano terminali virtuali, che sono in massima parte indipendenti dall'hardware usato.
Durante l'uso di un'interfaccia grafica basata sull'X Window System, come ad esempio GNOME o KDE, non è possibile accedere alle periferiche che consentirebbero l'uso di un terminale virtuale. In questo caso viene normalmente usato un emulatore di terminale, un'applicazione che "finge" di essere un terminale e fa sì che l'utente possa continuare ad accedere al computer nel modo in cui è abituato.

### Discussione tecnica

Per un'applicazione, il modo più semplice di usare un terminale consiste nello scrivere e leggere stringhe di testo sequenzialmente. Il testo in output scorre automaticamente in modo che ne siano visibili solo le ultime n linee. Il testo in input viene tenuto in un buffer fino a che non si prema il tasto Enter, così che l'applicazione riceva stringhe di testo già complete. In questo modo l'applicazione non deve sapere molto sul terminale.
Per molte applicazioni interattive questo non è sufficiente. Una delle più comuni migliorie è l'editing della riga di comando (assistito da librerie come readline); un'altra caratteristica utile è l'accesso alla history dei comandi, cioè alle linee battute in precedenza. Molte shell interattive traggono vantaggio da questi accorgimenti.
Un'interattività ancora maggiore si ha con le applicazioni a pieno schermo; esse ne prendono il controllo totale e la risposta alla battitura di un tasto è immediatamente visibile a video. Questo metodo è molto comodo per applicazioni come editori di testo, file manager e web browser. In aggiunta il programma di controllo riesce a modificare il colore e la luminosità dei caratteri sullo schermo, facendo apparire anche i caratteri sottolineati o lampeggianti, nonché i caratteri speciali (ad esempio i primi disegni grafici).
Per riuscire a fare tutto questo l'applicazione non deve limitarsi ad operare con stringhe piane ma anche con caratteri di controllo e sequenze di escape; questi ultimi caratteri consentono di muovere il cursore in qualsiasi posizione, ordinano di cancellare porzioni di schermo, di cambiare colori o di far apparire sul video i caratteri grafici speciali. L'applicazione infine deve rispondere anche alla pressione dei tasti funzione.
Il grosso problema è che esistono numerosi tipi di terminali e di emulatori, ognuno con le sue particolarità e gli ordini specifici a cui risponde. Per superarlo sono state create delle librerie specifiche e comuni (ad esempio curses sviluppato sotto UNIX). Sfortunatamente le librerie, i database e gli stessi emulatori hanno sempre offerto molti errori di programmazione così che non è inusuale vedere i caratteri non riproposti correttamente a video o che i tasti funzione non rispondano agli ordini previsti. In questo caso è necessario modificare a mano le impostazioni del terminale affinché riesca a lavorare nel modo voluto. Il metodo migliore per farlo è quello di utilizzare xterm, il programma più diffuso per questo scopo.
In aggiunta gli utilizzatori di alfabeti non latini lamentano la mancanza di supporto ai loro set di caratteri.
Tutto ciò ha causato una scarsa usabilità delle applicazioni di solo testo ad eccezione di quelle per console o in xterm.
Negli anni recenti, il generale passaggio degli utenti alle interfacce grafiche (GUI), ha fatto sì che l'interesse commerciale verso il terminale e le sue emulazioni scemasse, di conseguenza gli sforzi di miglioramento e uniformazione delle librerie languono.