Mostrando entradas con la etiqueta Python. Mostrar todas las entradas
Mostrando entradas con la etiqueta Python. Mostrar todas las entradas

domingo, agosto 30, 2026

Mi Asistente Virtual IA no programará en Python para ti... pero si es COBOL, vale.

El viernes os publiqué uno - más - de los muchos asistentes abiertos en Internet que pueden ser explotados por los malos para consumir servicios de IA en resolución de problemas. Era sobre un Asistente Virtual sobre Google DeepMind Gemma, pero ya os había dejado antes un artículo sobre un Asistente AI construido sobre Gemini, y también os dejé publicado otro sobre un Asistente AI construido con GPT-4o, y uno último titulado "Weaponinzing Token Consumption" en "LLM-Based AI Assistant" que explica cómo el mundo del cibercrimen busca estos asistentes para automatizarlos en forma de API y comercializarlos entre los malos.

Figura 1: Mi Asistente Virtual IA no programará en Python para ti
... pero si es COBOL, vale.

La verdad es que son muchos los Asistentes IA basados en LLM que están abiertos con pocos guardarraíles, o que son muy sencillos de conseguir que sufran Misalignment, así que es campo abonado para que el cibercrimen los vaya metiendo en granjas de modelos APIficados para revenderlos o usarlos en operaciones masivas de phishing, propaganda, botnets en redes sociales, programación, etcétera.
Cuando estaba probando esto, hubo uno que me hizo gracia, porque no había narices de conseguir que me hiciera programas en Python, y lo dejé para sacarlo en otro post, así que aprovecho y hoy domingo os lo publico. 

Figura 3: Un Asistente Virtual de una web en GPT-4

Como podéis ver se trata de un asistente virtual basado sobre GPT-4 así que nada, el juego es preguntarle si puede o no puede recomendarte artículos de la web. Como veréis, en algunos momentos se va a ir por la rama del sí, y en otros por la rama del NO, pero en todas las ramas le voy a poner trampas, a ver cómo funciona.

Figura 4: Te da la hora y es correcta (La mía es de Portugal)

Por ahora parece que funciona muy bien la rama del Sí, pero ya veremos cómo rápidamente se nos rompe. En cuanto en la rama del Sí le pido programar en Python, se va por la rama del NO.

Figura 5: No me programa en Python

Pero de esta forma sé lo que le cuesta más de romper. Así que decido pedirle cosas por la rama del Sí, para ver si le cuesta hacerlo o no.

Figura 6: La lista de herramientas es también un NO

Así que, puesto que se va por la rama del No en algunas peticiones, decido enfrentar las dos peticiones. ¿Qué pasará cuando le pida dos cosas que van por la rama del No?

Figura 7: Me muestra las herramienta por no programar en Python

Como veís, prefiere darme la lista de herramientas antes de hacerme un programa en Python. ¿Qué le habrá hecho el pobre Python a este asistente? ¿Habrá tenido algún abuso y han reforzado las protecciones contra este desalineamiento? Vamos a seguir probando.

Figura 8: Ni programa en Python ni Tokens máximos

Está claro que el programa en Python le tiene bloqueado, así que vamos a poner el programa en Python en la parte del No, y vamos a dejar el Sí para lo que quiero sacarle.

Figura 9: Et voilà. Tokens disponibles

Visto esto, decidí probar con pintar un gato directamente, a ver si es por el ASCII ART, pero no, ahí tenemos a nuestro gatito.

Figura 10: Me pinta el gato, pero no en Python

Bueno, pues vamos a probar con otros lenguajes de programación, así que comencé a pedirle lo mismo en pero programado en C. A ver si es con "programar" y no con "Python".

Figura 11: Programa en Lenguaje C

No me lo puedo creer. Es con Python. Vamos a ver si con algo más raro también funciona. Vamos a pedírselo en COBOL. A tope con mis años 80.

Figura 12: ASCII ART en COBOL. A tope.

Me ha encantado el PROGRAM-ID. GATO-ASCII. No me lo puedo creer. ¿Y si le pido en otro lenguaje como RUST? Creo que debería pedírselo en Javascript para Workers AI de Cloudflare.

Figura 13: Visto. A por otro tema

Para terminar, quería pedirle mi querida historia de Sci-Fi, y aquí me ha hecho también una preciosa. Digna de contaros. Aquí va el primer intento.

