¿Qué es GitHub Copilot?

Autor: | Última modificación: 19 de enero de 2022 | Tiempo de Lectura: 3 minutos
Temas en este post:

GitHub acaba de hacer público un proyecto que llevaba en beta privada varios meses y del que todo el mundo está hablando. Bueno, en realidad, todo el mundo está hablando de la Eurocopa, excepto los programadores que no tenemos ojos para otra cosa que no sea GitHub Copilot.

¿Qué es GitHub Copilot?

Es una de esas ideas tan brillantes que uno se da cabezazos contra la pared porque no se te haya ocurrido a ti.

GitHub posee carajillones de líneas de código correcto y testado, en innumerables lenguajes de programación. De la misma manera, Google tiene petacarajillones de lineas de texto relativamente correcto y en diferentes lenguajes. Los de Google han sido rápidos y aprovecharon esos datos para sacar patrones y mejorar las sugerencias que te da tanto en Google Docs como en GMail. Ya no se limita a terminar palabras sino que que finaliza correctamente frases enteras, ahorrándote bastante trabajo.

Pues bien, GitHub decidió hacer lo mismo, pero con lenguajes de programación. Han detectado infinidad de patrones que se repiten y al detectar que estás creando uno, te sugiere ¡varias líneas de código! Algunos de los patrones son funciones memorizadas, creación de cachés, parseo de json, autenticación y un largo etcétera.

¡Clippy ha vuelto!

¿Qué es GitHub Copilot? 1
La sensación es de practicar “pair programming”, pero sin tener a un humano al lado.

Es una de las tendencias más interesantes en la IA, la de los asistentes inteligentes. Se trata de IAs que no sustituyen al humano, pero en las cuales puedes delegar las tareas más aburridas, repetitivas o peligrosas: un escudero leal y eficaz.

El ejemplo más interesante es el proyecto Loyal Wingman de Boeing (y similares de FCAS o Tempest): un dron autónomo de combate que acompaña, ya sea solo o en grupo, a un avión pilotado y se encarga de las tareas más arriesgadas.

¿Qué es GitHub Copilot? 2
GitHub Copilot es exactamente eso: tu copiloto a la hora de programar.

La verdadera importancia de GitHub Copilot

Hace unos días, mencioné a uno de los programadores más brillantes que he conocido, y que tuvo un final trágico: Erik Naggum.

Erik tenía las peores habilidades sociales que jamás he visto en un programador (ya es decir) y era, francamente, un pesado. No sólo eso, era el peor tipo de pesado: el que siempre tenía razón.

Una de las cosas que decía, y con toda la razón, es que el movimiento de “Patrones de Diseño” (que por aquél entonces hacía furor), NO era un logro o una brillantez, sino que era una muestra de incompetencia extrema de los diseñadores de lenguajes de programación.

¿Qué es GitHub Copilot? 3
¿Muestra de incompetencia?

Su tesis era la siguiente: los patrones de diseño descritos en dicho libro son tareas repetitivas y triviales que tenemos que implementar n veces en casi todos los proyectos. Son una vulneración del principio DRY (Do Not Repeat Yourself) a nivel del lenguaje de programación. Por lo tanto, cuanto mayor su popularidad en una comunidad, mayores son las limitaciones del lenguaje de dicha comunidad.

El que se usen tantos patrones de diseño en Java, es por lo tanto una prueba irrefutable de que Java, como lenguaje, es una ñorda. Ahí es cuando empezaban los insultos y toda la conversación se convertía en un circo.

Sin embargo…. Tenía razón.

Todos esos patrones deberían de ser resueltos de manera trivial a nivel del lenguaje, no del programador de aplicaciones.

GitHub Copilot: el detector automático de patrones

Lo que hizo GitHub fue automatizar y dar escala a la labor iniciada por los autores del famoso libro “Design Patterns”: encontrar patrones de diseño y de implementación.

Pues bien, si Erik aun estuviese entre nosotros, diría con mucha razón, y más mala leche, que ningún nuevo lenguaje debería de ser diseñado si no resuelve de forma trivial y eficiente todos los patrones detectados por GitHub Copilot.

Dios le oiga.

[email protected]