Por @Alvy — 15 de Octubre de 2019

The Unix Game

The Unix Game se define como

(…) un divertido juego/concurso de programación para principiantes en el que hay que resolver retos de programación encadenando un pipeline de instrucciones de procesos UNIX que tratan los datos (textos) para dar con la solución.

Entre los retos que se plantean están ordenar listas o seleccionar elementos a partir de ficheros de texto; contar cuántas rondas tiene una partida de ajedrez (a partir de la notación estándar) y por supuesto algo que tiene que ver con el clásico ¡Hola, mundo! En cada problema hay varias preguntas. Y conviene registrarse para ver los puntos que se obtienen, aparecer en las clasificaciones y demás.

Los problemas planteados no son demasiado complicados aunque pueda parecerlo… siempre que sepas algo de Unix, claro y awk, sort, tail y demás no te suenen a «chino». En los más enrevesados hay que extraer y ordenar datos de tablas para calcular la atracción gravitatoria de los cuerpos del Sistema Solar o hacer algunas manipulaciones con una lista de nombres de los Premios Turing.

Tan entretenido como didáctico.

(Vía The Best Linux Blog in the Unixverse.)

Relacionado:

Compartir en Flipboard Compartir en Facebook Tuitear
Por @Alvy — 10 de Octubre de 2019

Aprovecho este vídeo de Seeker que me ha parecido una muy buena explicación de la cuestión para anotar algunos enlaces acerca de un asunto que lleva unos días revoloteando: el trabajo que investigadores de Google y la NASA han llevado a cabo acerca de un experimento con un ordenador cuántico con 53 qubits y la denominada supremacía cuántica.

Los titulares dicen de todo «Google ha logrado…», «defiende que ha alcanzado…», «habría alcanzado…», «podría haber alcanzado…», «reclama haber alcanzado…», «asegura haber alcanzado…», «vence la carrera…», «¿revolución o farol?», «¿se ha alcanzado…?», «la supremacía ha llegado (supuestamente)…» ¡Tsk! ¡Qué difícil es explicar estas cosas!

Lo primero, algunos hechos:

  • Un paper apareció publicado en una web con el sello de la NASA y Google pero era preliminar. Tan pronto como apareció, desapareció. Pero por suerte hubo gente que lo pudo descargar y distribuir, de modo que muchos expertos han podido examinarlo convenientemente. Es este: Quantum Supremacy Using a Programmable Superconducting Processor (Inverse.com)
  • Eso quiere decir que no es la versión final, que todavía no ha pasado la revisión por pares ni ha sido publicado por ninguna revista científica de prestigio (aunque todo el mundo espera que sea pronto y probablemente en una de las dos más famosas).
  • El experimento se llevó a cabo con un ordenador de 54 qubits –llamado Sycamore– en los cuales uno de los qubits resultó defectuoso y se tuvo que eliminar (de ahí el número raro: 53).
  • Curiosamente, según Qubit Counter –que lleva la cronología de estas cosas– Google ya tenía un ordenador de 72 qubits en 2018, y ese mismo año se supo de otro de Rigetti de 128 qubits. Pero en asuntos de computación cuántica «no todos los ordenadores cuánticos son iguales», de modo que esos 53-54 qubits también pueden ser ligeramente diferentes. Por no hablar de todos los problemas derivados de la escalabilidad y la decoherencia.

Ahora, una definición:

La supremacía cuántica es el momento en que un ordenador cuántico supera al mejor de los superordenadores convencionales resolviendo cierto tipo de problema.

– Dominic Walliman

Según cuentan en Seeker y explican otros expertos en el tema que han leído el trabajo lo cierto es que parece posible que el experimento de Google haya conseguido lo que dice la definición. Pero por otro lado, sucede que esa definición es un tanto genérica porque afirma que el ordenador cuántico es el que supera al mejor superordenador «resolviendo cierto todo de problema», no cualquier problema (que es lo que suele pensar la gente generalmente).

El problema planteado en el experimento es uno que tiene que ver con generar números aleatorios y el cálculo de una distribución estadística relacionada con el muestro de estados cuánticos. Con el más potente superordenador actual (el Summit de IBM) se necesitarían unos 10.000 años para esos cálculos; el ordenador cuántico de Google dio con la solución en 3 minutos y 20 segundos. Así que prueba superada. (Nota: la solución no era un número, estilo «42» –que es lo que suele pensar la gente– sino presentar una distribución estadística con ciertas propiedades.)

