Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

GitHub Copilot: Qué es y primeras impresiones

Pablo Huet Carrasco
GitHub Copilot: Qué es y primeras impresiones

Imagina que tienes que escribir una difícil disertación, quizás un discurso o alguna carta formal a un jefe o un cliente. Imagina ahora que obtienes un texto perfectamente coherente, de una longitud adecuada y con una estructura gramatical impecable únicamente escribiendo en un cuadro de texto la frase: “Texto muy emocional sobre el tema X dedicado a Juan”. Pues esto, en líneas generales, es lo que aspira a lograr Github Copilot para nosotros a nivel de código.

El objetivo de Copilot

Todo programador conoce el concepto de programación por pares (o “pair programming”) consistente en la realización de código mediante dos programadores en un mismo puesto, útil para aquellos pedazos de código con una complejidad importante o que requiere de un conocimiento profundo de la base de código que sólo poseen entre ambos.

El objetivo final de Copilot es crear una especie de compañero artificial mientras programamos de forma que, definiendo nombres de método y su descripción, esta herramienta sea capaz de mostrar sugerencias a partir de las que genera un código en el lenguaje de nuestra elección. Así idealmente, en muchos casos al menos, nuestro objetivo sería solamente corregir dicho método o añadir funcionalidades faltantes.

Imagen 1 en GitHub Copilot: Qué es y primeras impresiones

Aunque esto pueda resultar ciencia ficción, esta funcionalidad se basa en los últimos avances de inteligencia artificial, sobre todo en los relacionados con la comprensión y generación de lenguaje escrito.

La ciencia detrás del “milagro”

Microsoft, empresa actualmente propietaria de Github, invirtió hace unos años más de 1000 millones de dólares en la empresa OpenAI, responsable entre otras cosas del desarrollo de uno de los modelos de lenguaje más sofisticados y precisos hasta la fecha.

El modelo actual de OpenAI, llamado GPT-3, está actualmente en una fase beta y sólo tienen acceso una serie de compañías y particulares concretos, y es por ello mismo que Copilot no está aún disponible de manera pública. Sin embargo, este modelo es conocido por producir una colección de textos de una precisión asombrosa, con gran coherencia y que en gran parte son indistinguibles de la escritura de un ser humano.

Dos de las grandes características de este modelo son sin duda el sentido común y la memoria. Es capaz de generar textos donde se muestra un conocimiento razonado de la realidad y el desarrollo del mismo demuestra una cierta memoria sobre lo mencionado en fragmentos anteriores. De forma que, a las siguientes preguntas (en negrita) estas son algunas de las respuestas de GPT-3:

  • ¿Cuál es tu animal favorito? - Mi animal favorito es el perro
  • ¿Por qué? - Porque los perros son leales y amistosos
  • ¿Qué dos razones podrían hacer que un perro estuviera de mal humor? - Dos posibles razones serían que el perro tuviera hambre o calor
  • ¿Cuantos ojos tiene una jirafa? - Una jirafa tiene dos ojos
  • ¿Cuantas patas tiene una rana? - Una rana tiene cuatro patas
  • ¿Hay animales con tres patas? - No, no hay animales con tres patas
  • ¿Por qué no hay animales con tres patas? - Los animales no tienen tres patas porque se caerían al suelo

Como podemos observar, aunque breves, las respuestas muestran cierto razonamiento, sentido común y memoria sobre sus respuestas anteriores. Además, este conocimiento general se debe a la muestra de entrenamiento, que en principio para la versión de OpenAI implica una muestra gigante de textos extraídos de internet.

En el caso de Copilot, Github dice haberlo entrenado utilizando todo el código disponible en la plataforma, de forma que funcione como una especie de “súper programador” con mucha experiencia y un conocimiento cuasi-infinito sobre algoritmia y lenguajes (O al menos con la capacidad de crear código aparentemente coherente)-

Por estas características, y por la capacidad de entrenar con cualquier tipo de texto sin necesidad de ofrecer un contexto previo, se dice que GPT-3 podría ser el inicio de la AGI o Inteligencia General Artificial, es decir, una inteligencia con un nivel de complejidad parecido al humano y capaz de aprender cualquier tarea dada una fuente extraíble de conocimiento.

Cómo se usa Copilot

Actualmente sólo podemos encontrar pistas por parte de Github aparte de vídeos de aquellos pocos seleccionados para su demo técnica. Sin embargo tal y como podemos ver en algunos streamings de estos “elegidos”, ya tenemos varios indicios de cómo lo usaremos en nuestro día a día.

Para empezar, Copilot funciona recibiendo un comentario que explique el método que queremos construir, es decir, unas instrucciones lo más detalladas posibles sobre lo que queremos que haga, por ejemplo:

# Un método que imprima por pantalla "hola mundo!"

Una vez nos pongamos debajo de este comentario, Copilot ya sugerirá el método completo, incluyendo incluso su nombre. Pero esto no es todo, la descripción nos permitirá hacer variaciones de estos métodos. Por ejemplo, al poner:

# Un método que salude a un usuario concreto

Nos sugerirá un nuevo método con parámetro nombre que imprima "hola " + nombre.

Además de esto, ya hemos podido ver que Copilot no sólo sugerirá una posible implementación, y que aparte de aceptar la primera es posible ver una lista de ocurrencias de Copilot, siempre teniendo en cuenta de que no se nos asegura que estas sean correctas.

Además de todo esto, dos factores extra parecen hacer especialmente suculento su uso:

  • Copilot no sólo es capaz de generar métodos por su descripción, sino que es consciente de los métodos que ha generado y del resto del código de nuestro archivo, por lo que puede sugerirte qué método es necesario implementar luego e incluso implementarlo directamente teniendo conocimiento del código previamente existente. De esta forma es capaz de redactar, por ejemplo, un método media que realice la media de varios números donde haga uso de una llamada a un método (inexistente aún) suma_numeros para luego, en la siguiente línea, sugerirte, e implementarte dicha función.
  • Además de esto, Copilot no sólo genera métodos, es capaz de implementar clases completas, o lo que es más interesante, generar ejemplos de testing válidos para llamar a funciones apoyándose en el contenido o la descripción. Esto sin duda podrá ahorrarnos mucho tiempo en las ocasiones que necesitemos generar un gran número de casos de prueba.

Dudas, dudas y más dudas

Actualmente sólo tenemos acceso a las reacciones de otros desarrolladores y a los casos que comparten con nosotros, por ello la mayor duda que nos queda es ¿Cuándo estará disponible? y también ¿Sustituirá esta tecnología de alguna forma algún perfil concreto en nuestro mundo tecnológico?.

Sin embargo, por ahora no nos queda más que seguir usando nuestros simples cerebros humanos y esperar a que Microsoft se decida a hacer pública esta tecnología que tanto parece prometer para nuestro trabajo diario.

Relacionado

Te dejamos una selección de cursos, carreras y artículos

Presente y futuro de la formación como programador

Presente y futuro de la formación como programador

Lenguajes de Programación

20 de Septiembre de 2021

En este artículo profundizamos en los motivos por los que formarse como programador es una de las mejores opciones a día de hoy y con un mejor futuro.

Más de 300 empresas confían en nosotros

Oesia
Vass
Everis
Ayesa
Altran
Ibermatica
Atmira
GFI
Accenture
GMV
Concatel
Telefonica
Caser
Banco de España
kpmg
Mapfre
Randstad