¿Cómo será la programación de computadoras en los próximos 50 años?

Bueno, es realmente difícil adivinar cuál será el estado de la programación en los próximos 50 años. Solo para comprender la enormidad del desarrollo en tal escala de tiempo, piense cómo fue hace 50 años. Pero, observando las tendencias actuales, algunos de los aspectos que se pueden esperar pueden ser los siguientes:

Lenguaje natural: mirando la manera en que el Procesamiento del lenguaje natural está ganando ritmo, no parece que la necesidad de programación en un lenguaje estructurado pueda pasar a un segundo plano, y en realidad lo haremos con un lenguaje natural como el inglés. Ya se ha trabajado mucho en esta área, y tenemos algunos lenguajes de programación como The Osmosian Order [1], Metafor [2] , etc., que sirven para darnos un vistazo de lo que puede parecer una vez. desarrollado.

Programación de voz / habla: Las técnicas de vanguardia en el procesamiento del habla tienen un largo camino por recorrer antes de poder ser utilizadas para un propósito práctico como este. Digamos, tenemos un sistema de programación de lenguaje natural en su lugar. El uso de la síntesis de voz para obtener el “código” del lenguaje natural puede servir para este propósito.

Programación visual / gráfica: Permiten al programador escribir códigos utilizando objetos visuales como elementos del programa y manipulándolos gráficamente para crear una representación estructurada. por ejemplo, Alice [3]. Cosas como estas parecen muy básicas ya que traducen estos elementos gráficos a un código basado en texto en el backend. Sin embargo, para un futuro podemos esperar que algo salga de esto. Puede ser un paradigma donde las coordenadas espaciales y las estructuras geométricas básicas se utilizan como estados cuánticos en una máquina. Una versión altamente mejorada de QCL [4] o QLanguage [5] puede ser.

Programación basada en el pensamiento: Soy muy optimista sobre la llegada de una tecnología de este tipo. La maravilla de la idea me fascina.

Hay muchos trabajos interesantes en curso que se mueven alrededor de los patrones de decodificación de la actividad cerebral humana [6] , y la reconstrucción de la información visual y del habla a partir de estos patrones decodificados (corteza visual y corteza auditiva) [7,8]. El siguiente paso lógico será mapear estas entradas sensoriales del cerebro humano a un formato útil (que nuestra máquina entienda) para resolver algún problema, que puede ser mucho más difícil de lo que parece. [9] Pero la forma en que la inteligencia artificial y el aprendizaje automático se desprenden de las edades, no lo consideraré como una fantasía absoluta.

Referencias:
[1] http://www.osmosian.com/
[2] http://web.media.mit.edu/~hugo/p…
[3] www.alice.org
[4] http://tph.tuwien.ac.at/~oemer/q…
[5] http://sra.itc.it/people/serafin…
[6] Tong, F. & Pratte, MS (2012) Patrones de decodificación de la actividad del cerebro humano. Revisión anual de psicología, 63: 483-509. http://www.ncbi.nlm.nih.gov/pubm…
[7] Pasley BN, David SV, Mesgarani N, Flinker A, Shamma SA, et al. (2012) Reconstruyendo el discurso de la corteza auditiva humana. PLoS Biol 10 (1): e1001251.doi: 10.1371 / journal.pbio.1001251http: //www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1001251
[8] Nishimoto, S., Vu, AT, y otros (2011) Reconstructing Visual Experiences from Brain Activity Evoked by Natural Movies. Current Biology 21, 1641–1646 http://www.sciencedirect.com/sci…
[9] Anderson, JR (2012) Seguimiento de resolución de problemas mediante análisis de patrones multivariables y algoritmos de modelo de Markov oculto. Neuropsychologia, 50 (4) 487-498. http://www.sciencedirect.com/sci…

50 años es una posibilidad remota, y otras respuestas hablan de avances tecnológicos. Por mi parte, no me gusta hacer ninguna predicción tecnológica, pero sí creo que la mayor diferencia a partir de hoy será social. Creo que mucha gente sabrá cómo programar hasta cierto punto. No hace mucho leí sobre un país (¿quizás Lituania?) Donde un curso de programación era obligatorio para niños desde quinto grado.

Estoy bastante seguro de que una gran cantidad de profesiones requerirán algún conocimiento de scripting, análisis de texto, XML y expresiones regulares como mínimo. Tal vez los abogados, contadores, médicos … harán algunas cosas que los programadores hacen hoy. Habrá abstracciones de un nivel mucho más alto, pero como estoy tan cansada de tantas historias sobre “programadores” asesinos, creo que incluso dentro de 50 años, la codificación de estilo antiguo seguirá generando mucho software.

