Articulo de referencia

Programación automática

En ciencias de la computación , la programación automática [ 1 ] es un tipo de programación de computadoras en la que algún mecanismo genera un programa de computadora , para pe...

En ciencias de la computación , la programación automática [ 1 ] es un tipo de programación de computadoras en la que algún mecanismo genera un programa de computadora , para permitir que los programadores humanos escriban el código en un nivel de abstracción más alto.

Ha habido poco consenso sobre la definición precisa de programación automática, principalmente porque su significado ha cambiado con el tiempo. David Parnas , al rastrear la historia de la "programación automática" en investigaciones publicadas, señaló que en la década de 1940 describía la automatización del proceso manual de perforar cintas de papel . Posteriormente, se refería a la traducción de lenguajes de programación de alto nivel como Fortran y ALGOL . Uno de los primeros programas identificables como compilador se llama Autocode . Parnas concluyó que "la programación automática siempre ha sido un eufemismo para la programación en un lenguaje de nivel superior al que estaba entonces disponible para el programador". [ 2 ]

La síntesis de programas es un tipo de programación automática en la que se crea un procedimiento desde cero, basándose en requisitos matemáticos.

Origen

Mildred Koss , una de las primeras programadoras de UNIVAC , explica: «Escribir código máquina implicaba varios pasos tediosos: descomponer un proceso en instrucciones discretas, asignar ubicaciones de memoria específicas a todos los comandos y gestionar los búferes de E/S. Tras seguir estos pasos para implementar rutinas matemáticas, una biblioteca de subrutinas y programas de ordenación, nuestra tarea consistía en analizar el proceso de programación en su conjunto. Necesitábamos comprender cómo podíamos reutilizar código probado y cómo la máquina podía ayudarnos en la programación. A medida que programábamos, examinábamos el proceso e intentábamos encontrar maneras de abstraer estos pasos para incorporarlos a un lenguaje de nivel superior. Esto condujo al desarrollo de intérpretes, ensambladores, compiladores y generadores: programas diseñados para operar sobre otros programas o producirlos, es decir, programación automática ». [ 3 ]

Programación generativa

La programación generativa y el término relacionado metaprogramación [ 4 ] son ​​conceptos mediante los cuales se pueden escribir programas "para fabricar componentes de software de forma automatizada" [ 5 ], del mismo modo que la automatización ha mejorado "la producción de productos básicos tradicionales como prendas de vestir, automóviles, productos químicos y electrónicos". [ 6 ] [ 7 ]

El objetivo es mejorar la productividad del programador . [ 8 ] A menudo está relacionado con temas de reutilización de código, como la ingeniería de software basada en componentes .

Generación de código fuente

La generación de código fuente es el proceso de generar código fuente a partir de una descripción del problema [ 9 ] o un modelo ontológico como una plantilla, y se realiza con una herramienta de programación como un procesador de plantillas o un entorno de desarrollo integrado (IDE). Estas herramientas permiten generar código fuente mediante diversos métodos.

Los lenguajes de programación modernos cuentan con un buen soporte de herramientas como Json4Swift [ 10 ] ( Swift ) y Json2Kotlin [ 11 ] ( Kotlin ).

Entre los programas que podrían generar código COBOL se incluyen:

Estos generadores de aplicaciones admitían inserciones y anulaciones de COBOL.

Un macroprocesador , como el preprocesador de C , que reemplaza patrones en el código fuente según reglas relativamente simples, es una forma simple de generador de código fuente. También existen herramientas de generación de código fuente a fuente . [ 13 ] [ 14 ]

Los modelos de lenguaje grandes como ChatGPT son capaces de generar el código fuente de un programa a partir de una descripción del programa dada en lenguaje natural. [ 15 ]

Muchos sistemas de gestión de bases de datos relacionales ( RDBMS ) proporcionan una función que exporta el contenido de la base de datos como consultas de definición de datos SQL , que luego se pueden ejecutar para reimportar las tablas y sus datos, o migrarlos a otro RDBMS.

Algunos lenguajes utilizan anotaciones para generar código fuente e inyectarlo. Por ejemplo, esto se hace en Java y Kotlin mediante anotaciones , como en la biblioteca Project Lombok, que se ejecuta en tiempo de compilación con un procesador de anotaciones . Existe una propuesta en C++ para añadir la inyección de secuencias de tokens mediante programación reflexiva en tiempo de compilación (reflexión). [ 16 ]

