¿Perderán los programadores sus trabajos debido a la inteligencia artificial como DeepCoder?

Reemplazar – No. Asistir – ¡Absolutamente!

Permítanme explicarles mi respuesta: Peter Norvig

Comience a las 3:08 para la revisión.

Bueno, piensa que algún día podremos hacer que AI escriba el código para nosotros sin que los desarrolladores participen en absoluto. Ahora él es mucho más inteligente que yo y está en un mejor lugar para conocer las implicaciones, pero seré valiente y diré que creo que habrá un increíble invierno con IA justo antes de que esa posibilidad sea alcanzable (AI invierno – Wikipedia)

¿Por qué? Bueno, hemos llegado tan rápido y las cosas que nunca se imaginaron se han resuelto, pero el salto necesario para abarcar tantas variables, todas con dependencias que tienen variables adicionales, aumenta la estratificación del problema. A menudo, los cambios de software no son proporcionales a los posibles efectos.

Entonces, la IA reemplazará a los desarrolladores de software, NO, o no en mi vida.

Pero la IA puede y es muy buena para ayudar a los desarrolladores a comprender sus opciones y dejar que el humano determine la combinación de opciones para optimizar las experiencias que la IA no tendría forma de intuir. Veo un futuro en el que los desarrolladores de software usarán pares de codificación de IA para escribir un mejor software: me siento tan fuerte acerca de ese POV que fundé una startup en esa premisa exacta https://CodePilot.ai para verificarlo.

Por ahora, es mejor atenerse a los programadores y diseñadores humanos que tienen los conocimientos y la creatividad para ofrecer el software que les encantará a sus usuarios.

Cada vez hay más preguntas sobre la Inteligencia Artificial, que ha estado cambiando nuestras vidas durante décadas. Hace unos días leí un artículo sobre el futuro del desarrollo de software en términos de inteligencia artificial: ¿reemplazará la inteligencia artificial a los desarrolladores?

Antes de darle una respuesta sobre el futuro del desarrollo de software, verifiquemos los logros de la IA hasta ahora.

¿Qué puede hacer la IA?

  • Derrota a los humanos en juegos de mesa y concursos.

En 1997 en la ciudad de Nueva York, la computadora IBM Deep Blue ganó una partida de ajedrez contra Garry Kasparov. Era la primera vez que una máquina derrotaba al campeón mundial de ajedrez en condiciones de torneo.

  • Descubrimientos médicos

La IA ya ha llevado a avances en el diagnóstico médico.

En 2013, la Inteligencia Artificial se puso a trabajar para detectar el cáncer de seno. Una red neuronal fue entrenada para encontrar signos de cáncer utilizando decenas de miles de imágenes mamográficas de la enfermedad.

Pero la red neuronal ha aprendido que no es tan importante buscar los tumores en sí, sino algunas otras modificaciones del tejido que no están en la vecindad inmediata de las células tumorales.

Este era un nuevo conocimiento para la humanidad. Hasta 2013, la medicina no lo sabía.

  • Componer canciones

Magenta es un proyecto del equipo de Google Brain. Intenta responder la pregunta: “¿Podemos utilizar el aprendizaje automático para crear arte y música convincentes? ¿Si es así, cómo? Si no, ¿por qué no? ”El equipo trabaja usando TensorFlow, una biblioteca de aprendizaje automático de Google. Escuche la primera canción generada por computadora de Magenta, compuesta sin ayuda humana.

  • Pintar imágenes

En febrero de 2016 en San Francisco, Google vendió 29 pinturas en una subasta de caridad. Todos ellos fueron hechos por la Inteligencia Artificial de Google.

El evento se llamó “DeepDream: El arte de las redes neuronales”. Las pinturas (obras maestras, si me preguntas) fueron por más de 8000 $, como informa The Wall Street Journal.

  • AI está escribiendo código

En 2015, Andrej Karpathy, ahora director de IA en Tesla y doctor en informática de Stanford. estudiante, utilizó redes neuronales recurrentes para generar código. Tomó un repositorio de Linux (todos los archivos de origen y de cabecera), lo combinó en un documento gigante (tenía más de 400 MB de código) y entrenó al RNN con este código.

Literalmente durante la noche, la IA generó código que incluye funciones y decoraciones de funciones. Tenía parámetros, variables, bucles y sangrías correctas. Los corchetes se abrieron y luego se cerraron. Incluso tenía comentarios.

La IA cometió algunos errores, por supuesto. Algunas veces las variables nunca fueron utilizadas. Otras veces, había variables que no se declararon antes. Pero Karpathy estaba satisfecha con el resultado.

El código se ve realmente bastante bueno en general. Por supuesto, no creo que se compile, pero cuando se desplaza por el código de generación se siente mucho como una base de código C gigante.

Karpathy escribió en su blog.

