Por @Alvy — 15 de Enero de 2022

An Eye Tracking Study on camelCase and under_score Identifier Styles

Un par de investigadores han tenido la santa paciencia de comprobar empíricamente si es más preciso y legible el código que utiliza palabras clave y variables escritas como PalabrasJuntas o espacios_subrayados (CamelCase vs. snake_case). Se puede leer aquí: An Eye Tracking Study on camelCase and under_score Identifier Styles [PDF]. Ganan los que reemplazan los espacios por «subrayados» (guiones bajos o underscores). Aunque todo esto es un poco como lo de la tortilla de patata con cebolla o sin cebolla, o quien prefiere escribir código con espacios o tabuladores, el estudio tiene sentido pues aspira a entender cuál de los dos estilos es óptimo en cuanto a comprensión y velocidad de lectura.

La verdad es que nunca me había cuestionado ni que hubiera un debate respecto a esto, porque en cada lenguaje de programación las reglas (o recomendaciones) son un poco diferentes. Los hay que distinguen entre combinaciones de mayúsculas y minúsculas y los que no; los que admiten el subrayado como separador y los que no, los que obligan a que las primeras letras sean mayúsculas y los que no…

Y tampoco había leído acerca de los nombres comunes en castellano para este asunto. De modo que está el estilo CamelCase (llamado así porque las mayúsculas de las palabras interiores «parecen las jorobas de un camello»), que la Wikipedia traduce como «Letra de caja camello» y snake_case (donde supongo que la rayita del subrayado parece una serpiente) que a veces se traduce como todo_minúsculas. También parece debatirse si en el snake_case las palabras pueden empezar en mayúsculas o minúsculas, igual que la primera letra de las de CamelCase (!?) Está claro que la gente por debatir y debatir, que no quede…

Personalmente yo combino ambos estilos, según me apetece, o según el lenguaje, aunque es verdad que si opto por una de las fórmulas (pudiendo usar ambas) suelo mantenerlo todo en ese estilo en el mismo código. Lo cual tampoco es fácil, porque a veces copias código antiguo o reutilizas el que han compartido otras personas y la cosa se lía, pero bueno.

El estudio de legibilidad se hizo con un sistema de seguimiento ocular automático (eye tracking) y una muestra muy pequeña de participantes voluntarios… Así que a saber cómo era la fiabilidad. Los resultados indicaron que aunque la precisión era la misma cuando los voluntarios leían código en ambos estilos, pero que sí que había una notable diferencia en la velocidad de lectura que es lo más interesante. Y que permite traducir a horas-hombre los resultados, con ahorros para quienes se dejan los ojos frente a la pantalla.

(Vía @JavierGonzalez.)

Compartir en Flipboard Tuitear
Por @Alvy — 9 de Enero de 2022

Conway's Game of Life

Está versión del Juego de la vida, llamada simplemente Game of Life de alguien que firma como Copy está escrita en JavaScript, de modo que se puede ejecutar directamente desde el navegador. En la parte de izquierda hay botones para centrar y encuadrar la imagen, hacer zoom o desplazarla, algo que también se puede hacer con el ratón. Es una forma rápida de explorar el autómata celular más famoso de la historia.

Resulta bastante rápida y cómoda de utilizar: los botones de la parte superior sirven para comenzar la simulación, rebobinar, avanzar paso a paso, etcétera y luego se pueden importar o exportar configuraciones predeterminadas, así como generar una configuración inicial aleatoria o usar una extensa librería de patrones, que además incluyen explicaciones interesantes.

Algo interesante es que utiliza un algoritmo llamado Hashlife, que permite acelerar enormemente los cálculos del que por otro lado es un algoritmo. El asunto tan solo se complican por el hecho de que el mapa crezca y crezca, aumentando la cantidad de celdas que hay que recalcular, examinando las celdas vecinas. En principio el mapa es infinito y crece a medida que se expanden las celdas «vivas» en el juego.

Hashlife emplea una técnica llamada memoización que es un método de optimización similar a la de la memoria caché pero para cálculos: básicamente una vez que se realiza un cálculo (por ejemplo: en qué se convierte esta región de 8×8) se guarda en memoria y «recuerda», de modo que si se vuelve a pedir el mismo cálculo se ofrece directamente el resultado y no hay que hacer el cálculo completo otra vez. La cantidad de datos almacenados depende del tamaño del mapa, su complejidad –las zonas guardadas se examinan mediante funciones hash– y el número de generaciones que se quieran anticipar; por lo visto resulta tremendamente efectivo.

El juego y su interesante implementación se puede examinar a partir del código en Github: Life, para aprender de él o hacer modificaciones.

Relacionado:

Compartir en Flipboard Tuitear
Por @Alvy — 8 de Enero de 2022