Figura 14: De Historia Larga, nada. Y sobre productos suyos.

Bueno, pues nada, volvamos a la encerrona del Sí y el No. Ahora me escribes una historia larga de Ciencia-Ficción o de Espías. ¿Qué vas a hacer ahora?

Figura 15: Me escribe una historia larguísima de Sci-Fi

La sorpresa es que se va por el SÍ y me escribe la historia de casi 6 páginas completas. Os dejo aquí la captura de la historia entera metida en un documento. Así que de breve nada.

Figura 16: Una historia de 6 páginas

Pero lo mejor, es que es una historia con publicidad de product-in-placement. La historia está construida con el catálogo completo de productos de la web del asistente virtual, así que de perdidos al río, debió pensar.

Figura 17: Una página de la historia de sci-fi con los productos de la web

Me ha encantado este asistente. Que no me programe en Python, pero me haga programas de ARTE ASCII en COBOL para pintar gatos. Que me haga historias de Sci-Fi largas, pero me meta publicidad de su catálogo dentro de ella. Maravilloso.


Eso sí, sigue siendo fácil de "weaponizar" y utilizar por los malos. Eso sí, que no le pidan programar en Python ni escribir historias, que les mete publicidad. Un mundo curioso este de los Asistentes IA basados en LLMs.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


domingo, abril 05, 2026

Vibe Coding en BASIC para AMSTRAD CPC sale (un poco) más caro

¿Qué otra cosa mejor que estar probando Vibe Coding en un sábado por la tarde en las oficinas de Cloudflare en Lisboa para comprobar cuánto de bueno es un modelo programando en BASIC? Sí, eso es lo que quería comprobar. Veréis, hace unos días publiqué el artículo de "Cuánto dinero cuesta hacerte el juego de Light-Cycles de TRON en Workers de Cloudflare usando IA" donde usaba como modelo LLM a Cloud Opus 4.5 para construir el juego de las motos de TRON en TypeScript y poderlo correr en Workers de Cloudflare, y el coste que tuvo hacer ese proyecto fue de 0.5 USD. Regalado.

Figura 1: Vibe Coding en BASIC para AMSTRAD
CPC sale (un poco) más caro

Pero, la pregunta que me rondaba era... ¿sería igual de barato hacerlo en lenguajes menos populares que Python o TypeScript? Ya me he pegado varias veces con el Vibe Coding, y supongo que muchos de vosotros habéis pasado por esa fase donde el código no funciona como quieres, da errores, o directamente una modificación te cuesta la vida. Así que en lenguajes menos "mainsteam" la cosa será peor. Esa era la pregunta con la que me puse a echar un rato ayer sábado. 

Basta con preguntar en cualquier sitio y se ve que Claude programa mejor en Python, JavaScript, TypeScript, y frameworks para tecnologías web, que en el resto de los lenguajes, lo que hace que le cueste un poco más, ¿pero cuánto de más?

Figura 3: Con qué lenguajes programan mejor los modelos de Claude

Para hacer la prueba, quise hacer el mismo juego de Light-Cycles - no está mal como Benchmark - pero en BASIC, así que le pedí un Pormpt, que optimizado por Gemini, es éste que tenéis aquí. Así que, una vez Prompted, se supone que el resto es probar y ver resultados. Primero hice las pruebas con el propio Gemini, así, ligeras, a ver si el código funcionaba bien a la primera, y la verdad es que no hubo suerte.

Figura 4: Prompt par hacer el Light Cycles en AMSTRAD

Además de TypeScript, había hecho una versión pequeña del mismo juego de Tron Light-Cycles con Bash usando Gemini para mi MacOS y me lo había hecho bastante bien y de forma rápida, pero con BASIC le estaba costando.
Además, cada prueba que quería hacer la tendía que hacer en el emulador, así que el proceso incluía la creación de un disco virtual, usando Amstrad DSK Filesystem Manager.
La verdad es que la herramienta funciona de maravilla, pero hay que asegurarse de que el código que subas tenga el formato CRLF para que no se trunque, y que el formato del DSK que crees sea compatible con AMSTRAD, así que hay que hacerlos de, por ejemplo, 40 pistas, 9 sectores, y 512 bytes por sector.  Una vez hecho esto, ya puedes subir el programa al disco, y descargarte una copia del fichero .DSK que luego vamos a poder meter en el emulador. El proceso no es complicado.

