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

18

Ho iniziato, come molti altri, con la programmazione basata su console (come in terminale, non su Playstation). Ma prima o poi, è necessario toccare la programmazione basata sulla GUI, che tu voglia o meno. 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?

    
posta gablin 08.10.2010 - 17:20
fonte

8 risposte

18

La più grande differenza è il design dell'interfaccia utente. Una buona GUI può creare o distruggere un'applicazione. I fan dei Mac attireranno l'attenzione sulla GUI di progettazione grafica della media di Mac OS X e hanno un punto, ma questo non è un problema tecnologico: è 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 della console in cui si sta richiedendo un input o si dice loro l'output. Non puoi presumere che seguiranno l'ordine che speri, a meno che non imposti il wizard del flusso di lavoro in stile.

  2. Come già accennato, gli eventi giocano un ruolo importante in questo, e puoi far accadere più eventi mentre stai servendo l'ultimo, quindi non puoi realmente costruire il tuo stato in base all '"evento corrente" . Utilizzare chiusure o un meccanismo simile per mantenere il contesto tra diversi eventi. In un'app console, il tuo FSM di solito è autonomo attorno al ciclo 'ottieni input, input di processo, output output'. Non c'è lo stesso tipo di struttura nella programmazione della GUI - il 'main' è una cosa rientranti event-driven, spesso una dichiarazione ginormous switch ().

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

  4. Devi prendere in considerazione diverse strategie di input: mouse, tastiera, tocco, ecc. Alcune tecnologie vengono fornite gratuitamente (scorrimento con rotellina del mouse), altre richiedono un lavoro di integrazione (Ink).

  5. Accessibilità: una GUI è molto più adatta per utenti meno abili che hanno capacità limitate di visione, udito, abilità motorie o cognitive. Un rumore "ding" è piacevole e ovvio rispetto a un messaggio di errore criptico sulla console.

  6. Internazionalizzazione - presumo che l'app per console sia solo US / ANSI, ma quando entri nella GUI, puoi avere pacchetti di lingue / risorse che possono indirizzare altre lingue e regioni senza modificare la codifica, se ti sei preparato fin dall'inizio. Ad esempio, nessuna stringa di codice codificata nel codice, tutto come ricerca di risorse.

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

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

  9. Grafica. Le app della console a volte usano l'arte ASCII per i diagrammi, ma un'app GUI offre capacità grafiche complete. Anche la bella arte può fare una grande differenza.

risposta data 08.10.2010 - 18:21
fonte
17

Per me si sarebbe abituato alla programmazione basata sugli eventi. Può ancora essere applicato al software basato su console, ma trovo che sia per lo più utilizzato con la GUI. Una volta capito, è uno strumento molto potente.

    
risposta data 08.10.2010 - 17:31
fonte
6

Direi il multi-threading ed è implicito con l'interfaccia utente (se vuoi fare UI non bloccanti)

    
risposta data 08.10.2010 - 18:23
fonte
2

Considerazioni sul flusso di controllo sull'interfaccia utente e la convalida dell'input dell'utente diventano molto importanti.

    
risposta data 08.10.2010 - 17:31
fonte
2

Un programma di console tende a essere raffinato nel tempo mentre un programma GUI tende a essere fottuto.

    
risposta data 08.10.2010 - 19:15
fonte
1

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

    
risposta data 08.10.2010 - 23:47
fonte
1

Per me progettare una buona GUI è sempre stato molto più impegnativo dei dettagli tecnici di 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 fuori dalla vista.

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

    
risposta data 09.10.2010 - 11:36
fonte
0

In alcune (molte?) lingue la principale differenza per me è che, ora, devi scegliere una libreria. Facendo "console" la programmazione della dorsale (e molto altro, con un po 'di fortuna) della tua applicazione usa le risorse standard della tua lingua. Aggiungendo una GUI puoi (si spera) avere ancora il tuo "modello" negli idiomi standard, ma ora una parte enorme, la "vista" dipenderà da una certa libreria esterna (e, senza saperlo, la si manterrà "per sempre"). La scelta di questa libreria è un'enorme responsabilità per un principiante come lo è il tuo (mio) caso (per non parlare della curva di apprendimento aggiuntiva).

    
risposta data 22.02.2013 - 09:46
fonte

Leggi altre domande sui tag