Cuál podría ser la programación del futuro. Un nuevo look

imagen
La gente siempre está interesada en el futuro. Soy un ser humano, un programador humano, y estoy interesado en el futuro de la programación. En Habré / Geektimes ya se conocieron artículos similares, y también en la red fue posible dibujar mucho sobre este tema. Hoy doy mi lista de posibles innovaciones en programación en los próximos 10-20-50 años. En la publicación encontrará un análisis comparativo de las causas y la necesidad de la aparición de los lenguajes de programación actuales, y una descripción de las posibles causas de la aparición de nuevos lenguajes y herramientas. La palabra clave aquí es necesidad, ya que la causa da lugar a la necesidad en sí misma.


Antecedentes históricos del surgimiento de las lenguas.


Al principio quiero dar una tabla de requisitos previos para la aparición y popularización de los lenguajes de programación actuales, la lista más general:
LenguaMotivo / Necesidad
EnsambladorLa aparición de las primeras computadoras, la necesidad de humanizar los códigos de máquina
CEl aumento en la cantidad de variedades de computadoras y sus arquitecturas. La necesidad de un ensamblador universal.
C ++El desarrollo de interfaces de usuario. La necesidad de humanización y estructuración del código del programa C.
JavaEl declive de Sun, el desarrollo de la web. La necesidad de interacción interactiva entre el usuario y el navegador.
C #Popularización de Java, problemas actuales de desarrollo de software para Microsoft y plataformas web. La necesidad de Microsoft de tener su propia pila de tecnología.
Javascript- Netscape - . - .
Objective-CApple- . Apple .
PHP/Ruby/Whatever. -.
Your Language???




Lo que no está debajo es un análisis científico profundo de los conceptos dados. Pero hay una descripción de las razones de la aparición de nuevos lenguajes o herramientas, como en la tabla anterior.

Computadora cuántica
Lo primero que viene a la mente es el cambio de era de las computadoras semiconductoras con las cuánticas. Las capacidades serán un orden de magnitud diferente, las tareas que la tecnología cuántica permitirá resolver también cambiarán los límites de la imaginación de los programadores. Ya se están creando los primeros idiomas para una computadora cuántica, será seguro decir que a medida que se desarrolle la tecnología, aparecerán nuevos idiomas, muy probablemente basados ​​en los actuales.

AI
El crecimiento en el uso de IA en condiciones cotidianas afectará y ya está afectando las herramientas del desarrollador y la estructura del PL. Tomemos los asistentes de voz en los teléfonos. O, por ejemplo, chatear con inteligencia artificial. O, ¿qué pasa si la IA evoluciona al nivel en que escribirá programas? En el último caso, parece probable que aparezca un lenguaje especial en el que la IA pueda desarrollar fácilmente programas basados ​​en los requisitos.

Nuevos dispositivos
El lanzamiento de iPhones marcó la popularización de Objective-C. Es posible que el dispositivo muy popular de la Corporación X ya se esté desarrollando, lo que marcará la popularidad del lenguaje Y. ¿Quizás es Tesla?

Desastres mundiales
Puede suceder que, Dios no lo quiera, habrá un cataclismo global o guerra, que cambiará fundamentalmente los métodos de interacción entre las personas y las máquinas. Se puede suponer que Internet, si existe, también volverá a sus raíces y ya no será tan omnipresente. En el caso de una guerra global, será necesario militarizar los automóviles. Donde, en primer lugar, no habrá tanta facilidad de uso como cálculos y confiabilidad. De lo que se puede suponer que los lenguajes tipo OOP se desvanecerán en el fondo, dando la palma a los lenguajes de computación como R, Fortran. Quizás sea una simbiosis, como una especie de R ++ o Fortran ++.