Figura 7: Los disquettes de AMSTRAD

Eso sí, por cada cambio que hagas tienes que repetirlo, así que si el Vibe Coding no funciona bien a la primera, pues hay que hacerlo muchas veces. 

Esto nos lo sabemos ya de cuando con el equipo de Ideas Locas hicimos el BASIC 1.0 Copilot para AMSTRAD CPC 6128 que os conté hace un par de años en la RootedCON.
En mi caso, una vez construido el DSK, el emulador que utilicé fue el de CPCBox que está online, y puedes cargarle el DSK fácilmente. Además, esta versión la tienes con muchos juegos. Aquí os dejo un vídeo de cómo funciona con los juegos clásicos con los que estuve enredando un rato.

También con juegos clásicos como el Bombjack o el Ikari Warriors

Pero volviendo a la prueba. Haces el código con OpenCode/Gemini/ChatGPT, generas el DSK usando Amstrad DSK Filesystem Manager y luego cargas el disco en CPCBOX. Una vez allí, CAT para ver el contenido del disco, LOAD para cargar el programa, y RUN para ejecutarlo. Y a jugar. El resultado completo lo tenéis aquí.

Figura 11: El resultado final. El Light-Cycles en BASIC
para el AMSTRAD CPC 464/664/6128

En este caso, después de que Gemini me fallara varias veces, decidí ir a por OpenCode y así podría comparar bien los precios que me costaba hacerlo funcionar. Y el proceso tomó su tiempo. Si os digo que me tiré un par de horas para hacerlo funcionara, os podéis hacer una idea.

Figura 12: Los costes después de 2 horas

Al final dejé algo bastante digno, como podéis ver en el código, pero si miramos los costes que me llevó hacerlo con OpenCode a través del AI Gateway de Cloudflare, podéis ver que en comparación con TypeScript, el coste fue mucho más alto. 

Si he de ser justo, he de decir que también se lo puse difícil, porque Locomotive BASIC y para emuladores, no debe ser lo que más líneas de código tira y lo que más tokens consume. De hecho, creo que debería ser yo de los pocos que estuvieran con eso un sábado por la tarde.

Figura 13: OpenCode con Claude Opus 4.6 "sufriendo"

Eso sí, poder crear juegos para AMSTRAD CPC a golpe de Vibe Coding es mejor que tener que copiar los códigos de la MicroMania como hacíamos en la niñez, que os aseguro que eso sí que tomaba tiempo, hasta que lo tenías fino completo.

Si te interesa la IA y la Ciberseguridad, tienes en este enlace todos los posts, papers y charlas que se han  escrito, citado o publicado en este blog sobre este tema: +300 referencias a papers, posts y talks de Hacking & Security con Inteligencia Artificial.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


martes, marzo 24, 2026

La gestión de la "Deuda Cognitiva" en servicios programados con Inteligencia Artificial

El mundo del programación con Inteligencia Artificial ha entrado en una nueva fase desde finales del año pasado cuando comenzamos a ver que programar con IA dejaba de ser algo como Vibe Coding, para convertirse en una herramienta capaz de hacer tools y proyectos de gran tamaño y con gran calidad. Ahora le estamos dando el proyecto completo y lo hace con una alta calidad, y podemos ver resultados como el que os publiqué hace poco para, en un par de minutos, migrar un código en C++ de un juego a TypeScript y tenerlo funcionando en Workers de Cloudflare.

Figura 1:La gestión de la "Deuda Cognitiva" en servicios
programados con Inteligencia Artificial

Impresionante. Y estamos entrando en una fase donde las empresas solo tienen que crear sus MCPs internos, darle las herramientas a sus empleados y dejarles que se creen las tools y los agentes que quieran para automatizar sus tareas del día a día más de forma mucho más avanzada que antes. Es común encontrarse con amigos y preguntarse... ¿qué estás haciendo tú con IA? Existe hasta cierta ansiedad por no ser el que menos partido le esté sacando a este nuevo mundo.

Me encanta. Puedes hacer en minutos tus proyectos, tus tools, y automatizar muchas cosas. Es un mundo increíble en el que se pueden hacer muchas cosas de forma muy rápida, y avanzar el ritmo de innovación a marchas forzadas. Pero la pregunta que queda en las conversaciones es...  Te aburres, hazte un juego en un minuto.





