Claude no es un compilador: el LLM toma decisiones, no traduce
Josh Bleecher Snyder publica un post con un título explícito: “Claude no es un compilador”. El argumento es que Claude pertenece a una categoría diferente, superior en algunos aspectos. Un compilador toma código fuente y produce binarios de forma determinística: misma entrada, misma salida. Un LLM toma una descripción en lenguaje natural y toma decisiones en cada nivel del stack, desde la estrategia hasta la implementación. Tratarlo como un compilador significa esperar una reproducibilidad que la naturaleza de la herramienta no garantiza.
Para quien usa agentes en producción, el punto es práctico. Si delegas a un agente una tarea compleja y esperas que la repita idéntica la próxima vez, te llevarás una decepción. El LLM toma decisiones sub-especificadas, como un arquitecto o un PM, y el valor está en el número y la calidad de esas decisiones, no en su previsibilidad. Como contábamos el 20 de julio cuando tres papers convergían en el mismo punto, la arquitectura con la que circuitas y verificas un agente importa más que la potencia del modelo.
Snyder lo muestra con un caso real: su equipo construyó un servidor DNS distribuido usando Claude para investigación, diseño e implementación. El modelo trabajó verticalmente a través del stack, algo que un compilador no hace. El precio es aceptar que el mismo prompt siempre dará un resultado ligeramente diferente.
En detalle
El error de categoría.
Snyder ya había planteado la pregunta en 2025: “¿Claude es un compilador?” Su respuesta de entonces era “no lo sé”. Ahora está seguro: pertenece a una categoría diferente. Un compilador opera en un solo nivel, el de traducción de fuente a binario, y lo hace con precisión determinística. Las decisiones que toma (inline, asignación de registros, avisos) son internas a ese nivel y confiables por construcción. El ingeniero no tiene que pensarlo.
Un LLM opera en todos los niveles simultáneamente. Puede hablar de estrategia de producto, de arquitectura de sistema, de detalles de implementación, de código máquina. Esta es la ventaja: como recuerda Snyder citando la construcción del Empire State Building, los mejores proyectos son aquellos en los que quien trabaja en diferentes niveles se comunica. El LLM lo hace solo, sin necesidad de programar reuniones.
El precio de la verticalidad.
La verticalidad cuesta reproducibilidad. Un compilador da la misma salida para la misma entrada, siempre. Un LLM no, y jugar con temperatura cero o seeds fijos no cambia la naturaleza de algo que toma decisiones sub-especificadas. Cuando pides “escríbeme un servidor DNS distribuido”, hay mil decisiones implícitas que el modelo debe tomar, y las tomará de forma ligeramente diferente cada vez.
Snyder lo muestra con un caso real. Su equipo (exe.dev) tenía un problema de latencia DNS: los servidores se iniciaban tan rápido que la propagación DNS se convertía en el cuello de botella. Escribieron un servidor DNS personalizado, luego agregaron regiones, y el DNS volvió a ser el problema. La solución era un servidor DNS geográficamente distribuido y consistente. En lugar de construirlo manualmente nivel por nivel, usaron Claude para investigación sobre diseños distribuidos, peculiaridades del protocolo DNS, alternativas de implementación, hasta el código. El modelo trabajó a través de todo el stack en una única sesión.
Qué significa para quien construye.
Si estás poniendo agentes en producción, la implicación es doble. Primero: deja de esperar que el mismo prompt produzca la misma salida. Es la naturaleza de la herramienta. Segundo: diseña la verificación, no la reproducibilidad. Como tres papers convergentes mostraban el 20 de julio, la calidad de un sistema agentico depende de cómo circuitas los controles, no de lo predecible que sea el modelo.
Snyder no presenta un paper con datos, sino una experiencia. El límite es este: es una persona que cuenta su práctica, con una muestra de uno. El punto conceptual sin embargo es sólido y converge con lo que el campo está aprendiendo sobre sus propios errores: tratar los LLM como compiladores lleva a frustración, tratarlos como decisores cross-layer lleva a resultados que un compilador no podría producir.