En esta era de revolución digital, todo lo que nos atraviesa tiene una línea de código programada de fondo. Actualmente, la industria del software conecta a todas las demás, desde la ciencia de vanguardia hasta el trabajo híbrido diario. En parte, la programación es el uso de computadoras para resolver problemas y automatizar tareas. Si tuviéramos que guiarnos por nuestra cultura cinematográfica fatalista, el avance automático de la tecnología podría derivar en eventos calamitosos para la humanidad: desde la creación de una Matrix que se nutre de nosotros y nos tiene en estado vegetativo mientras experimentamos una suerte de ilusión de realidad, hasta la construcción de Skynet, la inteligencia artificial que buscaba nuestra extinción en Terminator. Sin embargo, en la práctica real del día a día, la automatización plantea ventajas en el desarrollo de software y la evolución social.
Las industrias están ligadas a las modificaciones producidas por el desarrollo digital, y en ese contexto es imprescindible adaptarse y buscar las soluciones que faciliten esta adaptación, con el fin de alcanzar una buena performance de productividad. Es por esto que cada día más empresas se están inclinando por las plataformas no-code, o por las low-code. Es más, según la consultora Gartner, la adopción de plataformas de desarrollo de código bajo está creciendo un 20% anual. De esta forma, la inteligencia artificial y estas herramientas de programación agilizan el proceso de producción.
¿Qué son las plataformas no-code y low-code?
La industria del software ha integrado el low-code y no-code para que otros perfiles, no necesariamente técnicos, puedan ayudar y colaborar en el desarrollo de soluciones tecnológicas. Son herramientas que colaboran con la creación de productos o proyectos digitales, con alguna o ninguna línea de código. Una gran ventaja teniendo en cuenta que solo el 1% de la población tiene conocimientos de programación.
Ambas variantes hacen referencia a plataformas de desarrollo de aplicaciones para las que no se necesitan conocimientos avanzados de programación; las dos permiten gestionar los permisos de acceso a usuarios, la creación de aplicaciones con diseño responsive y la evolución y actualizaciones en tiempo real.
Por un lado, las plataformas no-code son aquellas que permiten la creación de aplicaciones sin necesidad de tener conocimientos de código. Poseen un diseño intuitivo basado en interfaces simples de drag and drop y su gestión puede depender de cualquier usuario, tenga un perfil técnico o no.
Por otra parte, la característica principal de las plataformas low-code es permitir crear aplicaciones de manera rápida y eficiente con el menor uso posible de programación manual. Permite creaciones más complejas y la integración a servicios o sistemas de terceros, y tienen un mayor ciclo de vida que las generadas por las anteriores.
Estas herramientas permiten generar un gran abanico de soluciones digitales con aplicación práctica a cualquier área de una empresa, como por ejemplo recursos humanos, marketing o ventas. Estas plataformas ahorran un tiempo esencial a la empresa y agilizan su transformación digital.
Inteligencia Artificial para generar o autocompletar código
Las plataformas de código bajo existen hace años, en ese recorrido se han desarrollado cada vez más herramientas y soluciones de inteligencia artificial que están supliendo algunas de las tareas de las personas desarrolladoras.
Algunos ejemplos destacables bien podrían ser:
Copilot. Herramienta de GitHub y OpenAI capaz de autocompletar y generar código. Se nutre de GPT-3, uno de los modelos más avanzados de procesamiento de lenguaje natural (PNL, por sus siglas en inglés). La misma puede reescribir texto o refactorizar código. El procesamiento de lenguaje natural, es un campo que estudia las interacciones entre las computadoras y el lenguaje humano.
AlphaCode. La compañía inglesa DeepMind, adquirida por Google, ha presentado recientemente esta solución de IA de la que afirman que es tan buena programando como un “desarrollador medio”.
CodeNet. IBM lanzaba en mayo de 2021 este dataset con más de 55 lenguajes de programación para entrenar a programas de aprendizaje automática de desarrollo.
El algoritmo que puede crear algoritmos
Para la gran mayoría de los humanos, escribir código es similar a aprender un nuevo idioma, pero los investigadores de Intel y el MIT modificaron eso con la creación de un código que puede codificar. Este hecho podría derivar en tener máquinas que puedan programarse a sí mismas. MISIM (Machine Inferred code Similarity) -la tecnología inventada- estudia efectivamente fragmentos de código para comprender lo que una pieza de software tiene la intención de hacer. El sistema puede construir una base de datos en la que los códigos de software que tienen resultados similares reciben puntajes de similitud.
Basado en este catálogo de código preexistente, MISIM puede comprender la intención detrás de un nuevo algoritmo y ayudar a los ingenieros que trabajan en software sugiriendo otras formas de programar u ofreciendo correcciones y opciones para hacer que el código sea más eficiente. Intel ha usado la herramienta internamente, para ayudar a sus desarrolladores con tareas de depuraciones que toman hasta la mitad del tiempo de los programadores.
Conocido como un “sistema de similitud de código”, el principio que sustenta MISIM no es nuevo: Facebook, por ejemplo, utiliza un sistema de recomendación de código llamado Aroma, que, al igual que el texto automático, recomienda extensiones para un fragmento de código ya escrito por ingenieros, basándose en la suposición de que los programadores a menudo escriben código que es similar al que ya se ha escrito.
La mayoría de los sistemas existentes se centran en cómo se escribe el código para establecer similitudes con otros programas. MISIM, por otro lado, analiza lo que un fragmento de código pretende hacer, independientemente de la forma en que esté diseñado. Esto significa que incluso si se utilizan diferentes lenguajes, estructuras de datos y algoritmos para realizar el mismo cálculo, MISIM aún puede establecer una similitud.
El objetivo a largo plazo de la programación de máquinas va más allá de ayudar al desarrollo de software tal como está hoy en día. Si una tecnología puede evaluar la intención y encontrar fragmentos de código relevantes en respuesta, no parece descabellado imaginar que algún día podría permitir que las personas creen programas simplemente describiéndolos. Casi como si fuera una película.