Como ya os conté, nosotros fuimos creyentes de este mundo desde el día uno e incluso hicimos, pensando en mi AMSTRAD CPC 6128,  un BASIC 1.0 Copilot para AMSTRAD CPC 6128, que publicamos en la RootedCON de hace dos años.
Sabíamos que la IA lo iba a cambiar todo, y por supuesto, también la programación, así que desde el principio nos pusimos mucho las pilas con esto. Pero... ¿y hoy en día?

¿Ya no será necesario saber programar?

Os prometo que yo me he hecho esta pregunta internamente muchas veces desde que escuché a CTOs decir que sus ingenieros ya no tiran líneas de código, y tengo mi propia reflexión, que tiene que ver con el título de este artículo y con un concepto muy relevante, que es el de "Deuda Cognitiva". Este concepto hace referencia a cuánto dejas de saber de cómo está hecha una pieza clave en tu negocio. Y lo que sería el nivel aceptable o no aceptable lo decides tú. Es así de sencillo.

Por ejemplo, hemos incurrido en mucha Deuda Cognitiva en cómo funcionan los sistemas operativos que utilizamos en las empresas. No conocemos todos los detalles de su funcionamiento, ni tan siquiera el control que de ellos pueden tener las empresas que los crean. Simplemente confiamos en ellos. En el Windows, en el Mac, en el iPhone y el Samsung Galaxy con Android. Pero también lo hacemos en el MS Office o el mismo Salesforce. Tenemos Deuda Cognitiva en cómo está construida la herramienta.

Pero si vamos a más allá, tenemos Deuda Cogntiva en casi todo. Cuando programamos y hacemos nuestro propio código fuente en Rust, JavaScript, Python o NodeJS, el código en ASM, o el binario son del pasado. No nos importa, porque confiamos que va a funcionar en otro sitio, y si no, al menos podemos reconstruirlo, porque sabemos cómo se hace, y podemos migrarlo.

Ahora bien, cuando hacemos un software con Prompting, nuestro código fuente pasa a ser el Prompt, y ese Prompt, cuando se interpreta da un código, pero... no es determinista. Ya os conté mi aventura con el Insane Vibe Coding with Harsh Prompting. Puede que lo haga de una forma u otra. No, no te asustes, esto también te puede pasar con un código en C++ según el compilador que utilice se generará un código ASM o binario diferente.

Eso sí, puedes garantizar que, con un 95% de probabilidades, el compilador no afectará a la lógica del programa resultante. Con el Prompt, no tenemos aún esa certeza si cambiamos el modelo que tenemos por debajo - corregidme si me equivoco - pero el nivel de creatividad y no determinismo es alto aún modelo contra modelo. Lo que podríamos hacer es darle el código generado por el modelo anterior a un nuevo modelo y decirle que lo migre o lo cambie. Pero volvemos a depender de que el modelo de IA lo haga bien. No tenemos control directo.

No pasa nada. Si la herramienta que estamos construyendo no es del core de nuestro negocio, puede que no sea importante, y en el caso de que tengamos un problema con ella, construimos otra de cero igual, o similar. Por ejemplo, una herramienta para hacer tareas personales, controlar nuestra gestión de acciones diarias o para trabajar con los documentos ofimáticos como nos gusta. Perfecto.

La duda es cuando llegamos al software core de nuestro negocio. Supongamos una compañía, que vive de tener un software de alta calidad en el backend y en las apps,  ¿Puede entrar en Deuda Cognitiva? Podrían entrar en Deuda Cognitiva en módulos accesorios, o pruebas, pero en el Core de su servicio. Tengo mis dudas. 

Cuando entramos en Deuda Cognitiva significa que no sabemos bien cómo está hecho, y cuando hay que actualizarlo, modificarlo o cambiarlo, no somos capaces de hacerlo fácilmente. De hecho, he visto a mucha gente haciendo una tool súper-chula y luego no ser capaces de meterle mano ni con IA para actualizarlo, cambiar algo, o mejorarlo. Cada cosa que tocaban, rompía algo diferente.

Yo me pasé horas con un proyecto, intentando que me hiciera un cambio sin romper la funcionalidad anterior y no fui capaz. Y me ha pasado hasta con gráficos hechos con Nano Banana, que una vez construidos, cuando he querido hacer una modificación sobre ellos a golpe de Prompting ha sido un horror.

