Comencé, como muchos otros, con la programación basada en consola (como en terminal, no en Playstation). Pero tarde o temprano, uno necesita tocar la programación basada en GUI, lo quiera o no. Esta transición contiene muchos cambios en la forma en que debe pensar en el frontend (y posiblemente también en el backend).
Entonces, ¿cuáles son las principales diferencias al pasar de la programación basada en consola a la programación basada en GUI?
Respuestas:
La mayor diferencia es el diseño de la interfaz de usuario. Una buena GUI puede hacer o deshacer una aplicación. Los fanáticos de Mac llamarían la atención sobre las GUI bellamente diseñadas de la aplicación Mac OS X promedio y tienen un punto, pero esto no es un problema de tecnología, es un problema de diseño / ethos / usabilidad.
En cuanto a cuestiones técnicas, sin ningún orden en particular:
El usuario puede hacer lo que quiera en cualquier orden en cualquier momento, a diferencia del programa de consola en el que está solicitando entradas o diciéndoles la salida. No puede suponer que seguirán el orden que espera, a menos que aplique el estilo de asistente de flujo de trabajo.
Como ya se mencionó, los eventos juegan un papel importante en esto, y puede hacer que sucedan varios eventos mientras está prestando servicio al último, por lo que realmente no puede construir su estado en función del 'evento actual'. Use cierres o un mecanismo similar para mantener el contexto en diferentes eventos. En una aplicación de consola, su FSM generalmente está autocontenido alrededor del bucle 'obtener entrada, procesar entrada, actualizar salida'. No hay el mismo tipo de estructura en la programación de la GUI: la 'principal' es una cosa re-entrante impulsada por eventos, a menudo una declaración switch () descomunal.
Debe considerar diferentes tamaños / resoluciones de pantalla y permitir que la GUI cambie de tamaño desde 800x600 hasta el máximo de monitor de los usuarios.
Debe considerar diferentes estrategias de entrada: mouse, teclado, tacto, etc. Algunas tecnologías son gratuitas (desplazamiento con la rueda del mouse), otras requieren un trabajo de integración (Ink).
Accesibilidad: una interfaz gráfica de usuario es mucho más adecuada para usuarios con menos capacidades que tienen una visión, audición, habilidades motoras o cognitivas restringidas. Un ruido 'ding' es agradable y obvio en comparación con un mensaje de error críptico en la consola.
Internacionalización: supongo que su aplicación de consola es solo para EE. UU. / ANSI, pero cuando ingresa a la GUI, puede tener paquetes de idiomas / recursos que pueden apuntar a otros idiomas y regiones sin cambios en la codificación, si se preparó para ello desde el comienzo. Por ejemplo, no hay cadenas de lenguaje codificadas en el código, todo como búsquedas de recursos.
Tiene muchas más opciones para la tecnología de implementación: basada en la web, varios kits de GUI, Flash / WPF, etc.
Uso de color y animación. Los programas de consola son generalmente monocromáticos y no animan mucho. Muchos marcos de GUI modernos proporcionan widgets temáticos y tienen efectos de animación de movimiento / tamaño / mostrar / ocultar, a menudo de forma gratuita.
Gráficos. Las aplicaciones de consola a veces usan arte ASCII para diagramas, pero una aplicación GUI le brinda una capacidad gráfica completa. El arte encantador también puede marcar una gran diferencia.
fuente
Para mí, me estaría acostumbrando a la programación basada en eventos. Todavía se puede aplicar al software basado en consola, pero creo que se usa principalmente con GUI. Una vez que lo entiendes, es una herramienta muy poderosa.
fuente
Diría que el subprocesamiento múltiple y su implicación con la interfaz de usuario (si desea hacer IU sin bloqueo)
fuente
La consideración del flujo de control en la interfaz de usuario y la validación de la entrada del usuario se vuelven muy importantes.
fuente
Un programa de consola tiende a refinarse con el tiempo, mientras que un programa GUI tiende a atornillarse.
fuente
Por lo general, pienso en el programa basado en la consola como el Modelo, mientras que el programa basado en la GUI es la Vista / Controlador que incorpora el Modelo.
fuente
Para mí, diseñar una buena GUI siempre ha sido mucho más desafiante que los detalles técnicos de su implementación.
Es fácil decir "hazlo simple y claro, como una Mac". Es increíblemente difícil hacerlo así; siempre hay tantos detalles que deberían estar disponibles, pero al mismo tiempo, deberían estar fuera de la vista.
simplicidad http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png
fuente
En algunos (¿muchos?) Idiomas, la principal diferencia para mí es que ahora tiene que elegir una biblioteca. Al hacer la programación de "consola" de la red troncal (y mucho más, con un poco de suerte) de su aplicación, use los recursos estándar de su idioma. Agregando una GUI puede (con suerte) tener su "modelo" en modismos estándar, pero ahora una gran parte, la "vista" dependerá de alguna biblioteca externa (y, desafortunadamente, la mantendrá "para siempre"). La elección de esta biblioteca es una gran responsabilidad para un principiante, como es su caso (mi) (sin mencionar la curva adicional de pasos de aprendizaje).
fuente