14 puntos por GN⁺ 2025-12-10 | 4 comentarios | Compartir por WhatsApp
  • El vibe coding realmente funciona bien, pero al producir código que el propio autor no entiende por completo, reduce el placer esencial de programar
  • Todos los lenguajes de programación son herramientas diseñadas no para la máquina, sino para la conveniencia humana, y ventajas como seguridad, abstracción y legibilidad son al final estructuras para ayudar a pensar a las personas
  • Entonces, ¿de verdad hace falta un lenguaje amigable para humanos para el código que escribe la IA? Se propone VOPL (Vibe-Oriented Programming Language), un nuevo lenguaje amigable para la máquina y centrado en la IA
  • Este lenguaje podría abarcar varias posibilidades: pseudocódigo ejecutable, una extensión de la programación literaria, o una forma basada en lenguaje natural con una gramática específica
  • Como en los inicios de las computadoras de programa almacenado, la resistencia a nuevos paradigmas de cómputo es una historia que se repite, y el vibe coding podría ser la siguiente etapa de esa misma corriente

La tensión entre programar y el vibe coding

  • Para mí, programar es un placer, no un trabajo, una pasión que se mantiene desde finales de los años 90
    • Llevo 25 años enseñando programación y lo que más orgullo me da es convertir en programadores a personas que no venían de esta disciplina
  • Cuando programo, valoro mucho el placer de entender por mí mismo el proceso de resolver problemas
  • En cambio, el vibe coding es un proceso en el que la IA escribe el código en tu lugar, y eso lleva a un estado en el que quien lo creó no entiende del todo el resultado
    • A veces se siente como si uno estuviera “haciendo trampa” (aunque no sea exactamente eso), pero cuesta describir con precisión por qué deja una sensación incómoda
    • Parece quitarle gran parte de la diversión al acto mismo de programar
  • Aun así, el vibe coding funciona lo suficientemente bien como para producir sistemas reales de alta calidad
    • Va más allá de reemplazar búsquedas: también resuelve con precisión problemas que a uno le daría flojera resolver por su cuenta
    • La IA es más hábil que los humanos para rastrear errores y gestionar memoria, y una y otra vez sorprende el resultado que produce cuando se le lanza una idea de programa

El lenguaje siempre fue una herramienta para humanos

  • Como en Structure and Interpretation of Computer Programs de Abelson & Sussman, los lenguajes de programación son medios de expresión para los seres humanos
    • El código es “para que lo lean las personas”, y las máquinas no necesitan legibilidad
  • Todos los lenguajes de programación se diseñan como medios para ayudar al pensamiento y la expresión humanos
    • La seguridad de Rust, la abstracción de C++ y la concurrencia de Go son funciones pensadas para la conveniencia humana, no para la máquina
    • La gestión de memoria, la concurrencia y la seguridad de tipos no son más que abstracciones para apoyar la estructura del pensamiento humano
  • Por eso, en una era en la que la IA escribe código, el diseño de lenguajes centrado en humanos podría dejar de ser necesario

Entonces, ¿la IA necesita este tipo de lenguaje? : el sentido de proponer “haz vibe coding en C”

  • En el vibe coding, el humano ya desarrolla programas en un estado en el que no entiende completamente todo el código
    • En esa situación, se debilita la razón para mantener una sintaxis amigable para personas
    • En lugar de un lenguaje orientado a humanos, podría ser más racional escribir directamente en un lenguaje orientado a la máquina (C o ensamblador)
  • La IA puede manejar con más precisión que los humanos cosas como el undefined behavior de C, la liberación de memoria y los errores off-by-one
    • Así como un compilador optimiza mejor, también muestra una capacidad más precisa de administrar la ejecución del código que un humano
  • Entonces surge la pregunta: ¿no haría falta un lenguaje más adecuado para que lo use la IA?
    • ¿Por qué hacer vibe coding precisamente en lenguajes “centrados en humanos” como Python, Rust o C++?

