Quais são as principais diferenças ao passar da programação baseada em console para GUI?


18

Comecei, como muitos outros, com programação baseada em console (como no terminal, não no Playstation). Porém, mais cedo ou mais tarde, é necessário abordar a programação baseada em GUI, quer você queira ou não. Essa transição contém muitas mudanças em como você precisa pensar sobre o front-end (e possivelmente também o back-end).

Então, quais são as principais diferenças ao passar da programação baseada em console para programação baseada em GUI?


1
Você quer dizer Console como no Terminal, certo? Não Console como no Playstation ..
JBRWilkinson

@JBRWilkinson: Sim. Vou esclarecer a questão.
gablin

Respostas:


18

A maior diferença é o design da interface do usuário. Uma boa GUI pode criar ou quebrar um aplicativo. Os fãs de Mac chamam a atenção para as GUIs lindamente projetadas do aplicativo Mac OS X comum e eles têm razão, mas isso não é um problema de tecnologia - é um problema de design / ethos / usabilidade.

Quanto a questões técnicas, em nenhuma ordem específica:

  1. O usuário pode fazer o que quiser, em qualquer ordem e a qualquer momento, ao contrário do programa do console no qual você está solicitando entrada ou informando a saída. Você não pode assumir que eles seguirão a ordem que você espera, a menos que imponha o fluxo de trabalho no estilo do Assistente.

  2. Como já mencionado, os eventos têm um papel importante nisso, e você pode obter vários eventos enquanto está atendendo o último, portanto, não é possível construir seu estado com base no 'evento atual'. Use encerramentos ou um mecanismo semelhante para manter o contexto entre diferentes eventos. Em um aplicativo de console, seu FSM geralmente é independente em torno do loop 'obter entrada, processar entrada, atualizar saída'. Não existe o mesmo tipo de estrutura na programação da GUI - o 'main' é uma coisa orientada a eventos reentrante, geralmente uma declaração ginormous switch ().

  3. Você precisa considerar diferentes tamanhos / resoluções de tela e permitir que a GUI seja redimensionada de 800x600 até o máximo do monitor dos usuários.

  4. Você precisa considerar diferentes estratégias de entrada - mouse, teclado, toque etc. Algumas tecnologias são gratuitas (rolagem na roda do mouse), outras requerem algum trabalho de integração (Tinta).

  5. Acessibilidade - uma GUI é muito mais adequada para usuários menos capazes, com visão, audição, habilidades motoras ou cognitivas restritas. Um ruído 'ding' é bom e óbvio comparado a uma mensagem de erro enigmática no console.

  6. Internacionalização - suponho que seu aplicativo de console seja apenas US / ANSI, mas quando você entra na GUI, pode ter pacotes de idioma / recursos que podem segmentar outros idiomas e regiões sem alterar a codificação, se você o preparou a partir do começar. Por exemplo, nenhuma linguagem de código embutida no código - tudo como pesquisa de recursos.

  7. Você tem muito mais opções para a tecnologia de implementação - com base na Web, vários kits de GUI, Flash / WPF etc.

  8. Uso de cor e animação. Os programas de console são geralmente monocromáticos e não animam muito. Muitas estruturas modernas de GUI fornecem widgets temáticos e têm efeitos de animação de mover / tamanho / mostrar / ocultar, geralmente de graça.

  9. Gráficos. Às vezes, os aplicativos de console usam arte ASCII para diagramas, mas um aplicativo GUI oferece a capacidade gráfica completa. Arte adorável também pode fazer uma grande diferença.


1
Enquanto eu vejo o seu ponto em geral, eu meio que discordo de uma dicotomia falsa aqui. Quero dizer, você precisa prestar atenção à interface do usuário também para aplicativos de console, pode ter aplicativos de console baseados em eventos, pode ter aplicativos de terminal que realmente exibem uma GUI e não apenas texto linear e precisa prestar atenção a redimensionamentos (e pode funcionar com um mouse), você pode criar aplicativos CLI acessíveis, internacionalizar aplicativos CLI da mesma maneira que os GUI, usar cores e animar coisas. Eu garanto que 7 e 9 são mais limitados.
21413 haylem

17

Para mim, estaria me acostumando à programação orientada a eventos. Ainda pode ser aplicado a software baseado em console, mas acho que é usado principalmente com GUI. Depois de entender, é uma ferramenta muito poderosa.


Aceita. O que você precisa aprender é que seu código não está totalmente no controle do que o usuário pode fazer a seguir.

Com a recepção de diálogos.
Morgan Herlocker 27/05

6

Eu diria que o multi-threading e sua implicação com a interface do usuário (se você quiser fazer interfaces de usuário sem bloqueio)


+1, pois o encadeamento é uma questão técnica realmente tediosa de se lidar.
Clement Herreman,

2

A consideração do fluxo de controle na interface do usuário e a validação da entrada do usuário se tornam muito importantes.


2

Um programa de console tende a ser refinado ao longo do tempo, enquanto um programa de GUI tende a ser ferrado.


1

Normalmente, penso no programa baseado em console como o Modelo, enquanto o programa baseado em GUI é o View / Controller que incorpora o Modelo.


1

Para mim, projetar uma boa GUI sempre foi muito mais desafiador do que os detalhes técnicos de sua implementação.

É fácil dizer "faça com que seja simples e claro, como um Mac". É incrivelmente difícil fazer isso; sempre há muitos detalhes que devem estar disponíveis, mas, ao mesmo tempo, devem estar fora de vista.

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


1
Dê uma olhada no Google Wave ou no iMovie e você sabe que essas imagens são enganosas.
Ivo Flipse 30/03/11

0

Em algumas (muitas?) Línguas, a principal diferença para mim é que agora você precisa escolher uma biblioteca. A programação do "console" do backbone (e muito mais, com alguma sorte) do seu aplicativo usa os recursos padrão do seu idioma. Adicionando uma GUI, você ainda pode (esperançosamente) ter seu "modelo" em idiomas padrão, mas agora uma parte enorme, a "visualização" dependerá de alguma biblioteca externa (e, infelizmente, você a manterá "para sempre"). A escolha desta biblioteca é uma grande responsabilidade para um iniciante, como é o seu (meu) caso (sem mencionar a curva adicional de etapas de aprendizado).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.