Al pensar en problemas / soluciones de software (por ejemplo, algún algoritmo de Nifty), ¿qué imágenes mentales tienen los programadores en mente?

En realidad, cuando estoy pensando en un problema, generalmente no tengo una imagen mental clara de lo que está pasando. ¡Ese es exactamente el problema! La programación es el proceso de construir una representación mental clara y práctica del problema y su solución.

Estas representaciones mentales pueden ser varias cosas. Como describe Marcas Neal, puede terminar tomando la forma de un gráfico o diagrama. O podría ser una narrativa en inglés sobre lo que debe suceder, que se vuelve cada vez más precisa y precisa hasta que pueda representarlo en un lenguaje formal. Especialmente cuando se discute un problema con un colega, a menudo hablaremos algo como esto (completamente inventado, solo para mostrar el tipo de jerga):

“Está bien, digamos que recibimos un evento de pulsación de tecla. Necesitamos procesarlo mientras animamos los gráficos simultáneamente, por lo que necesitamos acceder al estado del juego desde dos subprocesos de ejecución diferentes que se ejecutan simultáneamente. ¿Cómo nos aseguramos de que un hilo no sea ¿Leer el estado del juego mientras el otro lo está cambiando? Podemos pegar un mutex en este lugar o pegar un montón de mutexes en esos otros sitios. ¿Cuál sería la mejor solución? ”

Esta es la resolución de problemas en inglés, que a menudo funciona bien para mí.

No , normalmente pensamos en diagramas, como los siguientes:


Árbol : (Wikipedia)


Gráfico : (Gráficos y algoritmos de gráficos en T-SQL)


Diagrama de casos de uso de UML : (Wikipedia)