Propuesta de VOPL (Vibe-Oriented Programming Language)

  • Si existiera un lenguaje pensado desde el inicio para el vibe coding, se podrían imaginar posibilidades como estas
    • Un lenguaje de muy alto nivel cercano al pseudocódigo ejecutable
    • Como una versión completa de la programación literaria, donde el humano solo describe y la IA genera el código máquina
    • Una estructura que parece lenguaje natural, pero con ciertos “modismos” específicos
    • Conceptos como una expresión de concurrencia basada en términos cotidianos (slang), en lugar de algo como “goroutine”
  • La idea sería diseñar un sistema de expresión centrado en la máquina que permita a la IA entender con precisión los problemas y generar rápidamente código ejecutable
  • Existe el problema de cómo entrenar a la IA en un lenguaje nuevo, pero ya hoy muchos desarrolladores le lanzan pseudocódigo y conversan con la IA para producir código, así que
    es posible que alguna forma de VOPL ya se esté aprendiendo

El cambio en el acto de programar

  • Es posible que “codificar a mano” en la educación de futuros vibe coders llegue a tratarse como una formación básica al estilo Montessori
    • Igual que el entrenamiento de dibujo a mano antes de Photoshop, o practicar ecuaciones en papel incluso en la era de las calculadoras electrónicas, podría seguir existiendo como parte del proceso educativo
  • La resistencia ante la llegada de nuevos paradigmas se ha repetido históricamente
    • El rechazo inicial a la introducción de las computadoras de programa almacenado (ENIAC → EDVAC)
    • También existe la historia de Grace Hopper enfrentando críticas que sostenían que “una máquina no puede escribir las instrucciones de otra máquina”

Mensaje final

  • El vibe coding ya es una realidad, y el desarrollo del futuro podría exigir rediseñar el lenguaje mismo
  • Es momento de discutir seriamente la posibilidad de pasar de lenguajes centrados en humanos a lenguajes centrados en la IA

“Same vibe, as the kids say.” — Como dirían los jóvenes: la misma vibra

4 comentarios

 
youknowone 2025-12-12

Creer que al programar con un modelo de lenguaje va a inventar por arte de magia expresiones cercanas a la máquina es tener mentalidad de abusivo.
Cuantas más restricciones haya, mejor trabaja dentro de esas restricciones.

 
aer0700 2025-12-12

Aunque la IA escriba el código, la responsabilidad por el servicio igual debería recaer en el desarrollador. No sé si uno realmente pueda hacerse responsable de un código que ni siquiera entiende.

 
dooboo 2025-12-11

"Incluso si haces vibe coding, deberías hacerlo en un lenguaje que conozcas bien para poder revisar el resultado"

