Vibe coding: lenguajes de programación para principiantes ========================================================= En el vibe coding, es más útil entender dónde se ejecuta el código y cómo se procesan los datos que conocer los nombres de los lenguajes. Se explican los fundamentos de programación, los criterios para elegir un lenguaje y qué se debe verificar en el código generado por IA. - El desarrollo web empieza por distinguir las funciones de HTML, CSS y JavaScript. - TypeScript comprueba los tipos antes de la ejecución, pero no valida automáticamente los datos de entrada externos. - El sistema de propiedad de Rust establece reglas para gestionar la memoria; no es un mecanismo que impida todos los fallos de seguridad. - Mojo es un lenguaje orientado al cálculo de alto rendimiento en CPU y GPU. - Hay que ejecutar y probar el código generado por IA para comprobar si cumple los requisitos. El vibe coding requiere una base para distinguir la función de cada lenguaje y dónde se ejecuta el código. En la web, JavaScript y TypeScript son el punto de partida. Para el procesamiento de datos, considera Python. Rust y Mojo se usan en el desarrollo de sistemas y en cálculos de alto rendimiento. Las cifras de rendimiento se basan en el anuncio de Microsoft del 11 de marzo de 2025. Por qué hacen falta conocimientos básicos de lenguajes en el vibe coding El vibe coding es una forma de desarrollo en la que se crea código con IA a partir de peticiones en lenguaje natural. Las peticiones se ajustan al observar los resultados de ejecutar el programa generado. Las peticiones en lenguaje natural también deben convertirse en código que se ejecute de verdad. Los conocimientos básicos de lenguajes sirven para describir con precisión la función que quieres. También ayudan a localizar dónde se ha producido un error. Al empezar, distingue primero las funciones de los lenguajes en lugar de memorizar la sintaxis de todos ellos. Lugar de ejecución: navegador, servidor, teléfono móvil, interior del sistema operativo Entrada: valores que introduce el usuario o datos recibidos del exterior Procesamiento: tareas que hará el programa, como calcular, buscar o clasificar Salida: visualización en pantalla, creación de archivos, almacenamiento de datos Condiciones de fallo: entrada vacía, formato incorrecto, pérdida de conexión Conceptos básicos que debes conocer, empezando por variables y tipos Las variables y los tipos son la base para describir qué datos maneja un programa. Los condicionales y los bucles determinan el orden del procesamiento. Las funciones agrupan tareas relacionadas para poder reutilizarlas. Concepto Definición sencilla Ejemplo al describir una función Variable Medio para dar un nombre a un valor y hacer referencia a él Nombre que almacena el término de búsqueda Tipo Reglas sobre la clase de valor y las operaciones permitidas La cantidad es un número y el título, una cadena Condicional Construcción que elige qué tarea ejecutar según una condición Rechazar el guardado si el título está vacío Bucle Construcción que aplica la misma tarea a varios elementos Mostrar en pantalla cada elemento de una lista Función Código agrupado para hacer una tarea concreta Función que comprueba la entrada Estructura de datos Forma de organizar los datos Lista ordenada, valor que se busca por su nombre Objeto Unidad que agrupa estados y comportamientos relacionados Título de una publicación y función para editarla Gestión de excepciones Forma de responder a errores que surgen durante la ejecución Aviso de error cuando no se puede leer un archivo API Acuerdo para intercambiar funciones o datos entre programas Solicitar resultados de búsqueda al servidor Dependencia Código o herramienta externa que utiliza un programa Biblioteca para manejar fechas La comprobación estática de tipos revisa el uso de los tipos antes de la ejecución. Los lenguajes de tipado dinámico también distinguen los tipos de los valores. Que el tipado sea dinámico no significa que no existan clases de datos. Por qué se pasó del lenguaje máquina a los lenguajes de alto nivel La evolución de los lenguajes ha ido reduciendo las tareas detalladas que las personas tienen que expresar. El lenguaje máquina representa las instrucciones que ejecuta el procesador. El lenguaje ensamblador asigna a esas instrucciones símbolos que las personas pueden leer. El ensamblador está estrechamente vinculado al conjunto de instrucciones del procesador. Cambiar un componente no significa tener que reescribir todo el código. El esfuerzo de modificación aumenta al pasar a un conjunto de instrucciones incompatible. Lenguaje o corriente Problema que buscaba resolver Concepto que conviene recordar Lenguaje máquina y ensamblador Indicar al hardware las tareas que debe hacer Vínculo directo con el conjunto de instrucciones Fortran Expresar cálculos científicos de forma cercana a las fórmulas Cálculo numérico y compiladores COBOL Procesar datos empresariales en un formato fácil de leer Expresión centrada en libros contables y transacciones Lisp Cálculo mediante símbolos y listas Primeras investigaciones en IA y expresión centrada en funciones C Escribir software de sistemas de forma eficiente Control de memoria y portabilidad SQL Procesar datos de bases de datos relacionales Consultas que declaran el resultado deseado C++ Estructurar programas grandes y gestionar recursos Clases y diversas formas de programación Java Portabilidad entre sistemas con distintos entornos de ejecución JVM y bytecode Fortran apareció en IBM en 1957. Lisp evolucionó junto con la investigación en IA a finales de la década de 1950. COBOL surgió de un trabajo de diseño conjunto iniciado en 1959. C es un lenguaje que evolucionó junto con el desarrollo de Unix. Contribuyó a trasladar software entre distintos tipos de máquinas. Sin embargo, el código que depende del sistema operativo y del hardware necesita modificaciones específicas. La orientación a objetos organiza los datos y comportamientos relacionados en objetos. C++ es un lenguaje que admite la orientación a objetos. C++ no creó el concepto de orientación a objetos. Diferencia entre compilador e intérprete Un compilador es un programa que transforma el código en otra representación. El resultado puede ser lenguaje máquina. También puede ser un formato intermedio de ejecución, como el bytecode. Un intérprete ejecuta el código o una representación intermedia mientras lo interpreta. Las implementaciones reales de los lenguajes también pueden combinar compilación e interpretación. Es inexacto dividir los lenguajes únicamente en compilados rápidos e interpretados lentos. Concepto relacionado con la ejecución Función Ejemplo representativo Compilación anticipada Generar el código de destino antes de la ejecución Generación habitual de archivos ejecutables en C y Rust Bytecode Formato de instrucciones intermedias que procesa el entorno de ejecución Bytecode de Java, bytecode de CPython Intérprete Ejecutar el código o las instrucciones intermedias mientras los interpreta Ejecución del bytecode en CPython Compilación JIT Convertir el código necesario a lenguaje máquina durante la ejecución Diversas JVM y motores de JavaScript Entorno de ejecución Proporcionar las funciones necesarias para ejecutar el programa JVM, Node.js CPython es una implementación de Python de uso extendido. Compila el código fuente a bytecode y lo ejecuta. Es incorrecto describir Python solo como un lenguaje que traduce el código fuente línea por línea en cada ejecución. La JVM de Java es un entorno que ejecuta bytecode. Esta estructura ayuda a ejecutar el código en distintos sistemas operativos. La compatibilidad real también depende de la versión de la JVM y de las bibliotecas externas. ¿En qué se diferencian la interfaz web y el servidor? El frontend se encarga de la interfaz y las interacciones que encuentra el usuario. El backend procesa las peticiones en el servidor. La base de datos almacena y consulta los datos necesarios. HTML es un lenguaje de marcado que expresa la estructura de los documentos. CSS define el estilo y la distribución visual. JavaScript implementa la evaluación de condiciones y la gestión de las acciones del usuario. Nombre Clasificación Función principal HTML Lenguaje de marcado Estructura del documento, como títulos, párrafos y campos de entrada CSS Lenguaje de hojas de estilo Colores, espaciado y distribución visual JavaScript Lenguaje de programación Interacciones en el navegador y procesamiento en el servidor TypeScript Lenguaje que añade un sistema de tipos a JavaScript Detección de errores antes de la ejecución y gestión del código React Biblioteca de interfaces de usuario Crear interfaces con componentes reutilizables Node.js Entorno de ejecución de JavaScript Ejecutar JavaScript fuera del navegador Next.js Framework basado en React Organización de páginas y funciones de servidor para aplicaciones web PHP Lenguaje de programación Generar respuestas web dinámicas en el servidor SQL Lenguaje de bases de datos Consultar, añadir, modificar y eliminar datos React, Node.js y Next.js no son herramientas del mismo tipo. Una biblioteca es un conjunto de código del que se toman las funciones necesarias. Un framework también ofrece una forma de organizar la aplicación. Un entorno de ejecución es el entorno en el que se ejecuta el código. Comparación de lenguajes según el objetivo Elige el lenguaje según lo que quieras crear y el entorno de ejecución existente. La siguiente tabla ofrece un punto de partida habitual para considerar cada lenguaje. Un lenguaje no se limita a las tareas que figuran en la tabla. Qué quieres crear Lenguajes que considerar primero Qué comprobar antes de elegir Aplicación web que se usa en el navegador JavaScript, TypeScript Fundamentos de HTML y CSS y herramientas para crear interfaces Organización de archivos y automatización de tareas Python Formato de los archivos de entrada y entorno de despliegue Análisis de datos y uso de modelos de IA Python Bibliotecas de análisis y modelos necesarias Servidores de red y herramientas de operación Go Estructura de procesamiento concurrente e integración con sistemas existentes Sistemas empresariales basados en JVM Java, Kotlin Compatibilidad con el código y las bibliotecas existentes Aplicaciones centradas en iOS Swift Herramientas de desarrollo de Apple y funciones de la plataforma Aplicaciones centradas en Android Kotlin Herramientas de desarrollo de Android y estructura de la aplicación existente Sistemas que necesitan control de memoria C, C++, Rust Requisitos de rendimiento y capacidad para verificar la seguridad Optimización de cálculos en CPU y GPU Mojo Hardware compatible y funciones de cálculo necesarias Procesamiento de datos relacionales SQL Diferencias de sintaxis entre productos de bases de datos La utilidad de Python también está relacionada con su ecosistema de bibliotecas. NumPy usa código compilado para ganar velocidad. No todos los cálculos escritos en Python se ejecutan solo con código Python. Go incluye soporte para la concurrencia en el diseño del lenguaje. La concurrencia consiste en organizar varias tareas para que avancen de forma conjunta. El paralelismo es el estado en el que varias tareas se ejecutan realmente al mismo tiempo. Escribir código concurrente no acelera automáticamente los cálculos. Diferencias entre TypeScript, Rust y Mojo TypeScript, Rust y Mojo buscan resolver problemas distintos. TypeScript ayuda a comprobar los tipos en el código JavaScript. Rust impone reglas estrictas para la gestión de memoria. Mojo se orienta a los cálculos de alto rendimiento y al aprovechamiento del hardware. Criterio de comparación TypeScript Rust Mojo Enfoque principal Comprobación de tipos y gestión del código Seguridad de memoria y control del sistema Cálculos de alto rendimiento en CPU y GPU Usos representativos Aplicaciones web y de servidor Herramientas de sistemas y componentes centrados en el rendimiento Infraestructura de IA y núcleos de cálculo Conceptos que conviene entender primero JavaScript y tipos de datos Propiedad, préstamos y tiempos de vida Tipos, memoria y cálculo paralelo Aspectos que deben comprobarse aparte Entradas externas y reglas de negocio Código unsafe y errores lógicos Integración con Python y compatibilidad con el hardware Comprobación de tipos en TypeScript TypeScript añade comprobación estática de tipos a JavaScript. Ayuda a encontrar código que usa mal los tipos antes de ejecutarlo. La inferencia de tipos permite deducir automáticamente algunas declaraciones. No hace falta escribir el tipo de cada variable. Las anotaciones de tipo se eliminan durante la conversión habitual a JavaScript. Las declaraciones de tipos por sí solas no generan comprobaciones de entrada durante la ejecución. Propiedad y seguridad de memoria en Rust La propiedad es el conjunto de reglas que determina quién gestiona la memoria de un valor. El préstamo permite hacer referencia a un valor sin transferir su propiedad. El compilador comprueba las reglas correspondientes para prevenir errores de memoria. Las garantías de seguridad de Rust parten de una implementación correcta. En el código unsafe, quien lo escribe se responsabiliza de algunas condiciones de seguridad. El lenguaje no impide automáticamente los errores en fórmulas de cálculo o permisos de acceso. Relación entre Mojo y Python Mojo es un lenguaje independiente que usa una sintaxis parecida a la de Python. Permite escribir código de alto rendimiento para CPU y GPU. También ofrece funciones de interoperabilidad para conectarse con código Python. No debes suponer que puedes trasladar el código Python existente sin cambios. Comprueba las funciones que necesitas en la documentación de la versión de Mojo que vayas a instalar. Para usar una GPU, también deben cumplirse los requisitos de dispositivos compatibles y controladores. Errores frecuentes al explicar los lenguajes Las presentaciones breves de lenguajes suelen omitir las condiciones de aplicación. También hay que distinguir los hechos históricos de las funciones actuales. Los siguientes malentendidos pueden dificultar la elección de un lenguaje. Explicación habitual Qué hay que entender con precisión JavaScript es la versión web de Java Son lenguajes distintos HTML y CSS aparecieron en 1991 La recomendación de CSS1 del W3C es del 17 de diciembre de 1996 Kotlin es un lenguaje creado por Google Lo desarrolla JetBrains; Google ofrece soporte en Android El código C se ejecuta en cualquier lugar si se vuelve a compilar Las partes que dependen del sistema operativo o del hardware pueden necesitar cambios Python ocupa hoy el puesto 1 en popularidad Para valorarlo hay que conocer la entidad que hace el estudio, la fecha y el método de cálculo Usar Rust resuelve todos los problemas de seguridad La seguridad de memoria y la verificación de permisos de acceso son cuestiones distintas Usar Mojo acelera todas las tareas de Python Hay que medir según la tarea, la implementación y el hardware La palabra bug nació del incidente del insecto Ese incidente popularizó un término que ya se usaba El famoso registro en el que se encontró un insecto corresponde al caso de Harvard Mark II en 1947. Smithsonian explica que este incidente contribuyó a popularizar el término. Es inexacto presentarlo como un caso de ENIAC o como el origen del término. ¿Cómo deben interpretarse las cifras de rendimiento? Las cifras de rendimiento deben interpretarse solo para la tarea medida. El tiempo de compilación y la velocidad de ejecución de la aplicación terminada son métricas distintas. Que una herramienta de desarrollo sea más rápida no significa que una página web se acelere en la misma proporción. Microsoft anunció la transición de las herramientas de TypeScript a una implementación nativa. El anuncio del 11 de marzo de 2025 incluye mediciones por proyecto. A continuación se muestra el caso de la base de código de VS Code incluido en ese anuncio. Tarea medida Implementación anterior Implementación nativa Aumento de velocidad anunciado Compilación de TypeScript de la base de código de VS Code 77.8 segundos 7.5 segundos 10.4 veces En las condiciones del anuncio, el tiempo de procesamiento se redujo a 7.5 segundos. Al calcular la diferencia, se trata de una reducción de 70.3 segundos en una ejecución de la tarea. Esto no significa que todos los proyectos obtengan el mismo resultado. Aplica el mismo principio al comparar la velocidad de Python y C. Hay que comprobar si se han ejecutado con la misma entrada y el mismo algoritmo. Las opciones de compilación y las bibliotecas utilizadas también forman parte de las condiciones de comparación. Es difícil usar cifras sin información sobre el entorno de ejecución como un factor general de velocidad. Comprobación de tipos y validación de entradas externas Aunque se supere la comprobación de tipos, el contenido de los datos externos debe comprobarse aparte. Esta diferencia se pasa por alto con frecuencia al revisar código generado por IA. Las declaraciones de tipos expresan la forma de los valores que espera el programa. Piensa en una aplicación web que declara una cantidad con un tipo numérico. Una API externa podría enviar en realidad una cadena. Añadir un nombre de tipo o hacer una aserción de tipo no valida el valor. Hace falta código que compruebe los datos durante la ejecución. Etapa de comprobación Qué se comprueba Problema que queda aunque se supere Comprobación de tipos Uso de los tipos dentro del código Valores que llegan realmente del exterior Validación de entradas Formato de los datos y rango permitido Si el usuario tiene permitido hacer la acción Comprobación de permisos Permisos de acceso de quien hace la petición Si el resultado cumple las reglas de negocio Pruebas funcionales Resultado real con las entradas previstas Condiciones que no se han probado Esta tabla es un marco de revisión que tiene en cuenta la eliminación de tipos y el alcance de la seguridad de memoria. Separa lo que garantiza el lenguaje de lo que debe comprobar el servicio. Pide a la IA que distinga las comprobaciones de cada etapa. Cómo explicar una función a la IA Al pedir una función, escribe tanto la entrada como el resultado esperado. Si solo defines el nombre del programa, es fácil que falten las condiciones de funcionamiento. Si ya existe un proyecto, indica también el lenguaje y la versión que utiliza. Escribe el entorno que se usará. Describe la forma de la entrada que se procesará. Define el resultado para una entrada válida. Define cómo tratar los valores vacíos y las entradas incorrectas. Pide también el motivo de los cambios y cómo comprobarlos. El siguiente ejemplo de prompt divide los requisitos. Adapta el contenido real de los archivos al proyecto. Debes ejecutar por tu cuenta el resultado generado para comprobarlo. Comprueba primero el lenguaje y el entorno de ejecución del proyecto existente. Lee las filas que tengan título de un archivo CSV y muéstralas en una lista. Si falta una columna obligatoria, muestra un mensaje de error. Informa por separado de las filas cuyo título esté vacío. Separa el código de validación de entradas externas del código de visualización. Comprueba primero si se puede implementar con las dependencias existentes. Explica los cambios y cómo probarlos. Si surge un error, indica también las condiciones para reproducirlo. Los mensajes de error contienen pistas para acotar dónde se ha producido. La documentación de Copilot de GitHub también exige revisar el código generado. Antes de adoptar el código, es necesario comprobar los resultados de su ejecución. Criterios para empezar a aprender y elegir una formación Puedes empezar a aprender con un alcance reducido y centrado en la tarea que quieres crear. Si se trata de desarrollo web, prueba primero a conectar la estructura de la interfaz con su comportamiento. Si se trata de automatización, conviene empezar por comprobar la entrada de archivos y el guardado de resultados. Elige un lenguaje adecuado para lo que quieres crear. Aprende variables, tipos, condicionales, bucles y funciones. Escribe una función pequeña y compara los resultados de ejecución. Introduce datos incorrectos para comprobar el comportamiento ante fallos. Intenta explicar con tus propias palabras por qué has modificado el código. Al elegir un curso, comprueba qué se enseña a verificar, además de ver la pantalla del resultado. Puedes revisar si incluye ejercicios para reproducir y corregir errores. También conviene comprobar si especifica las versiones y el entorno de ejecución utilizados. Explicación del código: proceso para explicar las entradas y salidas de las funciones generadas Gestión de errores: ejercicios para leer mensajes de error y acotar la causa Validación de datos: ejemplos para tratar las entradas externas y las condiciones de fallo Reproducibilidad: instrucciones para volver a ejecutar el código en el mismo entorno Puedes consultar la definición de cada lenguaje en la documentación oficial de su proyecto. TypeScript Handbook incluye una explicación sobre la eliminación de tipos. El libro oficial de Rust explica por separado la propiedad y unsafe. En Mojo Manual, consulta las funciones del lenguaje y el alcance de la integración con Python. FAQ Q. ¿Tengo que aprender todos los lenguajes antes de empezar con el vibe coding? A. No es necesario aprender todos los lenguajes. Elige primero el lenguaje adecuado para lo que quieras crear. Entender las variables, los tipos, las funciones y dónde se ejecuta el código te permite concretar las peticiones. Q. ¿Con qué debería empezar en desarrollo web: JavaScript o Python? A. Para crear el comportamiento de la interfaz en el navegador, JavaScript es el punto de partida. Aprende también qué papel tienen HTML y CSS. Puedes considerar Python como punto de partida para automatizar tareas con archivos y procesar datos. Q. Si uso TypeScript, ¿no necesito saber JavaScript? A. Para entender cómo se ejecuta TypeScript, necesitas conocimientos básicos de JavaScript. TypeScript añade un sistema de tipos a JavaScript. Distingue entre la comprobación de tipos y la ejecución real. Q. ¿En TypeScript hay que indicar el tipo de todas las variables? A. No hace falta indicar el tipo donde sea posible inferirlo. La herramienta determina el tipo a partir del valor asignado y del contexto. Decide si necesitas un tipo explícito según la función del código. Q. ¿React y Node.js también son lenguajes de programación? A. React es una biblioteca de interfaces de usuario. Node.js es un entorno de ejecución de JavaScript. Next.js se clasifica como un framework basado en React. Q. ¿Python traduce y ejecuta el código fuente línea por línea? A. CPython, la implementación de referencia, compila el código fuente a bytecode. Después ejecuta ese bytecode. Es difícil explicar este proceso diciendo solo que el código fuente se traduce línea por línea. Q. Si uso Rust, ¿no hace falta revisar la seguridad? A. La seguridad de memoria de Rust no implica la seguridad del servicio en su conjunto. Los permisos de acceso y las reglas de negocio deben comprobarse por separado. También deben revisarse las condiciones de seguridad del código unsafe. Q. ¿Mojo es una nueva versión de Python? A. Mojo es un lenguaje independiente con una sintaxis similar a la de Python. Ofrece funciones de integración con Python. Comprueba la compatibilidad del código existente en la documentación oficial de la versión que vayas a usar. Q. ¿Es imprescindible tener una GPU para usar Mojo? A. Mojo también permite escribir código para CPU. La GPU no es un requisito para todos los programas. Si usas funciones de GPU, comprueba qué dispositivos y controladores son compatibles. Q. ¿La concurrencia de Go significa lo mismo que el procesamiento en paralelo? A. La concurrencia consiste en organizar varias tareas para que avancen de forma conjunta. El paralelismo es el estado en el que varias tareas se ejecutan realmente al mismo tiempo. La concurrencia por sí sola no garantiza una mayor velocidad de ejecución. Q. ¿Google desarrolló Kotlin? A. JetBrains es quien desarrolla Kotlin. Google ofrece soporte para Kotlin en el desarrollo de Android. Hay que distinguir entre quien creó el lenguaje y quien le da soporte en la plataforma. Q. Si el compilador de TypeScript se vuelve más rápido, ¿la aplicación también será más rápida en la misma proporción? A. El tiempo de compilación y el tiempo de ejecución de la aplicación son métricas distintas. Los ejemplos de rendimiento de Microsoft se refieren al tiempo de procesamiento de las herramientas de desarrollo. La velocidad de respuesta de la aplicación debe medirse por separado. Q. Si el código creado por la IA pasa la comprobación de tipos, ¿ya está terminado? A. La comprobación de tipos por sí sola no permite determinar si una función está completa. Hay que comprobar las entradas externas y los permisos de acceso. Haz pruebas para verificar que se obtienen los resultados esperados en condiciones normales y de fallo. Q. ¿Qué criterios hay que seguir para elegir una formación en vibe coding? A. Comprueba si hay ejercicios prácticos para explicar y modificar el código generado. También puedes ver si se tratan la reproducción de errores y la validación de entradas. Los cursos que indican la versión utilizada y el entorno de ejecución permiten comprobar fácilmente las condiciones de reproducción. Sources - Documentación oficial de TypeScript: TypeScript for JavaScript Programmers: https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html - TypeScript Handbook: The Basics, comprobación y eliminación de tipos: https://www.typescriptlang.org/docs/handbook/2/basic-types - The Rust Programming Language: What Is Ownership?: https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html - The Rust Programming Language: Unsafe Rust: https://doc.rust-lang.org/book/ch20-01-unsafe-rust.html - Mojo Manual: descripción general del lenguaje e integración con Python: https://docs.modular.com/mojo/manual/ - Mojo System Requirements: requisitos de compatibilidad con CPU y GPU: https://docs.modular.com/mojo/requirements/ - Glosario oficial de Python: bytecode y conceptos relacionados con la ejecución: https://docs.python.org/3/glossary.html - NumPy 2.0 Manual: Building from source: https://numpy.org/doc/2.0/building/index.html - MDN: What is JavaScript?: https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/What_is_JavaScript - Documentación oficial de Node.js: Introduction to Node.js: https://nodejs.org/learn/getting-started/introduction-to-nodejs - Documentación oficial de React: biblioteca de interfaces de usuario: https://react.dev/ - Documentación oficial de Next.js: https://nextjs.org/docs - PHP Manual: Introduction: https://www.php.net/manual/en/introduction.php - Preguntas frecuentes oficiales de Go: objetivos de diseño y características de ejecución: https://go.dev/doc/faq - Blog oficial de Go: Concurrency is not parallelism: https://go.dev/blog/waza-talk - Preguntas frecuentes oficiales de Kotlin: responsables del desarrollo y plataformas de destino: https://kotlinlang.org/docs/faq.html - Android Developers: Kotlin and Android: https://developer.android.com/kotlin - Swift.org: About Swift: https://www.swift.org/about/ - Oracle Java Tutorials: About the Java Technology: https://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html - IBM History: Fortran: https://www.ibm.com/history/fortran - John McCarthy: LISP prehistory: https://www-formal.stanford.edu/jmc/history/lisp/node2.html - Howard Bromberg: The COBOL Conclusion, Datamation, marzo de 1967: https://bitsavers.computerhistory.org/magazines/Datamation/196703.pdf - Dennis Ritchie: The Development of the C Language: https://www.nokia.com/bell-labs/about/dennis-m-ritchie/chist.html - Bjarne Stroustrup FAQ: C++ y orientación a objetos: https://www.stroustrup.com/bs_faq.html - IBM: What Is Structured Query Language?: https://www.ibm.com/think/topics/structured-query-language - W3C: Historial de publicación de Cascading Style Sheets, nivel 1: https://www.w3.org/standards/history/CSS1/ - Smithsonian National Museum of American History: Libro de registro con un fallo informático: https://americanhistory.si.edu/collections/object/nmah_334663 - Microsoft: Un TypeScript 10x más rápido, 11 de marzo de 2025: https://devblogs.microsoft.com/typescript/typescript-native-port/ - GitHub Docs: Limitaciones de las sugerencias en línea de Copilot y responsabilidad de verificación: https://docs.github.com/en/copilot/responsible-use/inline-suggestions Images - Un hombre de mediana edad usa un portátil en clase mientras una mujer señala un móvil sobre la mesa.: https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzQ0NjEsInB1ciI6ImJsb2JfaWQifX0=--aa435b9d954b7e3cf19dca343a0d0fc5333fe68f/ai-73cc4d9e.webp - Una mujer revisa un servidor abierto con disipadores de CPU y una tarjeta GPU en una sala de servidores.: https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzQ0NjcsInB1ciI6ImJsb2JfaWQifX0=--0a47db349b5b04ebfcd192a40d156aec0886d68c/ai-3af1935f.webp --- Category: Base de conocimiento Source: https://injoys.com/es/articles/vibe-coding-programming-language-basics License: cc_by Translation-Status: reviewed