@ agnasg

agnasg


El arte de escribir un algoritmo elegante

11-05-2015 4:32 AM

Como no quiero contradecir el espíritu del post de hoy no voy a dar mayores detalles. El mensaje para el día de hoy es el siguiente:

 

Todo algoritmo debe ser elegante. Si no es elegante, usualmente está malo

¿Cómo definimos elegante en programación?

  • Simple, cada instrucción se justifica por si misma armónicamente junto a las demás
  • Intuitivo, no puede haber otra forma más clara de hacerlo.
  • Claro, no hay que dedicarle sino pocos minutos para descubrir su efectividad.
  • Efectivo, debe hacer lo que debe hacer. Cumple con su objetivo rápidamente.

 

touch Sphere

23-04-2015 9:40 PM

Hace como dos meses dejé de jugar wow, algo así como mi descanso anual al menos hasta halloween (octubre). Así que estoy como realengo. Realmente realengo. Wizard 101 acaba de anunciar Jewel Socketing, similar a las gemas de wow o de Batmud. Pero de verdad no estoy para Wizard101 en estos días. He estado trabajando mucho mi juego psyblast, que es ceñudo, serio y complicado, y no quiero jugar, “jugar” sino juegos serios. Lo cual me lleva a Batmud.

Batmud…

Leo en el finger de un jugador nivel 24 en Bat Mud

He has killed: a cute and very fluffy bunny-rabbit .., 4211 exp

Esto representa su más importante kill, es decir, un nivel 24 tiene como su mejor victoria matar a un tierno conejo peluchin. En el nombre de los antiguos dioses del universo… Pero, claro, nivel 24 es bajo. ¿Cuál es el nivel max en Batmud? Hasta donde mi condición de mago nivel 28 me permite conocer, existe un nivel 103. No sé más allá, no puedo ver, no puedo sostener la mirada, siquiera de los porteros.

Aprender Batmud es como aprender a usar Unix (linux), de hecho, los manuales son iguales. Es como estar en la dimensión desconocida, las cosas existen, pero no sabemos cómo se llaman. Preguntar algo en el newbie channel a veces es como hablar con un autista, porque sus respuestas son crípticas: “- ¿cómo sé qué cosas puedo usar, o los  tipo de armaduras? – help slots, help eq, help eqset – ¿cómo hago para que el juego arranque en la última locación donde estuve? – help start, no siempre sirve… y así sucesivamente.

De hecho los que juegan estos muds parecen bots que tratan de aprender a pasar el test de turing aprendiendo con algoritmos genéticos. Ayer estu hablando con una tal Imma, pero luego de 20 minutos no quedé 100% convencido de que era un ser humano. Me preguntó “¿los bots son así de astutos hoy en día?” No me atreví a responder porque no quise afrontar el efecto neuronal ni las consecuencias sinápticas que mi respuesta podía tener. Miento, si le respondí: “no te imaginas”. Comenzó a hablar de eliza. Cuando huí desaforado leí que decía “ah, no eres un fan, ¡lástima!”.

¿Recomiendo Batmud? ¿Recomiendo los MUD en general? Si eres autista, hacker, edhc (endemoniado demente hardcore), ni siquiera tengo que mencionarlo. En caso contrario, la respuesta es un rotundo no.

Para una introducción en SHA1 o AES de Batmud clickea Batmud en las categorías. Será divertido. Es divertido… si lo intentas…

Nada puede ser 100% perfecto, por diferentes razones

29-03-2015 8:37 AM

Tomado de mi diario personal:

Interesante. Siempre, todo momento es oportuno para aprender algo nuevo. Estaba viendo a Mig (mi pareja)  cambiando de directorios en Win 7 y observé que ella usa los drop down menu en la secuencia de directorios de un path. De esa forma se puede cambiar directamente a un subdirectorio. La pregunta inmediata es ¿por qué los drop down menus no continuan a los subdirectorios del subdirectorio? Porque es Windows. Nada puede ser 100% perfecto, siempre debe haber algo malo que mejorar en la próxima version. Shit.

Un ejemplo de los drop down menu de Windows 7

win7-drop-down-menu

 

Habeas corpus contra python

18-03-2015 8:53 AM

I still use MSVC 6 (1998) as my IDE because it has better human factors for me than later versions of MSVC. (Yo todavía uso MSVC 6 (1998) como mi IDE porque tiene ventajas humanas para mí que otras versiones de MSVC no tienen

— Sean T. Barrett, autor de la librería de imágenes stb

Debería existir un “habeas corpus” para los programadores que tenemos que sufrir los desvarios (disparates) de los que programan herramientas de sistemas, lenguajes de programación y otros. Porque aquí tenemos a python que al menos sirve como un buen ejemplo de estos disparates.

Indentation Error: expected an indented block python require Indentation Error: expected an indented block que Indentation Error: expected an indented block cada Indentation Error: expected an indented block bloque Indentation Error: expected an indented block esté Indentation Error: expected an indented block indentado de acuerdo Indentation Error: expected an indented block a Indentation Error: expected an indented block su Indentation Error: expected an indented block nivel

¿Se entiende? Claro que no, tratar de leer el párrafo anterior es tan molesto como trabajar con python, porque este lenguaje prehistórico requiere que cada bloque esté indentado de acuerdo a su nivel o al bloque al que pertenece, es decir, el bloque de un for debe tener una indentación diferente al del for y así sucesivamente. Es como trabajar con RPG, un lenguaje del tipo Cobol de hace 40 años. Sí claro, el editor debe proveer herramientas para convertir espacios en tabs y viceversa (Blender lo tiene) y de todas formas en todos los lenguajes (excepto en basic) se deben indentar los bloques pero python continuamente genera este error cuando hay un espacio en blanco en lugar de un tab o viceversa o en la siguiente línea luego de un bloque de comentarios. Claro los que defienden a python dicen que se puede colocar el bloque anidado en la misma línea y la indentación no es necesaria, pero entonces el código es muy difícil de leer, por no decir imposible, y los bugs aparecen y demás vicisitudes indeseables.

Ayer trabajando en un generador automático de caminos para una escena en Blender tuve que lidiar cientos de veces con el error:

please-python-please

Y todo lo hago por Blender que de verdad es la única razón por la que trabajo en ese lenguaje. Grrrrrrrrrrr