¿Alguna vez has oído hablar de bot de Twitter – Tay ? Fue diseñado para imitar los patrones de lenguaje de una niña estadounidense de 19 años y aprender de la interacción con usuarios humanos de Twitter. Después de solo 16 horas después de su lanzamiento, Microsoft se vio obligado a cerrar Tay porque el bot comenzó a publicar tweets ofensivos.

Entonces, ¿la IA es una amenaza o una oportunidad? Elon Musk es conocido por su escepticismo hacia la IA. Su preocupación es lo que sucederá cuando la máquina se vuelva más inteligente que la humana.

Incluso en el escenario benigno, si la IA es mucho más inteligente que una persona, ¿qué hacemos? Que trabajo tenemos

No hay duda de que las computadoras serán mucho mejores en la programación en un futuro cercano de lo que son ahora. Lo que nos lleva a una conclusión bastante aterradora.

¿Pero es el futuro realmente tan oscuro? Según Armando Solar-Lezama de MIT, herramientas como DeepCoder tienen el potencial de automatizar el desarrollo de código, pero la IA no va a quitar los trabajos de los desarrolladores. En cambio, se puede utilizar un sistema basado en la síntesis del programa para automatizar las partes tediosas del desarrollo de código mientras los desarrolladores se centran en tareas complejas.

Ya hay startups que utilizan la automatización para construir ‘ software inteligente ‘. Dev9 es una empresa de desarrollo de software personalizado con sede en Seattle centrada en Java y JavaScript. Dev9 reúne equipos que usan inteligencia artificial para desarrollar software personalizado, eliminando procesos extenuantes y reduciendo drásticamente la sobrecarga manual.

Independientemente de si nuestras preocupaciones están justificadas, el hecho es que casi un tercio de los desarrolladores de software temen que la inteligencia artificial eventualmente tome su trabajo. En una encuesta de Evans Data Corp., se preguntó a 550 programadores de software sobre lo más preocupante en sus carreras. La respuesta más común (29%) fue:

“Yo y mis esfuerzos de desarrollo son reemplazados por inteligencia artificial”.

Es normal que tengamos este tipo de dudas, pero mi respuesta final es que no tenemos que preocuparnos. Los desarrolladores de software no serán reemplazados por IA en el futuro más cercano. Pasará algún tiempo antes de que una IA pueda crear un código real y digno de producción que abarque más de unas pocas líneas.

Pasará aún más tiempo antes de que AI aprenda a interpretar el valor comercial de cada característica y le aconseje qué desarrollar primero.

Una vez más, le animo a leer el artículo ¿La inteligencia artificial reemplazará a los desarrolladores? Para saber más detalles.

¡Espero que mi respuesta sea útil para ti! Si te gusta, siéntete libre de votarlo 🙂

Me sorprende que la mayoría de las respuestas parecen ser negativas, o creo que la programación es uno de los últimos campos donde el trabajo humano se vuelve obsoleto. La inteligencia artificial general, por supuesto, reemplazará a los programadores en algún momento: la pregunta no es si, sino cuándo y a qué nivel de sofisticación de la IA.

Por el momento, la programación aún está en pañales. Si bien hemos inventado un gran zoológico de lenguajes de programación, no usamos nada que sea dramáticamente diferente de C, Lisp o Erlang. Una vez que tenemos la especificación de un problema, una persona inteligente se sienta y elabora cuidadosamente una solución. (A veces utilizamos dos personas, pero la programación de pares generalmente no mejora la eficiencia de la resolución de problemas, sino la solidez del código). En esta tarea, los humanos operan al límite de su capacidad intelectual, por lo que pequeñas diferencias individuales en la aptitud a menudo se traducen en diferencias dramáticas en los resultados. Todo el proceso es frágil y propenso a errores, los programadores a menudo son mentalmente inestables, el éxito del proyecto es relativamente difícil de predecir y el progreso más importante en la práctica de la programación no se trata de mejores algoritmos o lenguajes, sino que aborda estos problemas humanos.

Debido a que la programación es más difícil que la conducción de camiones, parece claro que los automóviles autónomos son más inminentes que las computadoras de programación automática. Pero sospecho que incluso con los métodos actuales de IA, pronto veremos cambios dramáticos en la forma en que se escribe el software. Para mí, el éxito de AlphaGo parece ser bastante significativo a este respecto.

Go ha sido difícil de alcanzar para los programadores de juegos, porque el espacio problemático de Go es extremadamente grande y profundo. A diferencia del ajedrez, no podemos abordar el Go con fuerza bruta abriéndonos camino a través de ese espacio, pero tenemos que buscar patrones complejos y metapatrones, combinar asociación con razonamiento, exploración aleatoria con pruebas sistemáticas. DeepMind ha hecho un progreso dramático en esta tarea, no equipando sus máquinas con inteligencia humana, sino encontrando formas de identificar patrones relevantes en miles de millones de juegos.

