Quali sono le principali differenze quando si passa dalla programmazione basata su console alla programmazione basata su GUI?


18

Ho iniziato, come molti altri, con la programmazione basata su console (come nel terminale, non su Playstation). Ma prima o poi, è necessario toccare la programmazione basata sulla GUI, che tu lo voglia o no. Questa transizione contiene molti cambiamenti nel modo in cui devi pensare al frontend (e possibilmente anche al backend).

Quindi, quali sono le principali differenze quando si passa dalla programmazione basata su console alla programmazione basata su GUI?


1
Vuoi dire console come nel terminale, giusto? Non console come in Playstation ..
JBR Wilkinson,

@JBRWilkinson: Sì. Chiarirò la domanda.
gablin,

Risposte:


18

La più grande differenza è il design dell'interfaccia utente. Una buona interfaccia grafica può creare o interrompere un'applicazione. I fan dei Mac attirerebbero l'attenzione sulla GUI dal design accattivante dell'app media per Mac OS X e hanno un punto, ma questo non è un problema di tecnologia: è un problema di design / ethos / usabilità.

Per quanto riguarda le questioni tecniche, in nessun ordine particolare:

  1. L'utente può fare tutto ciò che vuole in qualsiasi ordine in qualsiasi momento, a differenza del programma console in cui si sta chiedendo input o dicendo loro l'output. Non puoi presumere che seguiranno l'ordine che speri, a meno che non applichi il flusso di lavoro in stile Wizard.

  2. Come già accennato, gli eventi svolgono un ruolo importante in questo e puoi ottenere più eventi mentre stai servendo l'ultimo, quindi non puoi davvero costruire il tuo stato in base all '"evento corrente". Utilizzare chiusure o un meccanismo simile per mantenere il contesto tra eventi diversi. In un'app console, il tuo FSM è di solito autonomo attorno al ciclo 'get input, process input, update output'. Non esiste lo stesso tipo di struttura nella programmazione della GUI: il 'main' è una cosa guidata dagli eventi rientranti, spesso un'enorme dichiarazione switch ().

  3. È necessario considerare dimensioni / risoluzioni dello schermo diverse e consentire il ridimensionamento della GUI da 800x600 fino al massimo del monitor degli utenti.

  4. È necessario considerare diverse strategie di input: mouse, tastiera, touch, ecc. Alcune tecnologie sono disponibili gratuitamente (scorrimento con rotellina del mouse), altre richiedono un lavoro di integrazione (Ink).

  5. Accessibilità: una GUI è molto più adatta agli utenti meno abili che hanno visione limitata, udito, capacità motorie o abilità cognitive. Un rumore 'ding' è bello ed evidente rispetto a un messaggio di errore criptico sulla console.

  6. Internazionalizzazione: suppongo che la tua app console sia solo US / ANSI, ma quando accedi alla GUI, puoi avere pacchetti lingua / risorse che possono indirizzare altre lingue e regioni senza modificare la codifica, se ti sei preparato dal inizio. Ad esempio, nessuna stringa di linguaggio codificata nel codice, tutto come ricerche di risorse.

  7. Hai molte più opzioni per la tecnologia di implementazione: basate sul web, vari kit di GUI, Flash / WPF, ecc.

  8. Uso del colore e dell'animazione. I programmi della console sono generalmente monocromatici e non animano molto. Molti moderni framework GUI forniscono widget a tema e hanno effetti di animazione di spostamento / dimensione / mostra / nascondi, spesso gratuiti.

  9. Grafica. Le app della console a volte usano l'arte ASCII per i diagrammi, ma un'app GUI ti dà piena capacità grafica. Anche l'arte adorabile può fare una grande differenza.


1
Mentre vedo il tuo punto in generale, non sono d'accordo con una falsa dicotomia qui. Voglio dire, devi prestare attenzione all'interfaccia utente anche per le app della console, puoi avere app console basate sugli eventi, puoi avere app terminali che visualizzano effettivamente una GUI e non solo testo lineare e devono prestare attenzione ai ridimensionamenti (e può funzionare con il mouse), puoi fare app cli accessibili, internazionalizzare app cli allo stesso modo di quelle gui, puoi usare i colori e animare le cose. Ti garantirò che 7 e 9 sono più limitati.
haylem,

17

Per me sarebbe abituarsi alla programmazione guidata dagli eventi. Può ancora applicarsi al software basato su console ma trovo che sia usato principalmente con la GUI. Una volta afferrato, è uno strumento molto potente.


Essere d'accordo. La cosa che devi imparare è che il tuo codice non ha il pieno controllo di ciò che l'utente può fare in seguito.

Con l'eccezione dei dialoghi.
Morgan Herlocker,

6

Direi il multi-threading e le sue implicazioni con l'interfaccia utente (se si desidera eseguire interfacce utente non bloccanti)


+1, poiché il threading è un problema tecnico davvero noioso da affrontare.
Clemente Herreman,

2

La considerazione del flusso di controllo sull'interfaccia utente e la convalida dell'input dell'utente diventano molto importanti.


2

Un programma per console tende ad essere perfezionato nel tempo mentre un programma per GUI tende ad essere rovinato.


1

Di solito penso al programma basato su console come al Modello, mentre il programma basato sulla GUI è il View / Controller che incorpora il Modello.


1

Per me progettare una buona interfaccia grafica è sempre stato molto più impegnativo dei dettagli tecnici della sua implementazione.

È facile dire "rendilo semplice e chiaro, come un Mac". È incredibilmente difficile renderlo tale; ci sono sempre così tanti dettagli che dovrebbero essere disponibili, ma allo stesso tempo dovrebbero essere nascosti.

semplicità http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png


1
Dai un'occhiata a Google Wave o iMovie e sai che queste immagini sono fuorvianti.
Ivo Flipse

0

In alcune (molte?) Lingue la differenza principale per me è che ora devi scegliere una biblioteca. Fare "console" programmando la spina dorsale (e molto altro ancora, con un po 'di fortuna) dell'applicazione utilizza le risorse standard della tua lingua. Aggiungendo una GUI è possibile (si spera) avere ancora il proprio "modello" in termini standard, ma ora una parte enorme, la "vista" dipenderà da alcune librerie esterne (e, senza speranza, ci si atterrà "per sempre"). La scelta di questa libreria è una grande responsabilità per un principiante come lo è il tuo (mio) caso (per non parlare della curva aggiuntiva del passo di apprendimento).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.