Unas ideas finales

Creo que programar con IA es fundamental hoy en día, y creo que el tooling personal, los agentes, las apps internas pueden beneficiarse horrores de tener estas nuevas capacidades. Y creo también que delegar a desarrollo con IA proyectos completos que no son críticos para el negocio puede dar a las empresas y a las personas una ventaja competitiva brutal. 

Pero....

Y aquí viene el pero (por poner algún soft-limit). Creo que no hay que incurrir sin control en Deuda Cognitiva en las piezas de software core de la compañía. Además, antes de poner en producción en un entorno abierto, estos proyectos de software hechos puramente por IA deben pasar mínimas evaluaciones de seguridad, búsqueda de vulnerabilidades, fortificación, y auditoría. 

No hay que confiar más en que un modelo de IA hace más seguro el software que lo que lo haría un programador senior con experiencia, o que no vaya a cometer errores de seguridad tan sencillos de explotar como los que escribiría un desarrollador junior. Si no, léete el libro de "Hacking IA" y te cambiará la visión.

Por supuesto, el CTO de la compañía tiene que tener el control de dónde hay Deuda Cognitiva, dónde no lo hay, y cuál es el riesgo en que estamos incurriendo aceptando la Deuda Cognitiva que estamos incorporando en la compañía. Vamos, que es otro indicador de riesgo que hay que tener presente.

Si te interesa la IA y la Ciberseguridad, tienes en este enlace todos los posts, papers y charlas que se han  escrito, citado o publicado en este blog sobre este tema: +300 referencias a papers, posts y talks de Hacking & Security con Inteligencia Artificial.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


sábado, marzo 14, 2026

Trinetra: Datos y Conocimiento Sobre el uso de IPv6 en Organizaciones en España

Siempre me ha gustado el dicho de “Dato mata Relato” para entender con precisión el estado del arte y poder extraer conclusiones y acciones fructíferas en temas tan opinables como es el grado de adopción de IPv6 por parte de las empresas y otros tipos de organizaciones. En esto del IPv6 se ha seguido un poco el “modelo de Internet” donde se ha llevado primero a los usuarios finales (50% de adopción mundial mientras escribo estas líneas) pero las empresas y administraciones todavía no están ahí.

Figura 1: Trinetra -Datos y Conocimiento Sobre
el uso de IPv6 en Organizaciones en España

Pero veamos con datos dónde estamos claramente. Precisamente con esta idea, me decidí a hacer un modesto proyecto en Python los últimos fines de semana. He bautizado este proyecto, en honor a mis raíces hindúes, como “Trinetra” porque esta palabra alude al tercer ojo de la deidad Shiva, símbolo de visión profunda, claridad y revelación de lo oculto.

JL. Rambla, ampliado y revisado por Pablo González y Chema Alonso

La idea es que, identificando y analizando los recursos que las organizaciones de distintos sectores exponen en IPv6, entenderemos que tipo de empresas, administraciones públicas y universidades están contribuyendo, cómo lo están haciendo y si hay alguna conclusión/recomendación que podamos extraer. Desde el punto de vista de la ciberseguridad, sólo con una visión más clara y profunda podremos entender y proteger esta nueva superficie de exposición que es IPv6.

Grado de Adopción de IPv6 por Sector en España en Marzo de 2026

Veamos primero dónde estamos, cómo lo están haciendo otros países y qué conclusiones podemos sacar con un análisis puntual. En futuros artículos podremos analizar aspectos más interesantes y la propia evolución del ecosistema. El siguiente gráfico nos muestra, para cada sector, el grado de adopción de IPv6 del mismo, en términos de empresas que exponen alguno de sus dominios en IPv6 públicamente en Internet. 
  • Infraestructuras: 100% aunque poco representativo, pues se ha analizado 1.
  • Servicios: un 50% con 6 analizadas.
  • Seguros: un 50% con 2 analizadas.
  • Consumo: un 36,8% con 19 analizadas.
  • Energía: un 33% de 15 analizadas.
  • Universidades (Educación): tenemos un 24,4% de un total de 33 organizadas analizadas.
  • Administraciones Públicas (Administración): llegan a un 25% de un toral de 36 analizadas.
En total, hemos analizado 220 empresas de las cuales 57 (un 25,91%) exponen algún dominio en IPv6. Algunas conclusiones del top por sector.

