¿Necesita algoritmos para la interfaz de usuario?

Wikipedia define un “algoritmo” como “una secuencia autónoma de acciones a realizar. ”

Entonces, en ese sentido, sí, porque todo lo que escribe, cada función, incluso el cuerpo de una declaración “si” o “mientras”, es un “algoritmo”.

Pero cuando usamos el término “algoritmo” usualmente estamos pensando en cosas como las mejores técnicas de clasificación (clasificación de montón a menos que tenga una buena razón para usar otra), el método para encontrar la raíz cuadrada de un número arbitrario (use el método Newton- Método Raphson), una búsqueda binaria, etc.

También hay muchos algoritmos en cosas como IA, reconocimiento de patrones, cosas que hacen que los autos autónomos funcionen, etc.

Mi consejo es que se lo dejen a los informáticos. Hay personas que hacen ese tipo de pensamiento profundo. Y sus resultados son, en su mayor parte, ya están claramente vinculados en bibliotecas (por ejemplo, las bibliotecas de plantillas estándar de C ++ y las clases en java.util).

Cuando crea una interfaz de usuario, va a pensar en “¿qué quiere hacer el usuario? ¿Cómo le presento eso? (*) ”Tiende a ser muy ad hoc y no se basa mucho en algoritmos empaquetados. En la medida en que use los algoritmos empaquetados, estarán bien envueltos en las clases de MFC, varias bibliotecas de JavaScript (si presenta su interfaz de usuario en un navegador web), etc.

Lo difícil de la interfaz de usuario es (a) descubrir lo que el usuario realmente quiere, a menudo diferente de lo que dice que quiere, (b) presentar las opciones y acciones de una manera que tenga sentido para el usuario, (c) las interacciones ( +) entre las piezas de la interfaz de usuario.

(*) botones? listas ordenables? ¿Listas deplegables? líneas de texto o áreas? etc.

(+) El usuario hace algo, por lo que cambia otros campos de la IU visible para reflejar eso. Pero muchas IU integradas tratarán el cambio que su programa realizó _exactamente_ igual que si el usuario hubiera cambiado ese campo. Para que pueda obtener una cascada de “eventos”, y si no tiene cuidado, se encontrará en un bucle interminable respondiendo a ellos. Diseñar alrededor de eso es, en mi experiencia, la segunda parte más difícil de la interfaz de usuario. (La parte más difícil es obtener (a) y (b) arriba a la derecha, o al menos lo suficientemente bien como para que el usuario no rechace todo.)

Sí, no, más o menos.

Los “algoritmos” en la programación son una fuente de confusión y, en general, no necesita preocuparse tanto por ellos como podría leer.

Los algoritmos están en todas partes en la programación, pero no solo en los que lees en los libros.

Escribimos algoritmos muy básicos todo el tiempo sin siquiera pensarlo, es solo parte de lo que hacemos, pero nuevamente, no estamos escribiendo los que estás viendo en los libros.

Sugeriría esto:

Piensa en lo que quieres lograr.

Ahora aprende cómo lograrlo.

Si desea hacer una IU en un iPhone, no busque en Google “Algoritmos para hacer UI en iPhone”, Google “Cómo hacer UI en iPhone”.

Olvídese de los algoritmos, los usará, pero no de la forma en que piensa, en este momento, solo enfóquese con láser en lo que desea lograr, olvide todo lo demás.

More Interesting

¿Existe algún vínculo en los algoritmos o técnicas de estructura de datos más utilizados en la programación competitiva?

¿Puede un algoritmo descubrir macronutrientes a partir de una imagen?

¿Qué algoritmos son más importantes para un concursante de ACM ICPC?

¿Qué es un algoritmo para generar todas las combinaciones posibles de un conjunto dado de letras (por ejemplo, 'a', 'b', 'c', 'd', 'e')?

¿Cuáles son algunas habilidades de programación, algoritmos o marcos que se ven muy bien pero que son muy simples?

Entre C # y Java, ¿cuál es el mejor lenguaje de programación para aprender programación orientada a objetos, estructuras de datos y algoritmos? ¿Por qué?

Cómo encontrar proyectos en algoritmo

Teoría de grafos: ¿en qué se diferencian los árboles de expansión construidos a partir de Prim de los árboles de expansión construidos a partir de Kruskal?

Al modelar un autómata determinista de estado finito, ¿qué algoritmo de recorrido gráfico debe usarse?

¿Qué es un promedio móvil y, algorítmicamente, cómo se calcula dicho conjunto?

Cómo resolver la consulta de suma de potencia de rango usando treap

¿Cuál es una versión más amigable para principiantes de CLRS para algoritmos de aprendizaje? ¿Estaría rompiendo la entrevista de codificación?

Cómo usar el hash rodante y la búsqueda binaria para encontrar la subcadena común más larga

¿Qué es una lista vinculada en las estructuras de datos de programación?

Cómo diseñar algoritmos de aprendizaje automático desde cero