it-swarm-es.com

¿Cuáles son las principales diferencias al pasar de la programación basada en consola a la programación GUI?

Comencé, como muchos otros, con la programación basada en consola (como en la 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?

18
gablin

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 este 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:

  1. 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 asumir que seguirán el orden que espera, a menos que aplique el estilo de asistente de flujo de trabajo.

  2. 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 recurrente impulsada por eventos, a menudo una declaración switch () descomunal.

  3. 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.

  4. 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).

  5. Accesibilidad: una interfaz gráfica de usuario es mucho más adecuada para usuarios con menos capacidades que tienen limitaciones de visión, audición, habilidades motoras o cognitivas. Un ruido 'Ding' es agradable y obvio en comparación con un mensaje de error críptico en la consola.

  6. 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 cambiar 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.

  7. Tiene muchas más opciones para la tecnología de implementación: basada en la web, varios kits de GUI, Flash/WPF, etc.

  8. 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.

  9. Gráficos. Las aplicaciones de consola a veces usan ASCII art para diagramas, pero una aplicación GUI le brinda una capacidad gráfica completa. Lovely art también puede hacer una gran diferencia.

18
JBRWilkinson

Para mí, me estaría acostumbrando a la programación basada en eventos. Todavía puede aplicarse al software basado en consola, pero creo que se usa principalmente con GUI. Una vez que lo entiendes, es una herramienta muy poderosa.

17
Nobody

Yo diría que los subprocesos múltiples y su implicación con la interfaz de usuario (si desea hacer IU sin bloqueo)

6
user2567

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.

2
ysolik

Un programa de consola tiende a refinarse con el tiempo, mientras que un programa GUI tiende a atornillarse.

2
Codism

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.

1
mouviciel

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

1
Joonas Pulakka

En algunos (¿muchos?) Idiomas, la principal diferencia para mí es que ahora debe 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, utilice los recursos estándar de su idioma. Al agregar 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).

0
qPCR4vir