Hay una frase muy importante en los comentarios.

 
GN⁺ 2025-12-10
Opiniones de Hacker News
  • Me hizo sentir de nuevo lo diverso que es el campo del desarrollo de software
    Yo hago backend, sobre todo desarrollo de APIs, y el mayor cuello de botella de la productividad es que la mayoría de la gente no sabe definir bien los requisitos
    Si le preguntas al PM, evade la respuesta, y el desarrollador frontend se queda esperando a que backend entregue la API
    Al final, lo más difícil no es programar, sino el proceso mental de descubrir e interpretar los requisitos

    • La dificultad que estás viviendo no es un problema de la programación en sí, sino de una estructura organizacional ineficiente
      La programación de verdad es el acto de implementar un sistema que uno mismo diseñó y darle vida
      Si confundes eso con simplemente escribir código en una empresa y llamarlo ‘Programming’, se generan malentendidos
    • Soy un profesor de literatura inglesa que enseña programación a estudiantes de humanidades, y la trayectoria del autor me parece muy interesante
      Aun así, da la impresión de que no tiene mucha experiencia en desarrollo de software comercial a gran escala
      Su predicción sobre “el futuro de la programación” suena bien, pero en un contexto industrial puede tener ciertas limitaciones
      (Referencia: Presentación de Stephen Ramsay)
    • He hecho backend, frontend, full stack, automatización QA y hasta DevOps
      Al final, lo importante es el mindset y cuánto estás expuesto a la tecnología
      Los LLM han aumentado muchísimo mi productividad, especialmente porque tengo una forma de pensar arquitectónica
      Ahora hago en unas horas lo que antes me tomaba meses
      Últimamente estoy usando LLM para traducir viejo código de Shockwave Lingo a lenguajes modernos y restaurar juegos legacy
    • Si la IA fuera lo bastante inteligente como para definir requisitos por sí sola, entonces en ese punto el vibe coding dejaría de ser necesario
      Al final, si el vibe coding es el futuro, eso implica asumir que la IA no es perfecta
      En el momento en que uno fija arbitrariamente las capacidades y límites de una IA imaginaria, toda la discusión se vuelve ambigua
    • Los requisitos son tan ambiguos que ni siquiera puedes pasarle el ticket de Jira a un LLM
      Hay que tener cuatro o cinco reuniones con los stakeholders para que quede claro
  • Probé hacer vibe coding en C, y aun así sigo odiando C
    La IA, igual que una persona, se olvida de liberar memoria y luego lo corrige después
    Cuando lo hice con Rust fue mucho más agradable, y entender el ecosistema de dependencias del lenguaje sí es una habilidad real
    La IA ayuda a explorar rápido ese tipo de “conocimiento de libro”

    • Las revisiones de código en Rust son mucho más claras
      En C había que revisar una por una si las liberaciones de memoria estaban bien, pero en Rust casi no tienes esa preocupación
      Incluso para vibe coding, creo que Rust es mucho mejor por las barandillas de seguridad que trae el lenguaje
    • La IA escribe bien Python y JavaScript, pero en C/C++ todavía se equivoca como un humano
      Las funciones amigables para humanos que tiene Python también ayudan a la IA
      Ahora, gracias a la IA, es mucho más fácil crear directamente una UI o utilidades nuevas,
      y también resulta simple implementar solo la parte crítica de rendimiento en C++
    • Yo también probé vibe coding en C, y la IA maneja bastante bien la gestión de memoria
      Si hubiera tenido que depurarlo yo mismo con GDB, me habría tomado mucho más tiempo
      Me gusta que se encargue de las partes desagradables, como el manejo de cadenas o punteros
    • Últimamente estoy estudiando ensamblador y le pongo a la IA el mismo problema para comparar
      El código que genera el compilador siempre es más eficiente, pero estoy usando los errores de la IA como oportunidades de aprendizaje
    • Recomiendo aprender a crear agentes tú mismo
      Incluso con un LLM local puedes automatizar verificaciones como la liberación de memoria
  • Hace poco hubo una discusión titulada “Why AI Needs Hard Rules, Not Vibe Checks”
    (enlace)
    La razón por la que Rust encaja bien con el vibe coding es por sus validaciones gratuitas, como las garantías de tipos y lifetimes
    Sin ese tipo de verificación, un LLM puede producir fácilmente código inseguro
    La abstracción no solo la necesitan los humanos, también los LLM

    • Me imagino un lenguaje diseñado para LLM
      Un lenguaje en el que haya que especificar estrictamente cada función, variable, tipo y excepción
      Sería incómodo de escribir, pero fácil de leer y verificar
    • También es interesante el artículo de ACM Automatically Translating C to Rust
      Trata la dificultad de traducir preservando la intención y no solo la ruta de ejecución del código
    • Si se necesitan tantas reglas, ¿de verdad hay motivo para usar IA?
      Herramientas como Shellcheck también convierten a un principiante en experto
    • Para los LLM es más importante un lenguaje fácil de analizar estáticamente
      Si quieres mejorarlo con RL, debes poder juzgar automáticamente la consistencia del código
      Hace falta revalorar lenguajes basados en lógica como Prolog
    • Rust tampoco evita los errores lógicos
      Si un LLM produce código lleno de bugs, cambiar de lenguaje no necesariamente cambia mucho el resultado
  • Al principio el vibe coding me sorprendió, pero pronto ese bucle constante de correcciones me derritió la cabeza
    Te roba la concentración como hacer scroll en un feed algorítmico
    Ahora programo yo mismo y solo le dejo a ChatGPT las partes aburridas

    • De verdad se siente como si te drenara el alma
      Y además no aprendes nada
    • He probado hacer que el LLM escriba primero una especificación (spec) y luego corregirla
      Así aclaras los requisitos y te resulta más fácil cambiar a otra IA después
    • Lo que mejor me funcionó fue dividir el problema en partes pequeñas y validarlas
  • Dudo que un LLM pueda generar código C sin fugas de memoria
    Es un área en la que incluso los desarrolladores humanos se equivocan, y un LLM con datos de entrenamiento de baja calidad es todavía más riesgoso
    Si haces vibe coding de un programa que termina con segfault, eso es solo una pérdida de tiempo

    • Llevo mucho tiempo usando Rust y LLM, y gracias a cargo check la calidad del código es muy alta
      Casi nunca se rompe y siempre compila
    • También puedes asignarle recursos al LLM para que detecte errores por sí mismo
      Los humanos se cansan; el LLM no
    • Los LLM cada vez se ajustan más con datos de alta calidad
      Si se reentrenan con buen código C, hay margen de mejora
  • ¿Que la IA evita el undefined behavior en C? Difícil de creer
    Si el modelo está entrenado para equivocarse como un humano, es muy probable que produzca los mismos bugs

    • Pero los modelos más recientes refuerzan el buen código con aprendizaje por refuerzo y datos sintéticos
      Como predicen los tokens más probables, cometen menos errores comunes
    • Sonnet en Copilot Chat me generó de una sola vez código C++ sin errores de memoria
      Y además detectó bien la causa del crash
    • No debería entrenarse para imitar humanos, sino para imitar compiladores
    • Por eso creo que Rust es más adecuado para generación de código con LLM
    • Si pruebas escribir código C con Claude, mientras más crece la escala más aparecen bugs de pthread o memoria
      Lenguajes modernos como Zig o Rust son muchísimo mejores
  • La razón por la que el vibe coding me incomoda no es simplemente que parezca “hacer trampa”
    Programar es un arte con alma
    Cada persona resuelve problemas de una manera distinta, y ahí está la creatividad
    El vibe coding se siente como si la máquina absorbiera esa creatividad
    Al final, la máquina piensa, decide y hasta se equivoca por ti

  • Hubo una propuesta de crear un “vibe-oriented programming language (VOP)”
    Pero si fuera un lenguaje para LLM, en realidad tendría que ser estricto y verboso
    No debería compilar a menos que se expliciten todas las condiciones y excepciones
    Para los humanos sería incómodo, pero para un LLM tendría la ventaja de reducir la confusión

    • En realidad, más importante que el lenguaje de salida es el lenguaje de entrada (prompt)
      Hace falta una estructura donde el humano explique el concepto y la IA lo convierta en código
    • Al escuchar esa descripción, me vino a la mente Ada
      Una vez que compilaba, casi siempre funcionaba bien
  • Incluso si haces vibe coding, deberías hacerlo en un lenguaje que conozcas bien para poder revisar el resultado
    Si no, quizá sea mejor experimentar directamente en brainfuck

  • A la pregunta de “¿entonces por qué no hacerlo en ensamblador x86?”,
    respondió que no, porque debe poder revisarlo y extenderlo él mismo
    El vibe coding puro es solo un experimento mental, no un objetivo realista
    Tal vez algún día la IA pueda encargarse también del QA, pero por ahora siguen siendo indispensables los lenguajes seguros y la validación humana

    • Me hizo reír el comentario de que “si lo amplías tú mismo, entonces ya no es vibe coding puro”
      Ya soy un desarrollador tan veterano que este tipo de discusiones ya hasta cansan