La programación tiene similitudes sustanciales con Go: el programador debe planificar con anticipación en muchos niveles, para problemas que el programador aún no puede ver, muchos de los que resultan de las decisiones de diseño que se toman desde el principio. ¡Ahora imagine si pudiéramos automatizar partes de esto! Incluso las IA relativamente primitivas similares a AlphaGo podrían explorar rápidamente miles de millones de arquitecturas complejas posibles, utilizando una combinación de diseño evolutivo, coincidencia de patrones adaptativos, descenso de gradiente y bibliotecas gigantes y crecientes de bloques de construcción establecidos. A diferencia de los humanos, las IA nunca cometerán errores sintácticos, errores lógicos simples o errores de diseño conocidos. Más allá de eso, las IA tendrán la capacidad perfecta para aprender de errores pasados ​​e hipotéticos: una vez que se demuestra que un enfoque particular tiene una falla o vulnerabilidad, el sistema nunca intentará implementarlo nuevamente.

Creo que incluso en ausencia de inteligencia artificial general, la programación va a cambiar muy rápido muy pronto. Ya no analizaremos algoritmos difíciles, inventaremos optimizaciones inteligentes, buscaremos y eliminaremos errores, evaluaremos solicitudes de extracción, realizaremos revisiones de código, aceptaremos actualizaciones de nuestras herramientas y bibliotecas, jugaremos con estrategias de implementación, etc. En cambio, nos centraremos en especificar nuestro problema de manera que permita a nuestras máquinas explorar de forma autónoma el espacio resultante de soluciones. Si tenemos una manera de decirle a nuestras máquinas qué problemas deben resolverse, y podemos reducir los problemas a trozos del tamaño Go, podemos dejar la programación real a las computadoras. Las computadoras pueden trabajar en esto durante minutos, días o meses, alquilar CPU dinámicamente, interactuar con otras máquinas que trabajan en problemas similares y examinar bibliotecas globales gigantes y crecientes de bloques de construcción útiles. El código resultante generalmente será demostrablemente correcto, libre de errores triviales e inconsistencias, y completamente incomprensible para el cerebro humano.

Todavía quiero que mis hijos aprendan a programar, pero sobre todo para que podamos tener conversaciones interesantes. No espero que muchos programadores sigan ganándose la vida escribiendo un código real una vez que mis hijos estén fuera de la escuela.

Actualización: ¡Comienza! ¡3000 ingenieros podrían ser despedidos de Wipro después de que la inteligencia artificial aprenda a hacer su trabajo!

Para aprovechar la excelente respuesta de Moray Taylor, le insto a ver la película Hidden Figures.

Lo acabo de ver esta semana pasada. Se trata de cómo las “computadoras de color” de la NASA lograron romper un poco de racismo y sexismo en la ingeniería estadounidense de la década de 1960. Gran película.

Pero para esta pregunta, el bit relevante es el mainframe de IBM.

La NASA usó un gran equipo de mujeres, “computadoras”, para calcular a mano soluciones a ecuaciones analíticas complejas. A lo sumo, tendrían una calculadora temprana para ayudarlos. De lo contrario, serían reglas de cálculo y tablas de registro.

Luego llegó el mainframe “IBM 7090 HAS”.

Podría hacer 24,000 multiplicaciones en un segundo.

Las ‘computadoras humanas’ estarían sin trabajo.

Para mí, el héroe de la historia aquí fue Dorothy Vaughn. Una mujer muy decidida que vio que las computadoras humanas no iban a competir con eso.

Dorothy vio que sí, que estarían sin trabajo multiplicando números .

Pero se necesitaría un nuevo ejército para un trabajo nuevo y mejor: los programadores de computadoras.

Armado con un libro de la biblioteca sobre FORTRAN, fue a capacitar a sus colegas para codificar un IBM.

Avance rápido de 1961 a 2017.

Pase lo que pase con la inteligencia artificial, y las cosas lo harán, por supuesto que lo harán, Moray señala que siempre quedará algo para el ingenio humano, la creatividad y la empatía.

Estoy totalmente de acuerdo.

Saber construir es una cosa.

Saber qué construir es otra muy distinta.

Las canciones Pop frescas que definen el género no se escribirán por sí mismas. Los nuevos productos no se diseñarán por sí mismos. Las nuevas empresas comerciales no caerán de Skynet. Incluso el aterrador robot Boston Dynamics Terminator 3 Bulldog tendrá que ser apuntado por alguien a alguien.

¿Yo? Estoy ansioso por no tener que abrirme camino a través de un millón de líneas de código, solo para agregar un nuevo botón 🙂

La cantidad de publicidad general en torno a la IA, el aprendizaje profundo, etc., se está yendo completamente de las manos. Deepcoder es un ejemplo perfecto de esto.

En caso de que alguien lo haya olvidado, el último invierno con IA ocurrió aproximadamente de la misma manera, exagerando y liberando.

Si desea obtener un excelente Deepcoder “desmitificado” de alguien que trabaja a la vanguardia del aprendizaje profundo (Metamind), lea este blog aquí. https://smerity.com/articles/201

