Pensando en programar

Pensando en Programar

Como puede verse, esto es un trabajo en progreso. Y queda mucho por hacer. El plan es tener una primera versión completa, luego revisarla y editarla donde sea necesario, para finalmente llevar a cabo la segunda parte que es un ejemplo práctico. Si todo va bien la primera versión estaría a final de año. Luego vendría la revisión/edición que no debería llevar más de un mes, en principio. Para el caso práctico aún no tengo determinada una fecha.

Índice

Este “libro” está organizado en capítulos cortos. Aunque está pensado para ser leído de forma secuencial, puedes usar este índice para acceder a cualquier capítulo directamente:

Primera Parte

La primera parte busca explicar las ideas y formas de pensar, con ejemplos, pero de manera algo más genérica.

  Introducción Qué es este libro y a quién está dirigido.  
  Antes de empezar... Una mínima preparación antes de entrar en materia.  
  Llegan los problemas El primer paso para resolver un problema es conocerlo.  
  Análisis - Ejemplos Algún pequeño ejemplo de cómo analizar problemas.  
  Antes de empezar a resolver Consideraciones antes de lanzarnos a buscar soluciones.  
  Comienza por el comienzo Técnicas de diseño de soluciones.  
  Principios Fundamentales de la Programación ¿Qué debe guiarnos a la hora de tomar buenas decisiones?  
  El Primer Código ¿Por dónde empiezo a escribir?  
  Caso práctico: Transmisor de Morse Un primer caso práctico de cómo empezaríamos a escribir código  
  Diseñando el dominio de datos Otra parte por la que podemos empezar es diseñando los tipos de datos  
  La Suma de las Partes Interfaces.  
  Pensando en Grupo Pensando en Grupo  
  errores Trazar, depurar, pruebas, rendimiento...  
  como-seguir Cómo seguir adelante desde aquí  
  Extras: Apéndices, ayudas, explicaciones Material de apoyo y otros contenidos.  

Segunda Parte

La segunda parte es un caso práctico más o menos completo, en el que buscaremos implementar un juego de mesa. He evaluado varios juegos y me he decidido por Espías y Confidentes, un juego no muy conocido pero que tiene algunas mecánicas interesantes y una complejidad bastante asequible.

En general cualquier juego de mesa creo que es un buen ejercicio. Es fácil que hayamos jugado a alguno que nos guste, que lo conozcamos suficientemente bien. Los juegos de mesa, generalmente tienen una serie de elementos y reglas que son buenos para razonar sobre ellos y además, existen juegos con complejidades muy variadas, de muy sencillos a muy complejos. Puede ser buena idea para el lector que, independientemente de seguir el caso presentado aquí, desarrolle el suyo propio con algún otro juego de mesa que le sea familiar. Uno bastante sencillo, con reglas simples y familiar para cualquiera puede ser el Trivial Pursuit. Otro, más complejo en reglas, mecánicas y elementos podría ser el Monopoly.

  e-y-c Introducción a la segunda parte  
  primer-analisis El primer análisis sobre el juego. Partes, mecánicas, dificultades...  
  xxx zzz  

Sobre el título

Originalmente había pensado titular el libro “Pensando como un programador”. En cierto modo creo que es un título más preciso, ya que el contenido explica cómo piensa un programador concreto (yo). Sin embargo, “Pensando en Programar” además de ser más amplio y forzarme más a intentar que no sea solo mi experiencia personal la que quede reflejada sino una opción más abierta sobre formas de pensar, también continúa la tendencia de otras dos ocasiones anteriores en las que he llegado a escribir algo. “Pensando en…” se inspira -tontamente- en la frase clave de la película Firefox: “Recuerde, debe pensar en ruso”, que representa la idea de que para utilizar y aprovechar un recurso de forma avanzada muchas veces debemos cambiar o adaptar nuestra forma de pensar.

A la vez, intenta transmitir también que programar está asociado de forma directa a la actividad de pensar, y que esto es más importante que cualquiera otras actividades aunque también puedan ser necesarias.

Sobre la licencia

He estado dudando si continuar dejando el contenido de lo que escribo en el Dominio Público para que cualquiera pueda hacer lo que quiera con él. Finalmente me he decidido por una licencia CC-BY-NC-SA. Es una licencia algo más restrictiva. El contenido seguirá siendo gratuito y, en gran medida, cualquiera puede tanto redistribuirlo como modificarlo. La limitación es que: a. debe mantener la atribución al autor original, b. no puede usarse para fines comerciales y c. cualquier modificación debe ser distribuida bajo la misma licencia.

No tengo intención de obtener ningún beneficio económico por el contenido de lo que escriba, ni creo que esto suponga mucha diferencia, sin embargo estas pequeñas restricciones adicionales me permitirán tener un mejor control sobre el futuro de dicho contenido.