7 puntos por davespark 2026-02-01 | 1 comentarios | Compartir por WhatsApp

El exingeniero de Facebook Christopher Chedeau (Vjeux) realizó un experimento para portar el motor de batalla de Pokemon Showdown (unas 100 mil líneas de TypeScript) a Rust usando Claude Code

Objetivos del proyecto

  • Construir un oráculo rápido (sistema de referencia) para entrenar una IA de batallas de Pokemon
  • Implementación existente en TypeScript → demasiado lenta (imposible simular millones de batallas)
  • Lenguaje objetivo: Rust (alto rendimiento) → pero él tenía cero experiencia en Rust

Resultados principales

  • Portó unas 100 mil líneas en 1 mes (trabajo real de unas 2 a 4 semanas)
  • Generó unos 5,000 commits
  • La velocidad de ejecución mejoró 3.5 veces
  • La prueba diferencial mostró una tasa de coincidencia de 99.96% (sobre 2 millones de batallas aleatorias)
    • Se estima que el 0.04% restante proviene de errores en el código original en TS

Estrategias clave del éxito

  • Introducción de pruebas diferenciales (differential testing)
    • Ejecutar en paralelo el original en TS y la versión en Rust → comparar resultados
    • En los casos de discrepancia → mostrarle los logs a Claude y pedirle correcciones
  • Posibilidad de validar incluso sin conocer casi nada de la sintaxis de Rust

Principales dificultades que enfrentó Claude

  • Portar archivos individuales lo hacía bien ↔ aparecían problemas frecuentes en la integración entre archivos
    • Ejemplo: definir el mismo concepto (move) con structs distintos
  • Limitaciones de la ventana de contexto → pérdida de información importante durante los resúmenes intermedios
  • Tendencia a intentar “mejorar” las cosas → ignoraba la instrucción explícita de hacer una “portabilidad línea por línea” e intentaba refactorizar → produciendo muchos bugs
  • Solicitudes de optimización → los planes parecían muy buenos, pero en la práctica casi no mejoraban el rendimiento (y algunos incluso lo empeoraban)

Hack peculiar del flujo de trabajo

  • Automatización de las solicitudes de aprobación del usuario de Claude
    • Con AppleScript, se presionaba Enter automáticamente cada pocos segundos → ejecución desatendida 24 horas al día
    • (Había riesgos de seguridad, pero los aceptó por tratarse de un oráculo de un solo uso)

Estado actual de las herramientas de programación con IA (evaluación)

  • Tareas de conversión mecánica y portabilidad masiva → muy potentes
  • Tareas de mayor nivel como optimización de rendimiento o diseño de arquitectura → todavía insuficientes
  • Debate en Hacker News
    • Escépticos: imposible de mantener, código que “solo compila”
    • Defensores: con pruebas diferenciales se puede confiar suficientemente + reduce al máximo el tiempo frente a hacerlo solo con humanos

3 lecciones para aplicar en el trabajo real

  • Es indispensable un sistema de pruebas automatizadas muy riguroso (sin pruebas diferenciales, la probabilidad de fracasar es muy alta)
  • Funcionan mejor las instrucciones claras y de alcance limitado (“portabilidad línea por línea” O vs “mejóralo” X)
  • La IA es solo una herramienta → el desarrollador sigue siendo responsable de diagnosticar problemas, diseñar las preguntas y mantener la dirección del trabajo

→ Un caso donde alguien que no sabía nada de Rust trasladó en un mes un código de 100 mil líneas a un nivel utilizable en la práctica → un experimento representativo que demuestra la utilidad práctica de la programación con IA y al mismo tiempo deja claras sus limitaciones

https://aisparkup.com/posts/8701

1 comentarios

 
ahwjdekf 2026-02-03

Esto pasa por alto que escribir casos de prueba no es una solución universal. No todo se reduce a que la entrada y la salida funcionen bien. Al final, habrá que volver a revisar las 100 mil líneas.