Como regla general, cuando todos y su tío hablan de algo y dan su “opinión” / “proyecciones”, es exagerado al máximo.

Mi preocupación actual no es que la IA haya causado la pérdida de empleos, sino que este campo se haya convertido en otro invierno deshonroso de la IA debido a todo el bombo y las expectativas. Estamos investigando, no escribiendo ciencia ficción.

Absolutamente no. La idea de que cualquiera podría escribir código y, por lo tanto, ya no es necesario para esos molestos programadores “pagados en exceso”, es casi tan antigua como el campo de la informática en sí.

A menudo se usa para separar los trajes C crédulos de su dinero y para asustar a los programadores para que documenten su código o escriban sus pruebas unitarias. (bromeando en la última parte)

¿Qué sucederá si y cuando la IA se vuelve capaz de escribir código confiable (y eso es un gran IF, la mayoría de los humanos no pueden escribir código confiable), entonces la programación simplemente se moverá un nivel “hacia arriba”.

Ha sucedido en el pasado muchas veces:

Assembler no dejó a los programadores sin trabajo ahora que ya no tenían que ingresar todos esos ‘0 y’ 1 a mano.

Los lenguajes de programación de bajo nivel como C y Fortran temprano no dejaron a los programadores sin trabajo ahora que ya no tenían que ingresar todos esos códigos de operación manualmente.

Los lenguajes de programación de alto nivel como Lisp, C ++ o Java no dejaron a los programadores sin trabajo ahora que podían razonar en términos de objetos y clases y todas esas cosas elegantes.

En base a estos datos, extrapolo que, en todo caso, el advenimiento de la IA probablemente aumentará la necesidad de programadores.

Absolutamente no. La idea de que cualquiera podría escribir código y, por lo tanto, ya no es necesario para esos molestos programadores “pagados en exceso”, es casi tan antigua como el campo de la informática en sí.

A menudo se usa para separar los trajes C crédulos de su dinero y para asustar a los programadores para que documenten su código o escriban sus pruebas unitarias. (bromeando en la última parte)

¿Qué sucederá si y cuando la IA se vuelve capaz de escribir código confiable (y eso es un gran IF, la mayoría de los humanos no pueden escribir código confiable), entonces la programación simplemente se moverá un nivel “hacia arriba”.

Ha sucedido en el pasado muchas veces:

Assembler no dejó a los programadores sin trabajo ahora que ya no tenían que ingresar todos esos ‘0 y’ 1 a mano.

Los lenguajes de programación de bajo nivel como C y Fortran temprano no dejaron a los programadores sin trabajo ahora que ya no tenían que ingresar todos esos códigos de operación manualmente.

Los lenguajes de programación de alto nivel como Lisp, C ++ o Java no dejaron a los programadores sin trabajo ahora que podían razonar en términos de objetos y clases y todas esas cosas elegantes.

En base a estos datos, extrapolo que, en todo caso, el advenimiento de la IA probablemente aumentará la necesidad de programadores.

Los robots y la inteligencia general artificial (AGI) sacudirán los trabajos en todos los campos, pero pasará mucho tiempo antes de que trabajos como la programación o cualquier otro trabajo que requiera enormes capacidades cognitivas se extingan.

Consideremos una línea de tiempo para esto que abarca 300 años a partir de ahora.

De 5 a 10 años en la línea de tiempo, los robots probablemente comenzarán a hacerse cargo de trabajos con un salario mínimo como la entrega o el barrido. Esto ya está en progreso, ya que puede ver que se están desarrollando drones y otros tipos de robots para manejar los trabajos de entrega. Los robots en forma de vehículos sin conductor también se harán cargo de los taxis y otros sistemas de transporte público, por lo que los conductores de autobuses y taxis tendrán competidores serios.

En unos 15 a 20 años, los robots gradualmente y lentamente podrán hacerse cargo de trabajos como cocinar en restaurantes y seguridad. Puede verlos en bares como licitadores de bares o porteros, si le gusta visitar bares. En este punto, los robots se harán cargo de casi cualquier trabajo que requiera pocos esfuerzos cognitivos. También estarán involucrados en la agricultura para ayudar a erradicar la pobreza mundial y para ayudar a combatir las enfermedades infecciosas.

En una etapa avanzada, de 20 a 50 años a partir de ahora, los robots comenzarán a hacerse cargo de trabajos realmente delicados a medida que los gobiernos y los tribunales les otorguen más derechos y responsabilidades legales. Nuevamente, esos trabajos que involucran vidas humanas tomarían tiempo para hacerse cargo. Pero en esta etapa probablemente muchos robots estarán sirviendo en el ejército. Sin embargo, no podrán realizar tareas que requieran una planificación a largo plazo.

Más adelante, dentro de 50 a 100 años, la capacidad de los robots para pensar mejorará a un ritmo exponencial. En este punto, los robots podrán al menos leer y comprender lo que están leyendo como una historia. Pero solo serán bots capaces de tener conversaciones significativas y humorísticas con humanos y hacer cosas como componer música.