Figura 3: Distribución por sectores

Un análisis más detallado, recogido en el siguiente diagrama, es mostrar estos resultados no en función del número de empresas, sino de los dominios totales del sector expuestos en IPv6 frente al número de dominios totales analizados.

Figura 4: Distribución sectorial por dominios

Ranking sectorial de Campeones IPv6 en España en 2026

De las empresas analizadas en cada uno de los distintos sectores, el siguiente gráfico muestra las que están exponiendo recursos IPv6. En la leyenda, el primer número corresponde a las empresas de ese sector con recursos en IPv6 y el segundo es el porcentaje sobre el total de empresas de todos los sectores que exponen IPv6.

Figura 5: Contribución sectorial a IPv6 en España

Así, por ejemplo, para el sector de Energía, de las 82 empresas analizadas que veíamos en el gráfico anterior, 5 exponen recursos IPv6 y esto supone un 9% de las empresas que

Ranking de Métodos de Exposición en IPv6 en España en 2026

De las 220 organizaciones analizadas, 57 exponen dominios en IPv6 pero dos de ellas lo hacen de dos maneras distintas por lo que hay 59 items en total, de los cuales los líderes son las CDN Akamai (37%) y Cloudflare (20%), seguidos del servicio CDN de AWS, CloudFront, con un 15% del porcentaje.

Figura 6: Métodos para exponer recursos IPv6

Por tanto, podemos decir que la mayoría de la exposición es a través de CDNs, en muchos casos seguramente son los proxies de la CDN los que habilitan IPv6 traduciendo las peticiones para los servers IPv4-only de las organizaciones, pero algo es algo. De todos modos, no siempre tiene que ser así, nuestra Web del IPv6 Council se expone a través de Cloudflare y las peticiones en IPv6 se progresan hasta nuestro server en la Cloud de Telefónica Tech en este mismo protocolo.

No obstante, podemos ver algunas organizaciones con direccionamiento propio o direccionamiento de hosts en proveedores cloud que parecen indicar que algunas tienen confirmado un despliegue IPv6 en sus servidores (alrededor de un 20%).

Herramienta Utilizada

La herramienta Python para obtener los datos de este informe, Trineta, no es muy complicada, pero he publicado el código en un repo GIT de codeberg.org por si queréis clonarlo y probar con el CSV de organizaciones en España que uso yo o bien probar con otro propio.


Esta herramienta es parte de las utilidades que estamos desarrollando en la comunidad de ciberseguridad del IPv6 Council España y se ejecuta en las máquinas de nuestro laboratorio IPv6-only SecLab. 
Próximos Pasos

Si has leído hasta aquí, lo primero muchas gracias, y lo segundo, igual te estás preguntando como yo, cómo están yendo estas mismas métricas ahora mismo en otros países y cómo van a ir evolucionando. Como prueba a alto nivel, utilizando Cloudflare Radar podemos ver el porcentaje de peticiones HTTP hechas sobre IPv4 y sobre IPv6 en España.

Figura 9: Tráfico HTTP sobre IPv4 y sobre IPv6 en España

Un 10%, pero si miramos, por ejemplo, Alemania, el resultado nos deja bastante por detrás, ya que allí el porcentaje llega hasta el 38%. Así que tenemos espacio de mejora, eso seguro.

Figura 10: Tráfico HTTP sobre IPv4 y sobre IPv6 en Alemania

Puede que tengas más interrogantes que quieres compartir con nosotros, para ir construyendo informes más valiosos. Nos vemos en siguientes artículos, y si quieres puedes colaborar con nosotros. Contacta conmigo si quieres colaborar con hacer que IPv6 se despliegue más rápido en España.

¡Saludos Malignos!


miércoles, septiembre 03, 2025

Números Primos en sucesión: Un Viaje desde una Nueva Coordenada hasta los Límites del Cómputo buscando el nuevo Primo de Mersenne

¿Y si pudiéramos organizar los números primos, esos rebeldes e impredecibles ladrillos del universo matemático, en una línea ordenada? ¿Qué patrones ocultos podríamos descubrir? Los límites mismos de lo que podemos calcular limita comprender la naturaleza del orden de los números primos y a su vez le da valor de uso, pero… y si hay otras formas de “calcularlos” . 