Ahora me atreveré a mencionar un solo cambio relacionado con la tecnología. Soy ingeniero de software y realicé varios trabajos relacionados con el diseño de compiladores. Los compiladores evolucionan muy lentamente, pero hay muchas cosas prometedoras que pueden hacer, especialmente en el área de compiladores justo a tiempo (JIT) y recolección de basura. Mi especialización fue más tarde y me frustré un poco por la poca atención que recibe esta área. También hice algunas investigaciones sobre cómo los compiladores pueden optimizar el código para el consumo de energía, esos temas combinados fueron el amor de mi vida.

Durante esos años realmente pensé que la recolección de basura podría tener una historia similar a los sistemas de archivos. Los sistemas de archivos fueron bastante simples durante mucho tiempo (FAT, EXT2) y una vez que las CPU eran mucho más rápidas que cualquier disco, era posible implementar algoritmos complejos para hacer todo lo posible por cosas locas / optimizaciones en lugar de solo esperar el disco. Mi creencia era que algo similar podría ocurrir con los bancos de memoria, y si las CPU se vuelven increíblemente más rápidas, estas podrían (junto con otras optimizaciones) usar un recolector de basura avanzado que reorganiza los contenidos de la memoria reduciendo el número y la duración de uso de los bancos de memoria … algo que ningún programador sano Lo haría manualmente.

Esa fue mi historia en 2002-2005. Pero poco ha cambiado. En aquel entonces leí muchos artículos sobre cosas que un compilador podría hacer para reducir el consumo de código, y casi no los he visto implementados en ningún compilador. En 1994 ya había un chico que intentaba empujar bancos de memoria con hardware para los recolectores de basura (no tuvo éxito). No muchos programadores han oído hablar de perfiladores de energía profesionales. Debido a mi locura por este tema, hice un gran trato sobre el pobre generador de perfiles de energía incluido en las herramientas de desarrollo para iPhone, y fue una gran razón para que me convirtiera en un desarrollador de iOS (aunque eso fue más emocional que práctico)

Ahora soy un creyente de un futuro móvil y estoy viviendo una situación que no importa qué tan rápido se vuelvan estos dispositivos, el consumo de batería siempre será un problema. Por lo tanto, el software eficiente de baja potencia siempre será un problema.

Esto se aplica también a los servidores. El futuro no solo está lleno de dispositivos móviles, sino también de granjas de servidores para muchas “nubes”. Un esfuerzo por reducir el consumo de energía del software siempre será un problema, no solo para reducir los costos de electricidad, sino también el impuesto a las emisiones de carbono que impone al medio ambiente. Google tiene incluso algunos expertos bien conocidos en consumo de servidor / energía, pero no tan famosos como para que yo recuerde sus nombres

El consumo de energía del software nunca fue un problema antes. Ahora estoy bastante convencido de que será más importante en el futuro. Sin embargo, durante los 7 años que he seguido este tema, siempre hay una tendencia a resolverlo “solo” a través del hardware. He conocido a muchos ingenieros eléctricos preocupados por el consumo de energía, pero ni un solo programador preocupado por la huella de energía de su código. Estoy dispuesto a esperar esos 50 años para conocer a ese otro programador y descubrir si estoy loco o si regresé en 2005.

Dentro de unos 35 años, los seres humanos ya no tendrán que realizar una programación profesional. El crecimiento de la potencia de computación está siguiendo una curva exponencial tal que podrá imitar el poder cerebral de toda la humanidad en torno a 2045.

Los sistemas de autoprogramación ya existen. Son altamente especializados y solo pueden realizar cambios limitados. A medida que aumenta la potencia de cálculo, también lo hará la capacidad de los sistemas de autoprogramación. Su alcance de control y flexibilidad crecerá hasta un punto en el que el software pueda determinar los cambios óptimos para hacer mucho más rápido que nosotros los humanos. La programación por humanos se verá superada cada vez más por estos sistemas de software a medida que se aplican a cada vez más disciplinas.

Habrá un período en el que el ingenio y la percepción humana serán imposibles de recrear. Durante este período, los desarrolladores de software se involucrarán en “discusiones” con un sistema experto que luego crea prototipos hasta que el diseñador humano esté de acuerdo en que la funcionalidad creada cumple con los requisitos que el desarrollador de software había previsto.