Las habilidades más difíciles de dominar para los robots serán el pensamiento, la planificación y la creatividad a largo plazo. Probablemente les llevará de 100 a 300 años dominar esta área. El dominio de tales habilidades significaría que son similares a los humanos y que pueden derrocar a sus creadores.

300 años en la línea de tiempo cuando los robots podrán evolucionar por sí mismos, la programación ya no será necesaria. La programación se extinguiría así dentro de 300 años. En este punto, los robots se convertirán en una forma de vida digital y probablemente será demasiado tarde para la humanidad, es el día del juicio. Será como moverse sobre un humano débil. ¿Cómo puedes discutir o pelear con algo que es enorme, más duro, más inteligente y más fuerte que tú?

Pero existe la posibilidad de que los robots continúen ayudando a los humanos y cuando la realidad virtual alcance un nivel de realismo como la matriz, nosotros, como humanos, trascenderemos y viviremos aún más, tal vez nos fusionaremos con las máquinas y nos volvamos parte biológicos.

Por lo tanto, después de todo esto, más allá y más allá, no habrá necesidad de empleos porque todos vivirán en un mundo simulado como la matriz. Los cuerpos físicos serán mantenidos automáticamente por sistemas robóticos que canalizan todas las necesidades nutricionales del cuerpo a través de tubos.

El fin…

Probablemente la línea de tiempo será más larga que esta o más corta, ni idea. Estoy abierto a sugerencias.

ACTUALIZACIÓN: en algún lugar entre 15 y 20 años a partir de ahora, el terrorismo robótico será un área de la que debemos preocuparnos. Debemos protegernos contra el mal uso de los robots temprano.

Espero que esto ayude.

Si bien las tecnologías emergentes pueden mejorar la velocidad, la calidad y el costo de los bienes y servicios disponibles, también pueden desplazar a un gran número de trabajadores . Esta posibilidad desafía el modelo tradicional de beneficios de vincular la atención médica y los ahorros de jubilación a los empleos. En una economía que emplea drásticamente menos trabajadores, debemos pensar en cómo brindar beneficios a los trabajadores desplazados.

La tendencia reciente hacia una mayor automatización proviene en parte de la Gran Recesión, que obligó a muchas empresas a operar con menos trabajadores. Después de que se reanudó el crecimiento, muchas empresas continuaron automatizando sus operaciones en lugar de contratar trabajadores adicionales . Esto refleja una tendencia entre las empresas de tecnología que reciben valoraciones masivas con relativamente pocos trabajadores. Por ejemplo, en 2014 Google tenía un valor de $ 370 mil millones con solo 55,000 empleados, una décima parte del tamaño de la fuerza laboral de AT&T en la década de 1960.

“Debe haber formas para que las personas vivan una vida plena, incluso si la sociedad necesita relativamente pocos trabajadores”.

La compañía australiana Fastbrick Robotics ha desarrollado un robot, el Hadrian X, que puede colocar 1,000 ladrillos estándar en una hora , una tarea que tomaría dos albañiles humanos la mayor parte de un día o más para completar.

El Foro Económico Mundial predijo que la automatización robótica dará como resultado la pérdida neta de más de 5 millones de empleos en 15 países desarrollados para 2020 , una estimación conservadora.

“Cinco años más tarde, no me sorprendería si antes de ver a un médico, hablas con un chat-bot … y te conviertes en un paciente informado antes”

Entonces, nosotros en MAAN Software INC. Apoyamos a las startups que pueden tener robots o el uso de inteligencia artificial con trabajadores menores, pero las personas tendrían que saber que incluso su idea puede funcionar para iniciar una startup y pueden emplearse para aumentar de manera rápida

Respondí una pregunta sobre Quora recientemente que parece relevante: la respuesta del usuario de Quora a ¿Qué trabajos se extinguirán en los próximos 5 años?

La razón por la que es relevante es que el documento citado en esa pregunta predice un 48% de posibilidades de que los programadores de computadoras puedan ser reemplazados por IA en los próximos 10 a 20 años. Esa es una buena oportunidad, casi equivalente a lanzar una moneda. Entonces, ¿te sientes con suerte?

Como programador, mi experiencia es que los programadores a menudo están preocupados. Se preocupan por la contratación externa, las visas H1B, ser demasiado viejo, perder sus habilidades, ser despedido y muchas otras cosas. Las preocupaciones sobre la IA son más recientes, pero estimaría que están creciendo en fuerza.

Al investigar la respuesta a esta pregunta, encontré una encuesta reciente (Los desarrolladores de software se preocupan de que sean reemplazados por AI) que aborde el problema. Ser reemplazado por una IA es, de hecho, la preocupación número uno entre los desarrolladores en este momento, representando el 29% de las respuestas a esta encuesta. La encuesta también comentó que esta preocupación se encontró con mayor frecuencia entre los solitarios que entre los jugadores de equipo, por lo que quizás debería centrarse en desarrollar sus habilidades sociales como programador para seguir siendo más relevante.