Aplicaciones de bajo código

Una plataforma de desarrollo de bajo código (LCDP, por sus siglas en inglés) es un software que proporciona un entorno que los programadores utilizan para crear software de aplicación a través de interfaces gráficas de usuario y configuración, en lugar de la programación informática tradicional .

Codificación de vibraciones

La codificación Vibe es una práctica de desarrollo de software asistida por inteligencia artificial (IA) en la que el desarrollador describe un proyecto o tarea mediante una instrucción a un modelo de lenguaje grande (LLM), que genera código fuente automáticamente. La codificación Vibe puede implicar aceptar el código generado por la IA sin una revisión exhaustiva del resultado, sino que se basa en los resultados y las instrucciones posteriores para guiar los cambios. [ 17 ] [ 18 ]

El término fue acuñado en febrero de 2025 por el científico informático Andrej Karpathy , cofundador de OpenAI y antiguo líder de IA en Tesla . Merriam-Webster lo incluyó en marzo de 2025 como una expresión de "jerga y tendencia". [ 19 ] Fue nombrada Palabra del Año 2025 por el Diccionario Collins de Inglés. [ 20 ] [ 21 ]

Los defensores de la programación basada en vibraciones afirman que permite incluso a programadores aficionados producir software sin la amplia formación y las habilidades requeridas para la ingeniería de software . [ 22 ] [ 23 ] Los críticos señalan una falta de responsabilidad, mantenibilidad y un mayor riesgo de introducir vulnerabilidades de seguridad en el software resultante. [ 17 ] [ 23 ]

Véase también

