¿La inteligencia artificial hará que el desarrollador de software sea redundante?

Las estadísticas indican que el 38% de las empresas ya han invertido en inteligencia artificial y utilizan tecnologías de inteligencia artificial para diversas operaciones, mientras que el 62% de ellas planea utilizarlas en los próximos 12 meses, es decir, a finales de año. Ayudada por el poder de los grandes datos y la computación en la nube, la IA está revolucionando el mundo digital más rápido de lo que nadie puede imaginar.

Ya estamos presenciando el cambio, desde Alexa de Amazon hasta Google Photos y los autos autónomos de Tesla. Sin embargo, ¿cómo afecta la IA el desarrollo del software que subyace a la mayoría de estos servicios? ¿Cuáles son las cosas que, desde la perspectiva de un desarrollador, son necesarias para ser consideradas para el desarrollo de software de IA?

La inteligencia artificial se basa en Big Data

Cada año, la cantidad de datos producidos se duplica y se estima que para la próxima década habrá 150 mil millones de sensores en red. Estos datos son cruciales para ayudar a los dispositivos de inteligencia artificial a aprender cómo piensa y siente la mente humana, lo que acelera su curva de aprendizaje y permite la automatización del análisis de datos.

Para realizar la tarea requerida, un modelo de IA debe estar capacitado en un conjunto de datos enorme e integral. Además, cuanto más grande sea el conjunto de datos, mejor será el resultado. En general, un conjunto de datos de capacitación estándar para un modelo de Machine Learning puede comprender alrededor de millones o miles de millones de entradas. La IA ahora es incluso capaz de aprender sin el apoyo humano. Por ejemplo, el algoritmo DeepMind de Google aprendió por sí mismo cómo ganar 49 juegos de Atari.

En la actualidad, los servicios de desarrollo de software no están restringidos por limitaciones técnicas del pasado y permiten recopilar, procesar y analizar grandes datos incluso en tiempo real.

La inteligencia artificial necesita computación en la nube

En la etapa inicial, el aprendizaje automático necesita recursos informáticos sustanciales, mientras que la etapa de procesamiento de datos no es tan difícil. Anteriormente, este requisito variable en los recursos informáticos era difícil para aquellos que querían implementar el aprendizaje automático, pero no estaban dispuestos a hacer grandes inversiones únicas para comprar servidores que fueran suficientemente potentes. A medida que surgió la tecnología en la nube, la posibilidad de satisfacer este requisito se hizo fácil. Los servicios de desarrollo de software de IA pueden confiar en la nube corporativa o comercial, por ejemplo, Microsoft o AWS, etc.

Inteligencia artificial en tiempo real o casi en tiempo real

A medida que las técnicas de inteligencia artificial maduran, más personas están interesadas en usar estas prácticas para controlar sistemas complejos del mundo real que tienen plazos sólidos. Algunas de las industrias donde las aplicaciones de IA están en tiempo real incluyen detección de fraude, reconocimiento de voz (voz a texto), reconocimiento facial, asistentes virtuales (Siri, Cortana), traductores (Google Translator), chatbots, autos autónomos y casas inteligentes, etc.

Los mejores lenguajes de programación para IA

La IA es un campo enorme y con un área amplia que cubrir, es difícil referir un solo lenguaje de programación. Por supuesto, hay una variedad de lenguajes de programación que se pueden usar, pero no todos ofrecen el mejor valor por su esfuerzo. Se considera que estos lenguajes son las mejores opciones para la IA teniendo en cuenta su simplicidad, capacidades de creación de prototipos, utilidad, usabilidad y velocidad: son Python, Java, Lisp, Prolog, C ++, etc.

Aplicación de algoritmo AI más allá de ML

Los algoritmos son indiscutiblemente cruciales en el desarrollo de software de Machine Learning. Sin embargo, hay otros elementos que influyen en el éxito, como:

1. Datos de capacitación y procesos de capacitación para Machine Learning e Inteligencia Artificial (IA)

Los datos de capacitación son la clave del éxito, si una organización no tiene suficientes datos o si son parciales o de baja calidad, es probable que el software de IA tome decisiones equivocadas.

Mientras tanto, el proceso de capacitación en Machine Learning puede tomar más de una forma. La primera forma se llama “aprendizaje supervisado” en el que el modelo de aprendizaje automático está provisto tanto de los datos de entrenamiento como del resultado deseado.

Machine Learning Mastery escribe “Se llama aprendizaje supervisado porque el proceso de un algoritmo que aprende del conjunto de datos de entrenamiento puede considerarse como un maestro que supervisa el proceso de aprendizaje”.