Yo mismo no comparto esta preocupación, ya que imagino que si una IA fuera realmente capaz de reemplazarme, esa IA estaría aumentando la calidad de vida en general en un alto grado. Eso me parece un progreso, y lo aceptaría felizmente.

Algunos de los primeros programas de computadora que se desarrollaron tradujeron idiomas de entrada de “nivel superior” a idiomas de salida de “nivel inferior”.

Autocoder, Fortran y Lisp se desarrollaron por primera vez en la década de 1950. Por lo tanto, hemos estado automatizando la programación de computadoras durante los últimos sesenta años.

Podemos confundirnos fácilmente con el término “AI”, así que usemos el término “programa inteligente” en su lugar.

Ciertamente es posible crear “programas inteligentes” que contienen todo el conocimiento necesario para superar a los humanos en la escritura de código de computadora.

La parte difícil es hacer que el “programa inteligente” comprenda lo suficiente sobre el dominio del problema para crear una solución.

Por ejemplo, un “programa inteligente” para crear sitios web automáticamente debe comprender primero cómo se comportan las personas y cómo usan Internet.

La programación y la comprensión de la parte de “tecnología” es fácil porque los lenguajes de programación, bases de datos, métodos de comunicación, etc. están bien especificados y documentados.

Programar una comprensión del usuario humano de un sitio web es un asunto completamente diferente. Creo que esto está más allá de lo que es posible en el corto plazo.

No es la parte de “codificación” lo que es difícil; es comprender el propósito de la aplicación y el entorno (humano) en el que se utilizará.

Es por eso que todavía necesitamos ingenieros de software humanos.

Recientemente agregué una publicación en el blog sobre cómo uso los modelos Smalltalk para codificar automáticamente las aplicaciones del sitio web. También hay un video que muestra la velocidad con la que se puede crear una aplicación completa de Ruby-on-Rails a partir de los modelos.

Muchos “ingenieros de software” ya están obsoletos, simplemente todavía no lo saben.

Pharo Seaside Express

Video de Seaside Express

[ EDITAR ] Sí definitivamente y en el futuro más cercano.

En realidad, sea cual sea su trabajo, Laurent Alexandre dijo una vez “Si usted + AI = AI, pronto estará desempleado”.

Entonces, si NO eres complementario de una IA, debes comenzar a preocuparte por tu futuro.

Es posible que haya oído hablar de la IA de DeepCoder de Microsoft que puede aprender a escribir código [1].

Es posible que haya oído hablar de Algoriz [2], una IA que escribe algoritmos comerciales en segundos.

Es posible que haya oído hablar de Pix2Code [3], una red neuronal profunda que genera código dirigido a 3 plataformas a partir de una sola imagen de entrada.

Finalmente, eche un vistazo aquí ¿Robots tomará mi trabajo? [4] Verá que las posibilidades de ser reemplazado por una IA para programadores de computadoras son del 48%. Por supuesto, sigue siendo una probabilidad / predicción, pero estoy bastante seguro de que su sitio web no da números al azar y hay un gran trabajo detrás.

Notas al pie

[1] La IA de Microsoft está aprendiendo a escribir código por sí mismo, no a robarlo

[2] Algoriz

[3] investigación en inteligencia artificial y aprendizaje automático

[4] ¿Los robots tomarán mi trabajo?

Una especificación muy completa y precisa

No me preocuparía que ocurriera en ninguna de nuestras vidas. La capacidad de identificar un problema y definir un algoritmo correcto para resolverlo es lo suficientemente difícil para que la mayoría de los humanos se desarrollen solos, por lo que imagino que pasará bastante tiempo antes de que produzcamos IA que pueda hacer lo mismo.

Sí definitivamente.

Una máquina de auto-mejora recursiva suficientemente rápida podría dejar obsoleta la programación humana. En este sentido, no es que la IA haya reemplazado explícitamente la programación humana, sino que lo ha hecho de manera implícita, donde ha introducido un futuro o una situación en la que las personas no pueden mantenerse al día o innovar lo suficientemente rápido. Con la adición de la programación genética y varios métodos de muestreo probabilístico , dicha IA debería, en principio, ser capaz de escribir o sembrar cualquier programa concebible.

Y esto no es solo pura conjetura. Ya existe una descripción teórica científica de tal AGI, se conoce como la máquina Gödel .

En los últimos años, los economistas han estado estudiando el efecto de la automatización en la fuerza laboral. Por ejemplo, David Autor considera preguntas relevantes en su artículo de 2015 en el Journal of Economic Perspectives, ¿Por qué todavía hay tantos empleos? La historia y el futuro de la automatización del lugar de trabajo. En un nivel alto, el argumento de Autor es el siguiente.

