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?
Respostas:
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:
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.
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 ().
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.
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).
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.
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.
Você tem muito mais opções para a tecnologia de implementação - com base na Web, vários kits de GUI, Flash / WPF etc.
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.
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.
fonte
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.
fonte
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)
fonte
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.
fonte
Um programa de console tende a ser refinado ao longo do tempo, enquanto um programa de GUI tende a ser ferrado.
fonte
Normalmente, penso no programa baseado em console como o Modelo, enquanto o programa baseado em GUI é o View / Controller que incorpora o Modelo.
fonte
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
fonte
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).
fonte