La idea de celebrar el día del programador se le ocurrió a Valentin Balt and Michael Cherviakov, dos programadores rusos alrededor del año 2002, quienes consiguieron que fuera reconocido oficialmente por el gobierno ruso en 2009. El 11 de septiembre de 2009 el presidente de Rusia, Dmitry Medvedev firmó el decreto que oficializó esta celebración.

El día del programador corresponde al día 256 del año. Este número fue elegido porque es la cantidad de valores que se pueden representar en un byte de 8 bits, una cifra mu reconocible por los programadores y por supuesto es un valor menor a 365, que son los días del año.

Así que un saludo especial a todas las programadoras y programadores que leen este blog. Celebremos juntos.

Destaco a las programadores, pues como todos ya deben saber a estas alturas, entre los pioneros de esta disciplina hubo muchas mujeres.

Ahora, para celebrar como corresponde les propongo un desafío de programación. El premio son dos copias impresas de mi libro ¨La Naturaleza Del Software".

Las condiciones del desafío son las siguientes:

0. Sólo habrá un ganador.
1. El Premio son dos copias impresas de mi libro La Naturaleza Del Software.
2. Para participar deben escribir un programa que se ejecute por lineas de comandos, y que reciba como argumento el año. Al correr debe escribir en la consola la fecha en que se celebrará el día del programador en ese año. La fecha debe indicar el día de la semana.
Por ejemplo si ejecuto el programa con el parámetro 2016, el programa debe escribir en la consola: "El día del programador del año 2016 se celebrará el lunes 12 de septiembre".
3. El programa debe calcular cuál es el día 256 del año, es más, esto debe ser un parámetro interno del programa y debería poder modificarse, de modo que si decidimos que el día del programador es el día 128 ó el día 48 del año esto pueda modificarse fácilmente. (Esto es para evitar que calculen el día del programador como 12 ó 13 de septiembre según si el año es bisiesto).
4. Si el año es menor a 2002 el programa debe indicar que en esa fecha aún no se celebraba el día del programador.
5. Si el año ingresado es menor a 2009 el mensaje debe estar en ruso.
6. Si el el año ingresado está en el pasado el mensaje debe estar en pretérito (por ejemplo: ¨El día del programador en 2014 se celebró el sábado 13 de septiembre").
7. Si ejecutas el programa el mismo día, el programa debe decir "El día del programador se celebra hoy! Felicidades!".
8. Los concursantes deben enviar su programa realizando un pull request al siguiente repositorio github: https://github.com/lnds/dia-del-programador 

9. Ganará el programa correcto más breve  en cantidad de lineas de código. Para contar las lineas de código se ignorarán los comentarios. Da lo mismo el lenguaje en que esté implementado. Si hay un empate en la cantidad de lineas de código ganará el que tenga la menor complejidad de acuerdo a las métricas de Halstead.

10. Tienen dos semanas de plazo para entregar sus soluciones.

El Premio de este desafío

Que pasen un feliz día del programador.