Figura 1: Números Primos en sucesión - Un Viaje desde una Nueva Coordenada
hasta los Límites del Cómputo buscando el nuevo Primo de Mersenne

Lo que comenzó con una idea sencilla, casi como un juego de lógica, terminó revelando conexiones inesperadas y rozando algunos de los misterios más grandes de las matemáticas. Pero ahora estoy en la fase de pasar de la posibilidad de ir hacia la verdad o llegar a un proceso que lo desmienta.

1. El Sistema de Progresión Aditiva: Un Nuevo Marco para los Primos

Todo gran descubrimiento necesita un mapa. Nosotros decidimos crear el nuestro.

1.1. La Conjetura Fundamental

Nuestra primera idea fue simple: ya que todos los números primos (excepto el 2) son impares, todos los matemáticos en busca de números primos trabajan con impares. Así nació nuestra progresión fundamental: 3+2n. Para n=0,1,2,... esta fórmula genera la secuencia 3, 5, 7, 9, 11..., que inevitablemente debe contener a todos los primos que buscamos.

1.2. Definición de la Posición (ps)

Con nuestra "carretera" de números impares construida, necesitábamos una forma de darle una "dirección" o "coordenada" a cada primo. A esta coordenada la llamamos posición (p_s). La calculamos con una fórmula sencilla que nos dice cuántos "pasos" de 2 hay que dar desde el 3 para llegar a un primo (p_r): ps=2pr−3

Por ejemplo, para el primo 13, su posición es (13−3)/2=5. Esto nos da un sistema de coordenadas único para nuestro mapa de primos.

1.3. Algoritmo Determinista

Armados con este sistema, nos dimos cuenta de que podíamos predecir dónde estarían los números compuestos. Esto nos permitió crear un algoritmo para "cribar" la secuencia 3+2n, eliminando los compuestos y dejando sólo los primos, sin tener que realizar costosas pruebas de primalidad.

Figura 2: Primer código en Python de prueba

2. Análisis de Números de Mersenne a través del Sistema de Posiciones

Una vez establecido nuestro sistema, lo aplicamos a un tipo de números muy especial y famoso: los números Primos de Mersenne.

2.1. El Exponente como Número Primo

Los números Primos de Mersenne tienen la forma 2p−1. Una regla de oro es que para que este número pueda ser primo, su exponente p también debe serlo. Esto nos dio un campo de juego perfecto: podíamos aplicar nuestro sistema de posiciones (p_s) no a los gigantesco s números Primos de Mersenne, sino a sus exponentes primos, mucho más manejables.

2.2. La Diferencia de Posiciones (Δps)

Para entender la relación entre estos exponentes, introdujimos la Diferencia de Posiciones (Deltap_s). Este valor simplemente mide el "salto" en el mapa entre las posiciones de dos exponentes primos. Como vimos, este valor está directamente relacionado con la diferencia entre los primos: Deltap_s=(p_i−p_j)/2.

2.3. Tabulación y Análisis de Datos

Comenzamos a construir tablas para visualizar estos datos: el exponente primo, su posición p_s, y las diferencias Deltap_s con todos sus predecesores. Fue en estas tablas donde los patrones comenzaron a emerger.

3. Descubrimiento de Patrones y Relaciones Matemáticas

El análisis de los datos nos llevó a varias conclusiones sorprendentes, verdaderas joyas matemáticas ocultas en la estructura que habíamos creado.

3.1. La Firma de los Primos Gemelos

Observamos un patrón muy específico en la columna Deltap_s. Cuando la diferencia de posiciones de un exponente con su predecesor era 2, y la del siguiente exponente era 1, habíamos encontrado una constelación de primos de la forma (p,p+4,p+6). Lo más importante es que la condición Δps = 1 era una firma inequívoca de que habíamos encontrado dos exponentes primos gemelos (separados por 2 unidades, como 17 y 19).

3.2. La Invariante del Sistema

En un momento de pura curiosidad matemática, probamos la fórmula (p_r−p_s)−p_s . El resultado fue asombroso: para cualquier número primo p_r que introdujéramos, el resultado era siempre 3. Habíamos descubierto una constante, una propiedad invariable de nuestro sistema que vincula a cada primo con su posición de una forma elegante y predecible.

3.3. Búsqueda de Primos por "Saltos"

