¿Programadores en peligro de extinción?

En cierta forma las posibilidades de las redes neuronales se han diversificado y ha presentado grandes beneficios en nuestras vidas. De igual manera, esos beneficios también están llegando a las vidas de sus creadores, los programadores.

Pablo Arancibia
Pablo Arancibia

Una simbiosis al futuro

Imaginemos por un instante un mundo de Isaac Asimov. Nos encontramos en el año 3000 y la tecnología ha avanzado al nivel en que volar tanto en la Tierra como en el espacio está más que normalizado. La relación entre humanos y robots son parte del canon principal de la vida diaria donde pequeñas señales físicas, mentales e incluso de voz logran gatillar acciones que moldean nuestro día a día. De igual forma los cerebros positrónicos (descritos en la saga de los robot de Asimov) han logrado una madurez en que las inteligencias artificiales son capaces de resolver problemas tan complejos que un humano no podría por sí solo, llevando al mundo a un sin fin de posibilidades.

Pero ¿Cómo logramos llegar hasta este punto?. En la actualidad nos encontramos rodeados de estímulos tecnológicos que nos ayudan a tomar ciertas decisiones. Esto debido a que nos encontramos en un punto de inflexión donde estamos desarrollando ideas cada vez más complejas que antes solo eran teoría. Un ejemplo de esto son las redes neuronales, las cuales fueron inicialmente descritas en 1969 en el libro “Perceptrons: an introduction to computational geometry” de Marvin Minsky y Seymour Papert pero no fue hasta el comienzo del 2000 en que la tecnología fue lo suficientemente robusta como para comenzar a experimentar con esta teoría.

Y justamente ese avance ha logrado que la sociedad se encuentre en camino a dicho mundo de asimov. En cierta forma las posibilidades de las redes neuronales se han diversificado y ha presentado grandes beneficios en nuestras vidas. De igual manera, esos beneficios también están llegando a las vidas de sus creadores, los programadores. Esto ha implicado una mejora en la performance del desarrollo de código e incluso la forma en que programadores se relacionan con las redes neuronales. Pero ¿será posible que las redes neuronales gobiernen la programación?

Una breve historia de la programación

A través de la historia la forma de programar ha evolucionado si lo comparamos con sus orígenes. Durante la década de 1840, una matemática inglesa de nombre Ada Lovelace se convirtió en la primera programadora de la historia al escribir una serie de pasos estructurados, conocido como “note G”, capaz de calcular los números de Bernoulli. Esto incluso antes de que la teoría de la computación fuera desarrollada.

Detalle de retrato Ada King, Countess of Lovelace, in 1840. Author: Alfred Edward Chalon

En cierta forma, las investigaciones en criptografía realizadas por Alan Turing en 1936 sentaron las bases matemáticas de la computación. Posteriormente en 1938  Konrad Zuse presentó la Z1, la cual es considerada la primera máquina computacional que utilizaba cintas perforadas para su programación. Y a finales de la década de los 40 ocurrió un hito importante para los desarrolladores, por primera vez se define un conjunto de instrucciones estándares para la programación de componentes. Este set de instrucciones es conocido como el lenguaje assembler y ha permitido (incluso en la actualidad) un avance sustancial en el diseño de nuevas funciones para los computadores.

Con dicho lenguaje y junto con nuevos procesadores, la computación tomó un desarrollo vertiginoso. Claramente comenzó un periodo de expansión al punto en que hoy en día el 59.5% de la población mundial tiene acceso a un computador. Esta evolución también afectó a los programadores, hizo que se empezaran a crear sistemas como los editores de código los cuales han ayudado en la performance de los programadores.


Población con acceso a internet en el tiempo (1990 - 2020).

Más allá de las inteligencias artificiales

Ahora las personas que desarrollan código han ido implementando mejoras en su día de la mano de la experimentación con teorías como las redes neuronales.  Un ejemplo de esto son los autocorrectores para predecir cuales son las palabras que mejor se adaptan al final de una frase. Así, los programadores han ido perfeccionando dicha tecnología al nivel de preguntarse ¿qué pasaría si usamos los autocorrectores basados en inteligencia artificial para programar?

El autocorrector nos ha servido para mejorar (o empeorar) la forma en que escribimos y obviamente las inteligencias artificiales han ayudado a eso. Los actuales editores de código han ido implementando features capaces de corregir nuestros códigos. Actualmente la empresa Tabnine desarrolló uno de los autocorrectores de código más famosos, el cúal corrige y auto completa líneas de código que son las más probables que los desarrolladores programen.

De igual forma, Github ha irrumpido el mercado al presentar su propio sistema Github Copilot capaz de sugerir mejoras a base de lenguaje natural. En otras palabras, el programador puede escribir “una función que salude a una persona por su nombre” y Copilot te muestra cual es la función que más se adapta a dicha descripción. Imaginen poder escribir código simplemente a base de descripciones!. Incluso algunos han logrado pedirle que escriba y entrene redes neuronales, es decir, una AI entrenando otra AI!

Github copilot diagram. Source: https://copilot.github.com/

Esta tecnología usa el codex creado por OpenIA, siendo esta una de las más avanzadas de la época. Teóricamente hablando utiliza redes transformer que traducen el lenguaje natural en probabilidades de código. Todo esto entrenado con el basto dataset de proyectos públicos en Github.

Este tipo de tecnologías abre un nuevo horizonte para la computación donde las AI tomen el rol del programador. En una mirada al futuro, la programación como la conocemos hoy desaparecerá. Es muy probable que los lenguajes de programación se transformen en sistemas interactivos que se dediquen a desarrollar código con nuestras señales y el programador pase a ser un medio para que la computación se desarrolle de forma óptima. Por esta razón y viendo la historia… Los programadores en el mundo de Asimov estarán en peligro de extinción por su propia creación, las inteligencias artificiales.

Tech Talks

Pablo Arancibia Twitter

Machine learning engineer, passionate about music and social phenomena