Sugiero leer el artículo de The Singularity – 2045 de Time y luego visitar el sitio web del Singularity Institute para obtener más información sobre por qué y cómo se producirá esta situación. Los humanos estamos programados para pensar en términos lineales, por lo que el crecimiento exponencial es difícil de comprender sin ayuda.

Al tratar de imaginar la evolución de la programación, primero debemos considerar la evolución de las computadoras mismas.

Las computadoras se están convirtiendo no solo en ubicuas, sino que están “desapareciendo” en los muchos dispositivos (dispositivos inteligentes) con los que interactuamos y en el propio entorno (por ejemplo, muebles inteligentes).

Por lo tanto, en el mismo sentido, probablemente no habrá nada que llamemos “una computadora” en 50 años, no habrá nada como la programación.

Pienso particularmente que instruiremos a tales dispositivos inteligentes para hacer tareas o adaptarnos a nuestras preferencias, principalmente mediante el ejemplo y mis interacciones físicas.

Tomemos como ejemplo el reactable ( http://video.google.com/videopla …) en el que puede crear reflexiones sofisticadas organizando cubos de efectos. Puede utilizar los mismos conceptos para crear procesos complejos de manipulación de datos.

Además, considere cómo este robot puede recibir instrucciones sin programación para realizar algunas tareas (consulte el minuto 1.00)

Es posible que se pregunte cómo se programarán todos estos dispositivos inteligentes en primer lugar. Bueno, mi opinión es que, dado que estarán especializados en tareas individuales, se programarán utilizando modelos específicos de dominios de muy alto nivel, probablemente utilizando interfaces visuales y mucho aprendizaje automático para programarse a partir de ejemplos de los resultados deseados.

Bueno, la mayoría de las cosas en la práctica generalizada tienen ya unos diez años (el futuro ya está aquí, pero no está distribuido uniformemente), por lo que podemos decir cuán diferentes serán las cosas en los laboratorios dentro de cuarenta años. Eso es diez años menos para predecir. Ahora solo tenemos que predecir cuarenta años. Fácil. 🙂

¿Cuánto cambio podemos esperar en la programación en una década? La programación no ha cambiado mucho en los últimos diez años. Quizás el cambio más grande es en torno a cómo los programadores comparten información sobre la programación. Pero lo que hacemos no es realmente tan diferente. Quizás estemos programando en lenguajes ligeramente mejores. Pero los idiomas tampoco han cambiado tanto como parecen. Si estamos hablando del acto de la programación, la programación en Ruby no es tan diferente a la programación en Smalltalk.

Así que volvamos unas décadas. Las cosas han cambiado bastante desde los años setenta.

Si usa el pasado para extrapolar el futuro, yo diría que la programación en cincuenta años será tan diferente a la de hoy como lo fue hoy en los setenta. Probablemente los idiomas serán más expresivos. Tal vez algunas nuevas formas de programación, tan diferentes como lo fueron en los años setenta.

Un par de cosas más: la programación probablemente será en un mundo altamente interconectado. La potencia de cálculo será difícil de imaginar. Y hasta podremos tener nuevos paradigmas informáticos. Computadoras cuánticas, computadoras biológicas, ¿quién sabe?

Pero todavía tienes que decirle a la computadora qué hacer. O tiene que aprenderlo de alguna manera. ¿Tal vez la programación sea más como un diálogo bidireccional? Pero mi apuesta es que será mucho más fácil y natural de lo que es ahora. Pero no me sorprendería si algunos hackers están hablando con variantes de emacs medio sentientes. 🙂

Tendemos a poner demasiado énfasis en el ritmo del cambio. Y duplicar la potencia de la computadora continuamente no cambia la forma en que programamos todo eso.

Incluye toda la información del mundo.
Declara una función para hacerme un cappuccino.
Carga la simulación de la historia del universo,
Hasta que mi capuchino esté listo.
Iniciar la simulación del universo.
Sigue revisando si mi taza está vacía, si es así llénala.
Cambie la posición de Andrómeda ligeramente hacia el eje temporal imaginario negativo.
Reinicie la simulación con los cambios guardados.
Transmisión: Hola mundo. Eres hermosa.

dentro de cincuenta años (con suerte) habremos logrado grandes mejoras masivas en la inteligencia artificial. así que en otras palabras los programas se harán solos.