Notas

  1. Ricardo Aler Mur, " Programación inductiva automática archivada el 4 de marzo de 2016 en Wayback Machine ", Tutorial ICML 2006. Junio ​​de 2006.
  2. DL Parnas. " Aspectos de software de los sistemas de defensa estratégica ". American Scientist . Noviembre de 1985.
  3. Chun, Wendy. "Sobre el software o la persistencia del conocimiento visual". Grey Room 18. Boston: 2004, pág. 30.
  4. "Acerca de la programación generativa" . La programación generativa, como subdominio de la metaprogramación, describe la práctica de escribir programas que generan otros programas como parte de su ejecución.
  5. P. Cointe (2005). "Hacia la programación generativa". Paradigmas de programación no convencionales . Lecture Notes in Computer Science. Vol. 3566. pp. 315–325 . doi : 10.1007/11527800_24 . ISBN   978-3-540-27884-9La programación generativa (GP) es un intento de fabricar componentes de software de forma automatizada mediante el desarrollo de programas que sintetizan otros programas.
  6. "Programación Generativa: Conceptos y Experiencias (GPCE)" .
  7. Se ha programado una conferencia de SIGPLAN sobre este tema para noviembre de 2018. Entre los intentos anteriores, de la década de 1970, en este ámbito se incluyen Yacc y los programas Lex relacionados.
  8. James Wilcox, " Pagar demasiado por el desarrollo de aplicaciones personalizadas ", marzo de 2011.
  9. "Generador de aplicaciones" . PCMag.com . Software que genera programas de aplicación a partir de descripciones del problema, en lugar de mediante programación tradicional. Se sitúa en un nivel superior y es más fácil de usar que un lenguaje de programación de alto nivel como...
  10. Personal. "Generador en línea de JSON a modelos Swift" . Json4Swift.com . Consultado el 19 de abril de 2026 .
  11. Personal. "Generador en línea de clases de datos JSON a Kotlin" . Json2Kotlin.com . Consultado el 19 de abril de 2026 .
  12. "Sintaxis del comando DYL-280" (PDF) . Archivado del original (PDF) el 30/07/2018 . Consultado el 03/09/2018 .
  13. Noaje, Gabriel, Christophe Jaillet y Michaël Krajecki. " Traductor de código fuente a fuente: OpenMP C a CUDA ". Conferencia Internacional IEEE de Computación y Comunicaciones de Alto Rendimiento (HPCC), 2011. IEEE, 2011.
  14. Quinlan, Dan y Chunhua Liao. " La infraestructura de compilación de código fuente a código fuente de ROSE ". Taller de usuarios de Cetus e infraestructura de compilación, en conjunto con PACT. Vol. 2011. 2011.
  15. Tung, Liam (26 de enero de 2023). "ChatGPT puede escribir código. Ahora los investigadores dicen que también es bueno corrigiendo errores" . ZDNET . Archivado del original el 3 de febrero de 2023. Consultado el 22 de junio de 2023 .
  16. Andrei Alexandrescu, Barry Rezvin, Daveed Vandevoorde (16 de julio de 2024). "Inyección de código con secuencias de tokens" . open-std.org . WG21.{{cite web}}: CS1 maint: varios nombres: lista de autores ( enlace )
  17. 1 2 Edwards, Benj (5 de marzo de 2025). "¿El futuro del desarrollo de software se basará en vibraciones?" . Ars Technica . Archivado del original el 6 de marzo de 2025 . Recuperado el 3 de junio de 2025 . La técnica, posibilitada por grandes modelos de lenguaje (LLM) de empresas como OpenAI y Anthropic, ha atraído la atención por su potencial para reducir la barrera de entrada a la creación de software. Pero persisten las dudas sobre si el enfoque puede producir de manera confiable código adecuado para aplicaciones del mundo real, incluso a medida que herramientas como Cursor Composer, GitHub Copilot y Replit Agent hacen que el proceso sea cada vez más accesible para personas sin conocimientos de programación.
  18. "¿Qué es el 'código vibe'? El exdirector de IA de Tesla, Andrej Karpathy, define una nueva era en el desarrollo impulsado por IA" . The Times of India . 2 de marzo de 2025. Archivado del original el 4 de marzo de 2025. Recuperado el 3 de junio de 2025. El "código vibe" de Karpathy es un reconocimiento de la sofisticación de los sistemas de IA. En una publicación en X (antes Twitter), añadió que los LLM, como Cursor Composer con Sonnet, están avanzando hasta un punto que prácticamente elimina el uso de mecanismos de codificación tradicionales. Al describir su propia experiencia, Karpathy explicó cómo interactúa con las herramientas de IA de forma casi pasiva: simplemente les habla y deja que la IA se encargue del resto. Este método elimina la necesidad de escribir código manualmente, así como de llevar un registro de toda la información minuciosa del programa.
  19. "vibe coding" . Jerga y tendencias . Merriam-Webster. 8 de marzo de 2025. Recuperado el 2 de junio de 2025. Vibe coding (también escrito como vibecoding) (Vibecode/Vibecoder) es un término acuñado recientemente para la práctica de escribir código, crear páginas web o aplicaciones, simplemente diciéndole a un programa de IA lo que se quiere y dejando que cree el producto por uno. En vibe coding, el programador no necesita entender cómo o por qué funciona el código, y a menudo tendrá que aceptar que habrá una cierta cantidad de errores y fallos. La forma verbal de la palabra es vibe code.
  20. Garnsworthy, Jenny (6 de noviembre de 2025). "El diccionario Collins corona al término de moda de la IA como la Palabra del Año" . The Independent . Consultado el 6 de noviembre de 2025 .
  21. "«Codificación de vibraciones» nombrada palabra del año por el diccionario Collins . BBC News . 6 de noviembre de 2025. Consultado el 6 de noviembre de 2025 .
  22. Lanz, Jose Antonio (23 de marzo de 2025). "Vibe Coding: Cómo desarrolladores y personas sin conocimientos técnicos utilizan la IA para crear aplicaciones y juegos" . Decrypt.co .
  23. 1 2 Chowdhury, Hasan; Mann, Jyoti (13 de febrero de 2025). "El próximo acto de Silicon Valley: llevar la 'codificación de vibraciones' al mundo" . Business Insider . Archivado del original el 26 de febrero de 2025. Recuperado el 3 de marzo de 2025 .

Referencias

  • Czarnecki, Krzysztof; Eisenecker, Ulrich W. (1 de mayo de 2000). Programación generativa: métodos, herramientas y aplicaciones . Association for Computing Machinery (ACM Press), Addison Wesley . ISBN 978-0-201-30977-5. Consultado el 19 de abril de 2026 .
  • Fowler, Matthew (Primavera de 2009). "Generación de código para principiantes" . Software Development Magazine . Métodos y herramientas . Recuperado el 19 de abril de 2026 vía Martinig & Associates.