El aumento de los niveles de automatización, en general, complementa la mano de obra y el aumento de la producción. Sin embargo, ha llevado a la polarización del mercado laboral. Ha habido mayores ganancias salariales para trabajos en la parte superior e inferior de la distribución de habilidades y salarios. Una razón potencial para esto es que las máquinas reemplazan fácilmente tareas y trabajos que son fácilmente codificables. Los trabajadores cuyos trabajos que pueden codificarse fácilmente incluyen contadores, agentes de viajes, cajeros bancarios y conductores de trenes.

Sin embargo, Autor argumenta que la automatización amplifica la ventaja comparativa de los trabajadores en “proporcionar habilidades para resolver problemas, adaptabilidad y creatividad”. Los seres humanos aún podrían ser preferibles en situaciones en las que necesitan ser adaptables, por ejemplo, el personal de la industria hotelera debe poder reaccionar rápidamente a las diferentes solicitudes de los clientes (recomendaciones de alimentos, arreglos de asientos, restricciones dietéticas, etc.). será difícil codificar todos estos escenarios potenciales. Del mismo modo, se requiere mucha creatividad y resolución de problemas para escribir código.

Por lo tanto, en resumen, siempre que esté escribiendo un código creativo que requiera que piense críticamente y resuelva problemas, ¡es de esperar que esté a salvo de los robots por un tiempo!

Ellos ya tienen.

Piensa en lo que está haciendo un compilador. Tomar un lenguaje de alto nivel y convertirlo en un lenguaje de máquina. Esta es una computadora que realiza una tarea de programación compleja que solía llevar mucho tiempo a los programadores.

Este es un pequeño capítulo en una larga historia. Las tecnologías han estado aumentando la inteligencia humana desde la escritura. Las calculadoras, los lenguajes de alto nivel, las bibliotecas, la finalización del código y el linting tienen todo el trabajo del programador automatizado.

Recién estamos comenzando.

El tipo de tareas que las computadoras son capaces de hacer está creciendo a un ritmo fantástico. Siempre fueron buenos siguiendo rápida y cuidadosamente las instrucciones. Entonces, si un programador entendía un tema muy profundamente, podría enseñarlo a una computadora.

Pero las computadoras están aprendiendo ahora sin instrucciones de muy bajo nivel. Pueden realizar algunas de las tareas que hacemos sin saber cómo las hacemos. Por ejemplo, pueden reconocer rostros y voces. Pueden inferir el estado de ánimo del texto. Una mejor comprensión del lenguaje está en el horizonte. Las computadoras que eran tan inteligentes como una hormiga en 1980 ahora son tan inteligentes como un bebé. Podemos esperar que su capacidad crezca sustancialmente en el futuro.

Pero las computadoras piensan de manera diferente a nosotros.

Por analogía, piense en un automóvil. Mucho más fuerte que un humano. Pero no sería de mucha ayuda cavar una zanja. La tecnología que creamos tiende a ser muy fuerte, pero no muy versátil. Esto se aplica a lo físico y lo intelectual.

Espere que los programadores humanos continúen trabajando en concierto con nuestros homólogos de máquinas cada vez más inteligentes. Haremos esas partes sutiles del trabajo que requieren adaptabilidad extrema y conocimiento general. Las computadoras automatizarán el resto.

Creo que esta pregunta surge en gran medida de la falta de comprensión de cómo funciona la programación. Verán, la suposición clásica es que a algunos (una persona de tipo empresarial) “se les ocurre” la idea, y luego el programador la “codifica”.

Es esta gran suposición que lo único que sabe un desarrollador es cómo escribir cosas en un idioma determinado. En realidad, esto no podría estar más lejos de la verdad. Este xkcd lo explica bastante bien.

Verá que la programación no se trata tanto de la traducción como de hacer juicios y optimizar lo que podría ser. Es la razón por la que falla cada editor WYSIWYG. Es bastante fácil tomar algo y moverlo directamente al código. Es mucho más difícil juntar instrucciones incompletas, completar vacíos, asumir lo que el gerente de producto quiso decir en función de su personalidad y, sobre todo, asegurarse de que todo lo que escriba sea comprensible para cualquier schmo aleatorio que aparezca después de usted.

Para usar una analogía imperfecta, pero útil, los programadores son como personas que escriben un libro basado en una sinopsis. Podrías escribir un resumen de Harry Potter, pasarlo a veinte personas diferentes y todos regresarían con diferentes soluciones, pero ninguno de ellos sería Harry Potter.

Para hacer las cosas aún más complejas, debe darse cuenta de que su software estándar es drásticamente más complejo que su novela estándar, por lo que es imposible que una sola persona esté a cargo. Imagine tener que escribir un libro con veinte personas diferentes y asegurarse de que no haya una sola inconsistencia o agujero en la trama. Esa es una explicación razonable de lo que un desarrollador de software tiene que hacer.