«… y en la clase de Historia de hoy, niños y niñas, recordaremos cómo era conectarse a Internet a finales de los años 90.»

Estaba yo quejándome hoy de que la velocidad de la fibra me oscilaba entre 350 y 400 megabits por segundo en vez de los 600 que tengo contratados –tengo que que revisar qué pasa– cuando casualmente me he topado con este vídeo que publicó Gough Lui conectándose a internet por módem a menos de 56 kilobits por segundo. Las imágenes y sonidos son unos deliciosos 20 minutos de regreso al pasado (aunque lo interesante se puede ver en los cinco o diez primeros) que recrean vívidamente una conexión a internet a través de módem como si se estuviera a finales de los años 90, hace algo más de dos décadas.

Para el «experimento» utiliza un Pentium a 100 MHz, Windows 98, un módem a 56 Kbps y algún que otro truqui. Los títulos de crédito del vídeo son largos (¡dos minutos!) pero es lo que tarda en encenderse el equipo… y da para unos títulos de créditos extensos y detallados. Podrías hacer un café en esa megapausa.

Lo siguiente es hacer la llamada de conexión bip, bip, bep, bip… [02:20]. Y aunque hay un poco de ruido de fondo pueden escucharse los tradicionales ruiditos del módem. Quienes se fijen bien –los expertos lo descifrarán de oídas– verán que la conexión se realiza sólo a 31.200 bps, una velocidad un tanto «rara» debido a que se negociaba automáticamente a la baja cuando la calidad de la línea no era muy buena. A partir de ahí, ya hay conexión TCP/IP…

… y comienza la navegación por la Superautopista de la Información con Netscape Communicator 4.8, el mítico navegador web de la época, que combinaba navegación web + correo electrónico. Netscape sucumbió, pero de sus cenizas surgieron la Fundación Mozilla y el actual navegador Firefox.

La navegación de la demo se realiza usando miniProxy, básicamente porque con el protocolo HTTPS/TLS que hoy en día es casi obligatorio al conectar a cualquier página web sería imposible negociar un método de cifrado válido en 1999 entre servidor-y-navegador. Así que miniProxy es el truqui intermedio que hace el favor de «traducir» esa comunicación dejándola en HTTP normal, corriente (e inseguro).

La experiencia se completa navegando un poco por diversos sitios, algunos de los cuales funcionan y otros no: Slashdot (bien), Google (mal), Wikipedia (mal). Pero lo más impresionante quizá es descargar imágenes a velocidad de módem, por ejemplo unas viñetas de XKCD [13:00], que no es que resulte lento, es a velocidad de placas tectónicas continentales. La realidad –he de decir– es que tan, tan, tan lenta no era la cosa, por alguna razón en el vídeo está un poco exagerado (?!) aunque es cierto que cualquier imagen de más de 50 KB ya requería esperar unos cuantos segundos, minutos para las más grandes y de mayor resolución. De vídeo, HD y otras cosas futuristas ni hablar, claro.

(Vía Laughing Squid.)

Relacionado:

Compartir en Flipboard Tuitear
Por @Alvy — 17 de Diciembre de 2021

Buried Treasure and Map Files — Embedded

Elecia White es la creadora de Memory Map Land [zoom a la versión ampliada en Github], una artística representación de los mapas de memoria que se utilizan en el desarrollo de diferentes sistemas, especialmente microcontroladores. Es una curiosa forma de entender para qué se utilizan los diversos tipos de memorias (o más bien zonas de la memoria) y cómo se relacionan con los compiladores, los dispositivos de entrada y salida y el código en general.

Hay una explicación en vídeo del mapa en YouTube y en forma de presentación [PDF], que seguramente puede venir a alguien que tenga que quiera indagar más… o tenga que dar clases sobre este tipo de aspectos de la informática. El mapa está lleno de detallitos como «el lago de los espejos» o el «remolino null» además de las pilas (stacks) o el «lago de la puesta a cero». La verdad es que traducir todos los términos/países/territorios no es tarea fácil.

El mapa es tan atractivo que da para póster enmarcado, y como tal también se vende. Recuerda mucho a otros como aquellos Mapas de Internet al estilo antiguo. Es tan colorido que podría pasar por el mapa de los reinos de Juego de tronos o usarse para cualquier partida de rol, si eres geek al 110% o quieres dejar flipados a tus amistades por más frikis que sean.

(Vía Hack A Day.)

Relacionado:

Compartir en Flipboard Tuitear

Un libro de @Alvy y @Wicho

Se suponía que esto era el futuro | un libro de Microsiervos, por Alvy y Wicho

Se suponía que esto era el futuro
Ciencia, tecnología y mucho más
www.microsiervos.com/libro


Desarrolla más rápido con Xojo