La segunda forma se llama “aprendizaje no supervisado”, en este se desconoce el resultado y el modelo tiene que aprender la estructura subyacente o la distribución de los datos para obtener más información sobre los datos.

Machine Learning Mastery explica que “estos se denominan aprendizaje no supervisado porque, a diferencia del aprendizaje supervisado anterior, no hay respuestas correctas y no hay un maestro”.

2. Integración en los procesos de negocios del día a día.

La IA debería convertirse en una parte integral de los procesos comerciales cotidianos para aportar cualquier valor práctico. Para lograr esto, el software debe integrarse con otros sistemas, desde aquellos de los que recibió datos nuevos hasta aquellos a los que traduce la salida.

[Haga clic para continuar leyendo …]

Si. Pero supongo que ya lo sabía, si se suscribe a la definición más generalmente aceptada, una máquina tiene AGI si puede hacer todo lo que un ser humano puede hacer actualmente, si no mejor.
Pero uno no necesita esperar hasta la llegada de AGI para hacer que el desarrollo de software sea parcialmente redundante. Trataré de hacer ese punto de la manera menos técnica posible.

Las computadoras ya son muy confiables en lo que hacen. En todos los niveles de programación, desde la máquina hasta el ensamblaje, desde el sistema hasta la orientación a objetos y todas sus alternativas, afirman hacer un número finito de cosas y lo hacen bien. El desarrollo de software se trata de manipular esas capacidades finitas para crear las aplicaciones casi infinitas que nuestras mentes pueden imaginar. Aquí es donde entra la parte difícil: comunicar lo que queremos que haga la computadora en términos de lo que la computadora dice que puede hacer. Esto tiene dos partes:

  1. Diseñando algoritmos
  2. Codificando esos algoritmos

Estoy seguro (solo un reclamo aquí, la justificación se vuelve técnica muy rápidamente) de que dado un algoritmo formalmente definido, una computadora pronto podría codificarlo por sí misma. En lo que respecta a la primera parte, si bien una computadora puede no ser capaz de crear nuevos algoritmos, sería lo suficientemente inteligente en el futuro cercano para comprenderlos , identificar los relevantes de un repositorio y reutilizarlos con personalizaciones . Plataformas como WIX.com ya han demostrado este principio para sitios web suficientemente dinámicos.

Personalmente, he estado interesado en esta iniciativa desde hace algún tiempo, y me gustaría compartir mi opinión a nivel técnico, con más código y menos ideas flotantes.

Yo creo que no. Si realmente pudiéramos hacer una inteligencia (aparte de la forma humana normal, que es mucho más divertida que construir máquinas), entonces tal vez sí. Pero una de las suposiciones de la IA es “que el cerebro es solo una máquina hecha de carne”. Creo que la conciencia humana es más que manifestaciones de un proceso mecánico. Por lo tanto, creo que la verdadera IA demostrará ser un objetivo difícil de alcanzar y no se realizará (al menos no por un * muy * largo tiempo, y no con el conjunto actual de supuestos).

Dicho esto, muchas de las tareas que realiza un desarrollador de software * son * bastante mecánicas y algorítmicas, y ciertamente pueden automatizarse. Y lo serán, y pronto (relativamente hablando). Muchos ya han sido automatizados. Nadie (en estos días) programas en lenguaje de máquina. Muy pocos programas en ensamblador. Los lenguajes de muy alto nivel son cada vez más comunes y mejores. Sistemas como LINC (Logic Information and Network Compiler – wow, este es viejo – ¿cómo es que todavía no tenemos nada mejor?) Han hecho (y harán) que los programadores sean mucho más productivos, y más como diseñadores o arquitectos que codificadores . La codificación es, después de todo, un proceso en gran medida algorítmico una vez que se proporciona el diseño. Pero creo que se detendrá allí. Las herramientas mejorarán, pero la creatividad no se automatizará.

Pero en este momento tenemos una explosión de herramientas que requieren que un ingeniero de software aprenda docenas de herramientas solo para hacer el trabajo. Tiene que haber una mejor manera. Tal vez un “super LINC”?

No este año.

Dejando de lado el bombo, la IA es otro conjunto de herramientas. ¿Quién sabrá y utilizará las herramientas? ¿Quién configurará el sistema? ¿Quién trabajará con los usuarios para comprender los requisitos, aclarar los malentendidos, navegar por la política, resolver las inconsistencias y los requisitos en conflicto, y eliminar los chistes prácticos?

Nuestros trabajos cambiarán con el tiempo. No veo que la profesión desaparezca pronto.