Entonces, para responder a su pregunta, no diré categóricamente que no es posible. Especialmente porque no hay horizonte temporal, creo que podríamos construir bots de programación capaces de tomar código de computadora de bajo nivel y envolverlo en descripciones de muy alto nivel para que todos sean básicamente capaces de escribir pseudocódigo y escribir docenas de líneas en lugar de miles

Oh espera. Ya hicimos eso. Esos son compiladores e intérpretes.

Uhh … digamos que creo que los programadores serán reemplazados después de los escritores. Clasificaría ambos como ciencia ficción hoy, pero en cien años quién sabe.

Esa es una pregunta muy profunda que relaciona aspectos fundamentales de la teoría de la computación con ideas sobre la naturaleza de la inteligencia y la cognición.

Si suponemos que la mente es una computadora biológica materialista que es equivalente a una máquina de Turing, entonces estamos demostrando que una máquina de Turing puede programar otras máquinas de Turing, y eventualmente seremos capaces de construir una IA de programación.

Sin embargo, también sabemos por la teoría de CS que no existe tal cosa como la depuración general automatizada de programas (resolver el problema de detención), lo que yo diría es lo mismo que la programación automatizada. Pero ¿podemos saber con certeza que no hay “pensamientos” que no sean manejables por la mente, es decir, alguien del exterior podría ver que estos pensamientos son “verdaderos”, pero no podemos pensarlos, en el sentido en que nuestras mentes han podido probar los límites de las máquinas de Turing?

Personalmente, soy un materialista por filosofía, pero soy propenso a creer que la mente es computacionalmente más poderosa que una máquina de Turing. Esto significaría que todavía tenemos que inventar una clase completamente nueva de maquinaria informática.

Yo personalmente no creo que lo hagan. Me reuní con un grupo en UC Berkeley que estaba haciendo una investigación interesante sobre la síntesis de programas usando el aprendizaje profundo y en general solo han podido tener resultados exitosos para declaraciones de lenguaje natural si-entonces, que están más estructuradas que la mayoría del lenguaje natural que podría ser usado para describir un programa. Así que todavía pasará bastante tiempo antes de que obtengamos mejores resultados en programas más generales.

Si está interesado en este documento, puede echar un vistazo aquí.

Y otro desafío teórico interesante para automatizar completamente la programación de computadoras es el problema irresoluble llamado problema de detención. El problema de detención plantea la pregunta aparentemente simple de si un programa dado se detendrá en una entrada dada. Y resulta que esto puede demostrarse que no tiene solución. El problema de detención conduce a una variedad de otros problemas sin solución que crean un problema similar de autorreferencia (por ejemplo, el problema de determinar si un programa ejecuta una línea en particular tampoco tiene solución). Como resultado, estos problemas hacen que la automatización completa de los programas de computadora sea esencialmente imposible; siempre habrá algún tipo de participación humana en la programación de computadoras.

Dependerá de qué tipo de aplicación, pero probablemente no por un tiempo. Por ejemplo, generalmente hay una gran ambigüedad incorporada en las especificaciones de la aplicación de software, especialmente al comienzo del ciclo de desarrollo. Un desarrollador generalmente debe iniciar y realizar una buena cantidad de consultas con otros humanos para obtener una imagen precisa de los requisitos. Luego, el desarrollador debe crear una solución, que a menudo implica ingenio, improvisación, creatividad, etc.

Por lo tanto, desarrollar aplicaciones no se trata solo de escribir código. Para empezar, una entidad de IA necesitaría la capacidad de interactuar con un humano de la misma manera que otro humano puede (de nuevo, solo para empezar).

Cuando las entidades de IA pueden alcanzar habilidades de nivel humano en habilidades de comunicación, razonamiento, improvisación, inteligencia, aprendizaje abierto, ingenio, creatividad, intuición (etc. x 1000), entonces la mayoría de las personas en ocupaciones de “cuello blanco” se convertirán en un objetivo para ser reemplazado por AI. Agregue robótica a la ecuación, y en teoría, todos podrían ser reemplazados. De hecho, cuando lo piensas, si las entidades de IA estuvieran dirigiendo el programa, muchas ocupaciones se volverían obsoletas y las IA ni siquiera tendrían que molestarse en reemplazar a los humanos en esas ocupaciones.

Por supuesto, la economía colapsaría y todos tendríamos que crecer \ criar nuestra propia comida. Algunos humanos tendrían que ser esclavizados por las entidades de IA, para que extraigan carbón para que las plantas de energía generen electricidad, además de otros humanos para operar esas plantas de energía (no como en la película “The Matrix”, pero similar). Oh, espera, mencioné la robótica, así que en realidad no hay necesidad de esclavitud humana. Las IA podrían manejar sus propias necesidades de producción de electricidad. De todos modos, eventualmente la mayoría de los humanos no serían capaces de manejar el duro costo físico impuesto por la agricultura y simplemente desconectarían las máquinas de IA y volverían al trabajo.