@ agnasg

agnasg


Stroustrup: No existe un programa en C más compacto, eficiente y fácil de mantener que su equivalente en C++

05-11-2013 5:40 AM

Interesante entrevista a Stroustrup, el creador de C++. En particular, esta respuesta me resulta impactante:

Wong: Many embedded designers choose to use C because “it is simpler and closer to the hardware” than C++. Do you think that complexity of C++ should be a deterrent to embedded designers?

Stroustrup: No. C isn’t simpler for C-style programming than C++ is, nor “closer to the hardware,” nor indeed more efficient. I have yet to see a program that can be written better in C than in C++. I don’t believe such a program could exist. By “better” I mean smaller, more efficient, or more maintainable.

[

Wong: Muchos diseñadores de sistemas embebidos eligen utilizar C porque “es más simple y más cercano al hardware” que C + +. ¿Crees que la complejidad de C++ es un obstáculo para diseñadores de sistemas embebidos?

Stroustrup: No. C no es más simple para la programación de estilo de C que C++, ni es “más cercano al hardware”,  ni tampoco más eficiente. Todavía tengo que ver un programa que se puede escribir mejor en C que en C++. No creo que ese programa exista. Por “mejor” me refiero a más compacto, más eficientes, o más fácil de mantener.

]

Wow, demoledor, y me parece que hay un reto aquí para Linus Torvalds, el creador de Linux, quien insiste que con C tenemos todo lo que necesitamos y que C++ es inútil. El reto sería algo así como “escriba un programa en C que sea más compacto, eficiente y fácil de mantener que su equivalente en C++”. Casi nada.

3 recomendaciones son suficientes

29-10-2013 8:06 AM

Recomendaciones para el desarrollo de un juego:

1) No reinventes la rueda

2) Haz todas las rutinas en forma de que puedan ser usadas para reinicializar estados. Los juegos, con pocas excepciones, están construidos alrededor de estados, el jugador se está moviendo, peleando, escapando etc. El npc está libre o no, el efecto se está ejecutando  o no, los niveles incluyen trampas o no. Todo debe ser implementado de forma tal que se pueda reinicializar con facilidad porque de lo contrario es demasiado complicado manejar todo cuando el nivel comienza de nuevo, cuando el jugador regresa a ese nivel, etc.. Seguir esta recomendación va a reducir tu desarrollo en un 20% y te va a evitar 10% de los bugs.

3) No leas artículos sobre lo malo/deficiente/caótico que es la plataforma que estás utilizando.

Esta última requiere una explicación. Al menos yo, procrastinador como soy, busco todo el tiempo alguna excusa para dejar de trabajar en mi proyecto. Y no hay mejor excusa que “este lenguaje/API/librería es un asco, no quiero trabajar en esto, seguiré mañana”. Semanalmente aparece un artículo como este “Para un desarrollo moderno por supuesto que Javascript es un lenguaje de mierda” (For modern development Javascript indeed is a shit language). Claro que lo es. Es super complicado, es fácil perderse, su sintaxis es el equivalente en lenguajes de programación de los números romanos, si HAL9000 hubiera sido desarrollado en Javascript, Dave ni siquiera hubiera salido de la nave, estaría muerto antes de terminar la partida de ajedrez. Pero todo eso son excusas rebuscadas. Javascript es el lenguaje para hacer desarrollo en navegadores. Fin de la discusión. Hay alternativas, pero esas son otras excusas también. Termina el jodido juego. Sin excusas. Sin atajos. Sin coartadas.

Un típico día

02-10-2013 3:15 PM

Tomado de mi diario personal. Fechado 19 de septiembre:

(1465)

Hoy me levanté a las 4:00 a.m., leí noticias, más videos de gatos, y comencé a leer blogs viejos que hace tiempo no leía. Leí con atención el blog de Niko, el creador de irrlicht, que está desarrollando un nuevo juego, con escenarios generados a través de procedimiento (una traducción bien mala). El blog de Greedy Gobling, un demente que antes jugaba Wow y que ahora juega Eve, y que llama idiota a todo el mundo. Tiene una página que explica cómo aproximarse a Eve, y lo que sandbox significa (puedes cambiar el juego, y la condición de victoria no está definida). Luego leí este blog sobre Wow (años que no lo leía), Blessing of Kings, describiendo el estatus actual (tengo dos meses o algo así que no juego wow), y el nuevo patch 5.4, la noticia de que Garrosh Hellscream, el jefe de la horda va a ser depuesto, y los posibles candidatos para reemplazarlo. Todo muy interesante. Entonces revisé que podía hacer de aquí hasta desayuno, y claro, la opción es trabajar en el side project de mi side project, Tilewar. Terrible. Me resultó tan terrible, tan insignificante repetitivo, que lo tuve que pensar dos veces. Tiene un bug desde hace dos semanas. El siguiente párrafo lo voy a escribir alrededor de las 8 para reportar qué tal. Son las 5:30 a.m.