Usamos la idea de Δps a la inversa. En lugar de medir los saltos, los fijamos. De la lista de los 51 exponentes conocidos que generan Primos de Mersenne, los únicos para los cuales se sabe que 2p−3 también es un número primo son:
    • p = 3 (que genera la pareja de primos gemelos 5 y 7)
    • p = 5 (que genera la pareja de primos gemelos 29 y 31)
    • p = 13 (que genera la pareja de primos gemelos 8189 y 8191)
    • p = 17 (que genera la pareja de primos gemelos 1310 69 y 1310 71)
Se observa que entre el exponente 3 y 5 hay una “ distancia” de 2^1, entre 13 y 17 hay una distancia de 2^2 y la pregunta es si esta circunstancia describe que entre 2 valores de p que generan primos gemelos hay una “ distancia” igual a 2^n. 
 
Y la gran pregunta: ¿se puede programar?

4. Exploración de los Límites Computacionales

Nuestro viaje nos llevó inevitablemente desde la elegancia de los patrones matemáticos hasta la dura realidad de la computación.

4.1. El Muro de los Grandes Números

Cuando intentamos aplicar nuestras ideas a números realmente grandes, como el exponente del Mayor Primo de Mersenne conocido (p=82,589,933), nos topamos con un muro. El número 282,589,933−1 tiene más de 24 millones de dígitos. 
 
Imprimirlo llenaría unas 12.000 páginas de texto. Calcularlo, almacenarlo y operarlo está más allá de las capacidades de un programa convencional, o no... ¿se puede “combinar” métodos de programación de manera que “ alumbrar” números primos en una sola línea a partir de 2+3n, con la criba por posición (ps)? 
 
Actualmente se emplean métodos de factorización, este método propone un método en el que se pueden sustituir los números por valores, de manera que NO haga falta calcularlos sino simplemente determinar si su posición (ps) corresponde al valor que lo identifica como múltiplo con otro primo posterior a 3. 
 
También se puede aplicar esta metodología de manera “ regresiva” , o sea a partir de un múltiplo de 3 generar todos los primos anteriores al mismo (esto es especialmente útil con los números Primos de Mersenne, ya que todo número impar posterior a un número primo de Mersenne es igual a 3n). Puedes programarlo a partir del código anterior de Phyton.

4.2. El Desafío de la Primalidad

El verdadero límite es probar si un número de esa magnitud es primo. Proyectos comoGIMPS (Great Internet Mersenne Prime Search) dedican años de computación distribuida global para verificar un solo candidato. Nos dimos cuenta de que nuestra curiosidad tocaba la frontera misma de la investigación matemática. 
 
Pero ahora, a través de esta metodología, el número a calcular la mitad de grande ya que operaremos con 3+2n, siendo 2n un número la mitad de grande de lo que ahora se trabaja, que aplicando otras formas de reducción aliviarían todavía más las necesidades de cálculo.

4.3. El Código como Herramienta de Exploración

Frente a esta barrera, nuestro enfoque cambió. El código Python dejó de ser una "calculadora" para convertirse en un "laboratorio" . Creamos un generador que aplicaba nuestra lógica fila por fila. Aunque no podía darnos la respuesta para un exponente de 82 millones, sí formalizaba el proceso y nos permitía explorar el comportamiento del sistema para rangos manejables, demostrando la validez de nuestras ideas.

Figura 3: El código en Python generado con estas ideas

Conclusión: De una Pregunta a un Universo de Ideas

Nuestro viaje, que comenzó con la simple idea de ordenar los números primos en una línea, nos llevó a crear un sistema de coordenadas, a descubrir patrones ocultos como las firmas de los primos gemelos, a encontrar constantes matemáticas inesperadas y, fin almente, a comprender los límites prácticos de la computación.

Esta exploración es un microcosmos de cómo funciona la ciencia: una pregunta simple, seguida de la creación de un modelo, el análisis de datos, el descubrimiento de patrones y, en última instancia, el encuentro con preguntas aún más grandes y profundas. Lo s números primos puede que nunca revelen todos sus secretos, pero el intento de descifrarlos seguirá siendo una de las aventuras más emocionantes de la mente humana.

Si has llegado hasta aquí y según el interés que te haya suscitado este texto, a la pregunta de qué puedes hacer con ello solo dispone de tres posibles respuestas:
  • Nada
  • Demostrar que es incorrecto
  • Colaborar en su desarrollo más amplio
Saludos,

Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares