¿Qué es el software 2.0?
La Ingeniería Software es una disciplina que consta de una serie de métodos, técnicas y herramientas que permiten el desarrollo de software. Hasta el momento, el único protagonista de dicho desarrollo de software ha sido el programador. La calidad y eficiencia de los programas desarrollados siempre han dependido del arte y buen hacer de los programadores. Esta concepción del desarrollo de software, centrada en expertos programadores, es lo que se conoce como software 1.0. Sin embargo, dada la revolución de los últimos años que ha sufrido la disciplina de la Inteligencia Artificial, especialmente áreas concretas como el Deep Learning o Aprendizaje Profundo, este enfoque de desarrollo de software está cambiando, dando paso a nuevos actores que colaborarán en el desarrollo de programas informáticos. Estos actores son máquinas capaces de desarrollar software de forma autónoma, o al menos colaborar en algunas de las tareas de desarrollo, facilitando así la labor del programador clásico.
El término software 2.0 fue acuñado por Adrej Karpathy, responsable del área de Inteligencia Artificial de la empresa Tesla. La forma de desarrollo de software tradicional es lenta y laboriosa; por ello, son muchos los errores que cometen los desarrolladores. Sin embargo, las técnicas de Aprendizaje Automático dentro de la Inteligencia Artificial permiten automatizar parte de este desarrollo. Para ello, los ordenadores aprenden a programar mediante ejemplos, es decir, a partir de programas ya existentes bien implementados son capaces de entender su estructura y replicarla. Este aprendizaje permite la automatización de tareas de programación, acelerando el proceso de desarrollo y reduciendo considerablemente los errores habitualmente cometidos.
Resumiendo, la fundamentación del software 1.0 se basa en el análisis del problema, el diseño de los algoritmos y componentes necesarios y, la implementación y pruebas de los mismos por parte del desarrollador. Por otro lado, el software 2.0 se basa en la recopilación de ejemplos de tareas de desarrollo que sirven para que un ordenador, mediante técnicas de Aprendizaje Automático, aprenda a replicarlas.
Ejemplo
Son muchas las aplicaciones que se irán encontrando en los próximos años asociadas al software 2.0 en áreas como el reconocimiento visual y de voz, traducción automática, juegos, bases de datos, entre otros.
Un ejemplo es Copilot (github.com/features/copilot), una herramienta que permite al usuario describir en lenguaje natural una funcionalidad que necesita implementar, y esta traduce a código fuente la funcionalidad indicada en el lenguaje de programación que se le pida.

Captura de pantalla de Copilot. Fuente: github.com/features/copilot.
Saber más
Aprendizaje Profundo. A. Shrestha and A. Mahmood, “Review of Deep Learning Algorithms and Architectures,” in IEEE Access, vol. 7, pp. 53040-53065, 2019, doi: 10.1109/ACCESS.2019.2912200.
Definición Software 2.0: e.digitall.org.es/software-2