Interfaccia grafica: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Abassign (discussione | contributi)
mNessun oggetto della modifica
 
(160 versioni intermedie di oltre 100 utenti non mostrate)
Riga 1:
{{Nota disambigua|altre voci che possono riferirsi alla stessa combinazione di 3 caratteri|[[GUI (disambigua)]]|GUI}}
[[File:Macintosh_128k_transparency.png|thumb|[[Macintosh 128K]], uno dei primi [[desktop computer]] con interfaccia grafica]]
L''''interfaccia utente grafica''', in [[sigla]] '''GUI''' (del corrispondente termine [[Lingua inglese|inglese]] ''graphical user interface''), comunemente abbreviata in '''interfaccia grafica''', è un [[Paradigma di programmazione|paradigma]] di sviluppo che mira a consentire all'utente di interagire con il [[computer]] manipolando graficamente degli oggetti, svincolandolo dall'obbligo di imparare una serie di comandi da impartire con la [[tastiera (informatica)|tastiera]] come invece avviene con le più tradizionali interfacce testuali [[interfaccia a linea di comando|CLI ]] (''command line interface''). È lo strato di un'applicazione [[software]] che si occupa del dialogo con l'utente del sistema utilizzando un ambiente grafico.
L{{'}}'''interfaccia grafica''', nota anche come '''GUI''' (dall'[[lingua inglese|inglese]] ''graphical user interface''), in [[informatica]] è un tipo di [[interfaccia utente]] che consente l'[[Interazione uomo-computer|interazione uomo-macchina]] in modo visuale utilizzando rappresentazioni grafiche (es. [[widget (informatica)|widget]]) piuttosto che utilizzando i [[istruzione (informatica)|comandi]] tipici di un'[[interfaccia a riga di comando]] (vedi [[shell (informatica)|shell]] e [[front end]]). Apparve negli anni ottanta: tra i primi esempi il [[Macintosh 128K]] di [[Apple]], presentato nel gennaio 1984, anche se limitato dal [[monitor (computer)|monitor]] in bianco e nero; nel gennaio del [[1985]] [[Atari Corporation]] presentò l'[[Atari ST]], sempre con interfaccia grafica monocromatica.
 
==Descrizione==
==Metafora della scrivania==
{{Vedi anche|Shell (informatica)|Interfaccia a riga di comando}}
{{vedi anche|Metafora della scrivania}}
[[File:X-Window-System.png|upright=1.0|thumb|Interfaccia grafica ''[[X Window System]]'' in un sistema ''[[Unix-like]]'']]
Nei [[sistema operativo|sistemi operativi]] moderni l'interfaccia grafica è concepita tramite la [[metafora]] di un piano di lavoro rappresentato dallo schermo (detto ''scrivania'' o ''desktop''), con le ''[[icona|icone]]'' a rappresentare i file (di cui alcune a forma di cartellina per le [[directory]]) e le ''finestre'' a rappresentare le [[applicazione|applicazioni]].
Con l'espressione «interfaccia grafica» si indica l'interfaccia di un ''qualunque'' programma: dal [[sistema operativo]] al [[software applicativo]]. Nel primo caso si intendono gli [[desktop environment|ambienti desktop]], mentre nel secondo si indica lo strato software che realizza e gestisce le tipiche [[finestra (informatica)|finestre]], che proprio nell'ambiente desktop sono ospitate e contrapposta alla logica di elaborazione.
 
L'interfaccia grafica consente all'utente di interagire con il [[computer]] manipolando graficamente degli oggetti in maniera molto [[user-friendly]], al contrario di quanto avviene sulla cosiddetta ''riga di comando'' di una [[interfaccia a riga di comando]], in cui l'esecuzione del programma viene guidata da [[istruzione (informatica)|istruzioni]] o comandi impartiti dall'utente tramite [[Tastiera (informatica)|tastiera]].
Tale ambiente di lavoro, in cui si opera attraverso il [[cursore|puntatore]] comandato con il [[mouse]], è stato concettualizzato nei [[Xerox Palo Alto Research Center|laboratori Xerox]] ([[Xerox Alto|progetto Alto]]) e commercializzato per la prima volta nel 1981 dalla Xerox stessa con il costoso [[Xerox Star]]. In seguito, tale paradigma venne ripreso da [[Apple]] nel [[1983]], con il poco fortunato [[Apple Lisa]], e nel [[1984]], con il più fortunato [[Macintosh 128K|Macintosh]]. La prima versione di GUI [[WIMP (informatica)|WIMP]] a colori venne introdotta nel [[1985]] da [[Atari]] con l'[[Atari 520ST]], seguita a distanza di due mesi da [[Commodore International]] con l'[[Amiga 1000]].
 
Se con l'interfaccia grafica è possibile fornire al software una grafica accattivante e una rinnovata semplicità d'uso, anche l'interfaccia a riga di comando ha i suoi vantaggi. Infatti, si tende ad utilizzare maggiormente quest'ultima dove la semplicità d'uso deve lasciare il passo ad esigenze di maggiore controllo sull'esecuzione del programma,
La GUI WIMP, con la sua semplicità d'utilizzo, per anni ha contrastato le interfacce ostiche e complicate basate sul vecchio principio della linea di comando ([[interfaccia a linea di comando]]) presenti all'epoca nei sistemi operativi [[UNIX]] e [[DOS]]. In seguito poi al successo del [[Macintosh]] e dell'[[Amiga]], nel [[1995]] con [[Windows 95]], tali caratteristiche sono state implementate anche da [[Microsoft]] nel suo sistema operativo per personal computer, attualmente il più diffuso al mondo. Precedentemente tali caratteristiche erano comunque disponibili come [[ambiente operativo]] (cioè come software integrativo del sistema operativo) acquistabile separatamente: nel dicembre [[1983]] [[Visi On]] della [[VisiCorp]], nel febbraio [[1985]] [[Graphical Environment Manager|GEM]] della [[Digital Research]], e nel novembre [[1985]] [[Windows 1.0|Microsoft Windows]] della stessa Microsoft.
*sia quanto alle istruzioni inserite: si pensi ad es. all'uso che se ne è fatto nel tempo, e si fa tuttora, in ambito [[Unix]];
*sia quanto alle informazioni restituite dal programma: ad es. strumenti di sviluppo e di analisi del codice; uso durante il [[debugging]] di un'applicazione; manipolazione di dati tramite la [[redirezione]] e il [[piping]].
 
Nulla vieta di realizzare un software dotato d'interfaccia grafica, che sia in realtà un [[wrapper]] per uno o più programmi dotati della sola interfaccia a riga di comando; un esempio è il noto programma [[GParted]]. In realtà, questo è avvenuto al livello del sistema operativo, nei primi tempi in cui si sono diffuse le interfacce grafiche di sistema (sia per [[Microsoft Windows|Windows]], sia per [[Linux]]), e avviene tutt'oggi su Linux, nel quale la shell grafica è uno strato posto "al di sopra" della shell testuale, non lo sostituisce, ed è nettamente separato da essa.
Attualmente tutti i sistemi operativi diffusi nel settore dei personal computer sono dotati di una GUI che opera secondo gli stessi principi di quella originariamente studiata da [[Xerox]]. Ciò ha causato una evoluzione significativa nell'interazione tra computer e utente: grazie all'interfaccia grafica è possibile compiere molti compiti comuni e complessi senza il bisogno di un'approfondita conoscenza del funzionamento del computer.
[[File:Cmd_(windows).png|thumb|[[Prompt]] di [[Microsoft Windows]]]]
 
== Implementazione di interfacce grafiche ==
I vari [[framework grafico|framework]] grafici]] possono fornire diversi tipi di astrazioni ai programmatori che vogliono costruire interfacce grafiche. Tra queste una molto diffusa e molto comodaintuitiva è quella del Modello''modello ad eventi con delegati''.
 
=== Nei sistemi operativi ===
{{Vedi anche|Ambiente desktop}}
Nei [[sistema operativo|sistemi operativi]] moderni l'interfaccia grafica è concepita tramite la [[metafora]] di un piano di lavoro rappresentato dallo schermo (detto ''scrivania'' o ''desktop''), con le ''icone'' a rappresentare i [[file]] (se sono a forma di cartellina rappresentano le [[directory]]) e le ''finestre'' a rappresentare le [[applicazione (informatica)|applicazioni]].
 
Tale ambiente di lavoro, in cui si opera attraverso il [[cursore|puntatore]] comandato con il [[mouse]], fu concettualizzato nei [[Xerox Palo Alto Research Center|laboratori Xerox]] ([[Xerox Alto|progetto Alto]]) e commercializzato per la prima volta nel 1981 dalla Xerox stessa con il costoso [[Xerox Star]]. In seguito, tale paradigma venne ripreso da [[Apple]] nel [[1983]], con lo sfortunato [[Apple Lisa]], e nel [[1984]], con il più fortunato [[Macintosh 128K|Macintosh]]. La prima versione d'interfaccia grafica (GUI) [[WIMP (informatica)|WIMP]] a colori venne introdotta nel [[1985]] da [[Atari]] con l'[[Atari 520ST]], seguita a distanza di due mesi da [[Commodore International]] con l'[[Amiga 1000]].
[[File:KDE_4.png|thumb|[[KDE]] 4.0 in esecuzione.]]
 
Le interfacce grafiche WIMP si diffusero progressivamente introdotte negli altri sistemi operativi, prima sotto forma di [[ambiente operativo]] (cioè come software integrativo del sistema operativo) acquistabile separatamente (nel dicembre [[1983]] [[Visi On]] della [[VisiCorp]], nel febbraio [[1985]] [[Graphical Environment Manager|GEM]] della [[Digital Research]], e nel novembre [[1985]] [[Windows 1.0|Microsoft Windows]] della Microsoft), poi direttamente all'interno dei sistemi operativi.
 
Attualmente tutti i sistemi operativi diffusi nel settore dei personal computer sono dotati di un'interfaccia grafica che opera secondo gli stessi principi di quella originariamente studiata da [[Xerox]]. Ciò ha causato una evoluzione significativa nell'interazione tra computer e utente: grazie all'interfaccia grafica è possibile compiere molti diversi fra loro, anche complessi, senza il bisogno di un'approfondita conoscenza del funzionamento del computer.
 
=== Modello ad eventi con delegati ===
Questo modello parte dal presupposto che sia l'utente a decidere il percorso che l'esecuzione del programma dovrà seguire. All'utente sono resi disponibili diversi [[widget (informatica)|widget]], ognuno dei quali attiva l'esecuzione di determinate parti del programma su richiesta. L'interazione tra utente e oggetti grafici avviene tramite i noti dispositivi di input come la tastiera, il mouse, i pulsanti del mouse, la rotellina del mouse, il [[touchpad]].
[[Immagine:GUI - Delegate Event Model.PNG|thumb|250px|Modello ad eventi con delegati. Click me è la sorgente, in questo caso di tipo bottone, e ad essa è associata una coda di ascoltatori]]
[[File:GUI - Delegate Event Model.PNG|thumb|Modello ad eventi con delegati. Click me è la sorgente, in questo caso di tipo bottone, e ad essa è associata una coda di ascoltatori]]
 
Il caso più semplice è quello di un [[command button|pulsante]] come quello rappresentato in figura. Al pulsante sono associati zero o più ''listeners'', cioè entità di programma ad ognuno dei quali, a sua volta, è associata una determinata sequenza di istruzioni. In [[run time|fase di esecuzione]], ogni volta che l'utente compie l'azione di "attivare" il pulsante, quest'ultimo riceverà una notifica dal sistema operativo ed attiverà tutti i ''listeners'' associati. Nel caso particolare del pulsante, l'azione "attivare" consiste tipicamente nel fare clic con il mouse mentre il cursore si trova sul componente, ma ad es. può essere avviata anche nel caso della pressione del tasto [[Invio]] se il componente grafico ha correntemente il ''[[focus (informatica)|focus]]''. In gergo, si dice che il componente grafico ''genera un evento'' che viene ''notificato ai listeners''.
Consideriamo tre entità fondamentali:
* un controllo che funge da sorgente di eventi,
* dei consumatori, a cui il controllo trasmette gli eventi
* delle interfacce (nel senso più ampio del termine), ovvero delle regole di interazione tra ~oggetti~
 
Il modo in cui i ''listeners'' sono realizzati nello specifico varia a seconda del linguaggio e della libreria grafica in uso. Ad esempio, possono essere [[funzione (informatica)|funzioni]] individuate tramite [[puntatore a funzione|puntatori]], oppure [[oggetto (informatica)|oggetti]] che espongono determinati [[metodo (informatica)|metodi]] standard, e così via. Poiché il ''listener'' è realizzato all'esterno del componente grafico, è ovvio che le modalità di interazione tra componente e ''listener'' devono essere stabilite a priori in modo ''standard'' (''standard'' che, anch'esso, dipende dal linguaggio e dalla libreria grafica di riferimento).
Inoltre:
* ogni consumatore deve essere progettato in modo da implementare l'interfaccia (a tempo di programmazione)
* ogni consumatore si registra presso la sorgente, cioè dichiara di voler essere informato degli eventi da essa generati (a tempo di esecuzione)
* Ogni volta che la sorgente deve generare un evento, per ognuno dei consumatori registrati, gli comunica l'evento seguendo il protocollo descritto dall'interfaccia grafica.
 
== Voci correlate ==
{{Div col}}
*[[Interfaccia umano-macchina]]
* [[XeroxAmbiente Altodesktop]]
* [[Barra delle applicazioni]]
*[[Xerox Star]]
* [[AppleDrag and Lisa|Lisadrop]]
* [[MacintoshCopia e incolla]]
* [[Mac OSCursore]]
* [[AmigaDock]]
* [[AmigaOSFramework]]
* [[MicrosoftGestore delle Windowsfinestre]]
* [[Interfaccia a riga di comando]]
*[[KDE]]
* [[Interfaccia uomo-macchina]]
*[[GNOME]]
* [[XfceMenu (informatica)]]
* [[FluxboxOlipilot]]
* [[Puntatore del mouse]]
*[[Arena (interfaccia grafica)|Arena]]
* [[wxWidgetsSistema operativo]]
* [[WinBoardTaglia e incolla]]
* [[Touch screen]]
* [[Unity (motore grafico)]]
* [[WIMP (informatica)]]
{{Div col end}}
 
== Altri progetti ==
==Collegamenti esterni==
{{interprogetto|preposizione=sull'}}
* [http://www.webdesignerdepot.com/2009/03/operating-system-interface-design-between-1981-2009/ Carrellata sulla storia delle interfacce grafiche]
 
* [http://www.guidebookgallery.org/ www.guidebookgallery.org]<BR>Riporta tutte le versioni delle GIU che si sono avvicendate nel mondo PC più alcune particolari implementazioni.
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC|Graphical User Interface|Graphical User Interface}}
* {{cita web|http://www.webdesignerdepot.com/2009/03/operating-system-interface-design-between-1981-2009/|Carrellata sulla storia delle interfacce grafiche di sistema}}
* {{cita web|http://www.guidebookgallery.org/|www.guidebookgallery.org Tutte le versioni delle GUI di sistema che si sono avvicendate nel mondo PC, più alcune particolari implementazioni}}
* {{cita web|https://history.user-interface.io/|Storia delle principali interfacce grafiche}}
 
{{Controllo di autorità}}
{{portale|informatica}}
 
[[Categoria:Interazione uomo-computer]]
[[Categoria:Interfacce grafiche| ]]
[[Categoria:Design della comunicazione]]
[[Categoria:Architettura del software]]
 
[[ar:واجهة مستخدم رسومية]]
[[ast:Interfaz gráfica d'usuariu]]
[[bs:GUI]]
[[ca:Interfície gràfica d'usuari]]
[[cs:Grafické uživatelské rozhraní]]
[[da:Grafisk brugerflade]]
[[de:Grafische Benutzeroberfläche]]
[[el:Γραφικό Περιβάλλον Χρήστη]]
[[en:Graphical user interface]]
[[eo:Grafika uzantinterfaco]]
[[es:Interfaz gráfica de usuario]]
[[et:GUI]]
[[fi:Graafinen käyttöliittymä]]
[[fr:Environnement graphique]]
[[gl:GUI]]
[[hr:Grafičko korisničko sučelje]]
[[hu:Grafikus felhasználói felület]]
[[id:Antarmuka pengguna grafis]]
[[is:Myndrænt viðmót]]
[[ja:グラフィカルユーザインタフェース]]
[[ko:그래픽 사용자 인터페이스]]
[[la:Gui]]
[[ms:Antara muka grafik pengguna]]
[[nds:Böverflach]]
[[nl:Grafische gebruikersomgeving]]
[[no:Grafisk brukergrensesnitt]]
[[pl:Interfejs graficzny]]
[[pt:Interface gráfica do utilizador]]
[[ro:Interfaţă grafică]]
[[ru:Графический интерфейс пользователя]]
[[sh:GUI]]
[[sk:GUI]]
[[sl:Grafični uporabniški vmesnik]]
[[sq:GUI]]
[[sr:Графичко корисничко окружење]]
[[sv:Grafiskt användargränssnitt]]
[[ta:வரைகலை பயனர் இடைமுகம்]]
[[th:ส่วนต่อประสานกราฟิกกับผู้ใช้]]
[[tl:Pakikihalubilong makikitang pantagagamit]]
[[tr:Grafiksel kullanıcı arayüzü]]
[[uk:Графічний інтерфейс користувача]]
[[ur:مخطط صارفی سطح البین]]
[[vi:GUI]]
[[zh:图形用户界面]]