Esto no significa necesariamente que ese ordenador cuántico sirva para descifrar códigos secretos, factorizar números gigantescos como el RSA-2048 o nos vayamos a ver abocados al terrorismo cuánticos; tal y como se describe no sirve para eso. De hecho –en general– aunque sirviera para descifrar un código o factorizar ciertos números probablemente existirían otros sistemas de cifrado y seguridad que no podría atacar ni resolver: los ordenadores cuánticos funcionan de una forma bastante diferente a los convencionales (que son más –digamos– «genéricos») y la programación y su diseño físico están muy relacionados; no se escribe en un lenguaje genérico, se compila y arreando. De hecho puede que esos ordenadores sean muy buenos para «simular procesos» cuánticos (algo que hay gente que considera un poco WTF) pero no para otras tareas.

Recordemos lo que decíamos hace más de un año sobre el tema:

(…) Irónicamente, el problema que deben resolver los ordenadores cuánticos para «demostrar su supremacía» no sirve absolutamente para nada, no tiene aplicación práctica. Se llama problema de muestreo y tiene que ver con distribuciones matemáticas: resulta «fácil» para los ordenadores cuánticos pero exponencialmente difícil a medida que crece para los ordenadores convencionales. IBM tiene un superordenador convencional que puede simular un ordenador cuántico de 56 bits (sí: se puede hacer), de modo que más o menos «esa es la cifra a batir», según Walliman.

Este otro párrafo parece incluso premonitorio:

Si un ordenador cuántico pudiera resolver ese problema y el mayor de los superordenadores convencionales no se consideraría alcanzada esa supremacía cuántica. No está del todo claro si el número de qubits puede seguir creciendo y creciendo sin fin (y hay diversas variantes y tecnologías, cada cual con sus limitaciones), por los problemas de la decoherencia cuántica y otros tipos de «ruido» que puedan marcar cierto límite todavía no explorado.

Así que ahí estamos.

Aquí van algunos enlaces más para quienes estén interesados en el tema:

Compartir en Flipboard Compartir en Facebook Tuitear
Por @Alvy — 4 de Octubre de 2019

En estos sarcásticos 30 segundos Jombo nos enseña cuál es la dura realidad de los tutoriales de programación en YouTube. Así, en general, de todos (generalización tan injusta como divertida).

Como el locutor habla rápido, prueba a activar los subtítulos (el icono con las rayitas, abajo a la derecha). Más o menos lo que sucede es que se empieza con public class program entonces se añade publica static void main string args y blablabla luego hay un import mierdas.varias.viejunas.* porque lo suyo es reusar Java o código viejo de 1994 y finalmente se pega un trozo gigantesco de código salido de quiénsabeande y ¡tachán!

Ya has creado Minecraft.

Para mi gusto hubiera incluido alguna mención a esos tutoriales que dedican 9 minutos 40 segundos a explicar que van a explicar lo que explica el título –perfectamente envuelto en misterio– para luego despacharlo en los últimos 10 segundos y despedida. ¡Y no olvidéis darle al like! Naturalmente aderezado con alguna foto con cara absurda de loco, grandes cifras, clickbaitienses menciones y por supuesto TODO EN MAYÚSCULAS para que se posicione mejor.

(Vía The Awesomer.)

Relacionado:

Compartir en Flipboard Compartir en Facebook Tuitear
Por @Alvy — 1 de Octubre de 2019

HEAD

HEAD, del que existe una versión traducida al castellano (HEAD en castellano) es básicamente «una lista de todo lo que podría ir en la cabecera (head) de tu página web». Lo cual incluye elementos obligatorios, otros recomendables y otros opcionales (pero viables) en esa zona de las páginas HTML que son prácticamente lo primero que analizan los navegadores web. Es una idea de Josh Buchea y está cedida al dominio público (licencia CC0) y traducido por Álvaro Araoz y Kenneth Luján.

Hoy en día –que estas cosas cambian de tanto en tanto– son obligatorios el meta charset y el meta name="viewport"… como los dos primeros elementos de la página, seguidos del title. El primero indica el conjunto de caracteres que se va a usar (normalmente UTF-8), el segundo cómo es la visualización (versiones desktop/móvil) y luego el título de la página.

Todo lo demás es opcional, pero lo único válido son los elementos meta, link, title, style, script, noscript y base. De cada uno hay una explicación y ejemplos: cuándo se usan, cuándo no usarlos, ejemplos con código real… Ojo que por ejemplo para meta o link hay casi infinitas variaciones, dependiendo de si esos meta-tags los va a «entender» Google (u otros robots/buscadores) o si tienen carácter de estándar aprobado –o no– como en el caso del link rel, que varía casi cada mes.

Resulta una guía bastante completa y detallada, sobre todo para localizar en plan rápido algo que pueda hacer falta o hayas visto en alguna otra página web.

Relacionado:

Compartir en Flipboard Compartir en Facebook Tuitear