Descubrimientos en física
La ciencia no se detiene, se están realizando investigaciones en todas las áreas y cualquiera de ellas puede llegar a ser dominante para las personas. ¿Qué sucede si las personas pueden manipular el espacio y el tiempo? ¿Qué pasa si abrimos la quinta dimensión ? ¿Máquina del tiempo? Será obvio que el software para moverse en el espacio deberá estar escrito en algo nuevo, adaptado a grandes cantidades de datos. Hablando en grande, imagino los volúmenes de galaxias y universos, esto es solo dentro de la imaginación. ¿Cuál será ese lenguaje? Obviamente orientado a la computación paralela, infraestructura de red, procesamiento de datos y visualización.

Nuevas formas de interactuar con dispositivos
Control de voz, control de gestos, dispositivo de entrada basado en gestos, control de pensamientos por computadora. Ya lo es, sigue siendo tecnología para hacerse popular.



Herramientas


Las herramientas son una clase separada de necesidades de un programador. Sin ellos, el progreso es impensable, así como el lenguaje no puede estar sin un instrumento.

Programación visual
No hace mucho tiempo; no se pueden contar los intentos de crear herramientas de programación visual . Y a menudo, y si no siempre, tales herramientas tropezaron con la incapacidad de mostrar el número de partes necesarias para resolver el problema en forma visual. El propio autor intentó crear una herramienta similar., por lo que recibió información ignorante de sus colegas. La mayoría comparó cuánto tiempo se necesita para crear un programa visualmente y cuánto gastan ahora. Lo que siempre ha ganado el segundo método. Pero todavía estoy convencido de que al haber empaquetado soluciones encontradas con frecuencia en una forma visual, y haber organizado un repositorio centralizado de estas soluciones, puede evitar la necesidad de volver constantemente a los detalles, leer el código.

Generadores de interfaz Han existido
durante mucho tiempo, pero ¿por qué carecen de flexibilidad? Y en cada nuevo formulario o diseño, ¿aún necesita hacerlo manualmente, anotando cada atributo y etiqueta? Tomemos, por ejemplo, LightSwitch . Una gran herramienta, pero adecuada para una gama muy limitada de tareas. La interfaz que se genera a partir de los datos.siempre repetitivo. Es bastante difícil personalizarlo de alguna manera, lo que reduce su uso para ingresar formularios y datos CRUD. El autor siempre ha soñado con tales soluciones:
  • Generación de formularios (WinForms, WPF, Swing, WinAPI) basados ​​en datos
  • Generación de interfaz nativa basada en PSD

¿Ya existe? ¿O me veo mal?

Programación táctil (voz, gestos, toques)
Imagine a los futuros programadores agitando activamente sus manos y diciendo en voz alta "hechizos"
en nuevos idiomas. Francamente, yo, como programador, estoy muy estrangulado por la incapacidad de mostrar emociones
mientras escribo código. Todos los días, tocando la clave en silencio, me convierto en un robot sin emociones basado en el
pensamiento y el cálculo. Al entrar en el mundo real después de tales sesiones de codificación, experimento verdaderas
dificultades para comunicarme con las personas y expresar emociones. ¡Chicos, es hora de que seamos más expresivos!

Programas de generadores
Desarrollo de software de fábrica , generadores de software. Sí, todo esto es, pero no ampliamente utilizado. ¿Por qué? Podemos arrojar una piedra al jardín de buques insignia que crean herramientas de desarrollo, pero podemos decir que el juego no vale la pena, sino el resultado del trabajo. Sin embargo, no veo la programación del futuro sin un repositorio de soluciones preparadas y un generador de programas basado en él.



Pronóstico


En conclusión, me gustaría hacer un pronóstico para el futuro:

  • Adaptar y ampliar los idiomas existentes a las nuevas condiciones.
  • Crear un repositorio centralizado de soluciones llave en mano
  • Interfaz y generación de programas
  • Programación táctil y visual basada en gestos y voz.
  • Oh sí, esto es lo que más me gustaría. Documentación comparativa de lenguajes y marcos, donde usted sabe cómo se
    implementa el método en el lenguaje X, y el servicio mostrará su implementación en el lenguaje Y. Por analogía, habríamos dominado todos estos marcos más rápido.

Source: https://habr.com/ru/post/es383543/


All Articles