(1466)

Sí claro, son las 13:33, algo más tarde. El bug salió, lo que se suponía iba a ser una rápida sesión se convirtió en 4 horas de cacería de un bug, que como es usual, al final resultó ser obvio.

En fin, un típico día…

Enlaces

  • My father’s long, long legs es un juego de ficción interactiva, con tema de horror, muy bien escrito y que utiliza unas técnicas que en realidad nunca había visto en un juego desarrollado en javascript (desarrollado con twine). El efecto de la linterna fue tomado de aquí. Me llegó via el blog de Emily Short, pues tal como alguien comenta de otra forma hubiera sido imposible descubrir. Toda una perla para los amantes de la ficción interactiva. Altamente recomendado.
  • La revista Game Developer fue cancelada (es decir, ya no se va a publicar más) así que ahora la colección completa en forma digital se puede leer/bajar aquí. Yo tengo varios  ejemplares de esta revista, creo que inclusive dos años completos . No creo que valga mucho la pena pues es más marketing que otra cosa pero si no tenemos absolutamente nada que hacer se deja hojear.
  • Los mejores 50 juegos gratuitos, de acuerdo a pcgamer. La verdad apenas he jugado algunos de ellos, y otros jamás en mi vida los había visto. Una selección bien discutible pero ahí queda.
  • Una interesante discusión sobre el manejo de memoria de Java vs. C++. Dependiendo de si Ud. es un programador C++ o un programador Java Ud. tomará su decisión sobre cuál es la conclusión de esta discusión. C++ es más rápido/cómodo/versátil/seguro/flexible. Además, si Ud. es un programador Java seguramente será despedido del proyecto tal como alguien menciona.
  • Cómo ganar $100k trabajando duro en sistemas abiertos. El autor ofrece dos estrategias: una es un fracaso, y la segunda es un éxito. Lo que me sorprende es que la primera estrategia es la primera que se le ocurre a la mayoría de la gente (incluyéndome) y la que he visto más frecuentemente en los emprendedores que he visto o conozco. Interesante reflexión.
  • Cambiando el tono y descendiendo al bizarro mundo del gobierno norteamericano, el estado de California gastó 327 millones de dólares por un sistema web que no funciona. Por el 0.000003% de eso yo le haría un efectivo y eficaz betatesting antes de pasarlo a producción. Bizarro.
  • Un cuadrado mágico con números primos consecutivos. Esto es interesante solamente para matemáticos y para autistas.
  • En la misma onda: 7373170279850: tenemos la conjetura que el número 7373170279850 es el número más grande que no puede ser expresado como la suma de 4 cubos de números no negativos. Relevante.

Nadie conoce la palabra extrínseco pero todos viven atados a ella

26-09-2013 5:50 AM

Las personas con alguna cultura, o con la preocupación de ampliar su vocabulario más allá de las 200 palabras que utiliza el 99% de la población mundial, conocen la palabra intrínseco: la naturaleza del hecho o cosa en sí, sin tomar en cuenta el entorno o sus relaciones con el entorno. Pero también existe la palabra extrínseco: no hay sorpresas aquí, es lo inverso: lo que no forma parte de la cosa o hecho, y sus relaciones con el entorno. Qué cosas son intrínsecas y qué cosas son extrínsecas en nuestra conducta es un tema de un libro pero lo puedo resumir en una frase demoledora: renegamos de nuestra dependencia a lo extrínseco pero nuestra conducta se basa en esa dependencia. Si removemos todo lo extrínseco en la mayoría de las personas no nos queda nada o poco. Y no hay nada de malo o reprochable en ello, somos seres medianamente gregarios y nos movemos según se mueve la colmena: desde muy temprano sabemos qué se espera de nosotros y las consecuencias de no cumplir las expectativas. Por ello, vivimos atados a la colmena esperando la recompensa. Vana ilusión por supuesto, porque no hay recompensa, el premio por nuestra mansedumbre es el permiso para continuar formando parte de la colmena. Y los que, como yo, decimos gracias, pero prefiero seguir mi propio camino viviendo la vida basado en lo intrínseco (si me permiten la licencia) somos catalogados como soñadores, ilusos o locos. Risible por supuesto, fuera de la colmena esas palabras son títulos de nobleza.