Pan Aimin: La evolución de los programas informáticos - Treinta años de vida de mi programa

Este artículo es el contenido de " Nuevo programador 004 ", y hablé con Pan Aimin sobre su vida como programador. " New Programmer 004 " llegará pronto, así que estad atentos. Desde Michael "Monty" Widenius, padre de MySQL y fundador de MariaDB, hasta Bruce Momjian, cofundador de PostgreSQL Global Development Group, Jia Yangqing, vicepresidente de Alibaba, Pan Aimin, fundador y director ejecutivo de Instruction Set, Wu Jun, un famoso autor de tecnología, y el autor de Vue.js, You Yuxi... "Nuevo programador 004" con el tema "Nuestra era tecnológica, mi vida de programación", llevó a cabo diálogos profundos con muchos pioneros tecnológicos nacionales y extranjeros conocidos y representantes de la nueva generación de programadores, con la esperanza de que la industria sea excelente. El camino técnico de los personajes y las percepciones de la vida brindan inspiración a todos.

Autor | Pan Aimin Editor | Tang Xiaoyin

Producida | Redacción "Nuevo Programador"

Entré en contacto por primera vez con los programas de computadora en 1985. Aunque solo se trataba de algunos programas BASIC de tipo de trabajo en la máquina de garra, todavía sentía el placer de programar y disfrutaba escribiendo todo tipo de programas engañosos. En los últimos 30 años, los programas de computadora se han convertido en una forma de pensar para mí. Ya sean las funciones de la capa de aplicación, las capacidades de la capa del sistema o la lógica de procesamiento de datos detrás de ellos, todos se han transformado en instrucciones de máquina. .

Tengo la suerte de haber experimentado completamente el proceso de desarrollo desde la era de la PC, hasta el surgimiento y desarrollo de Internet, Internet móvil, la era de Internet de todo y la digitalización industrial. Los últimos 30 años no solo han sido el período de desarrollo de la tecnología y la industria del software, sino también mi carrera personal y la vida del programa. Este artículo presenta la evolución de los programas de computadora en mi cognición, que resulta ser un resumen de treinta años de vida del programa.

Pan Aimin (tomada mientras trabajaba en la Universidad de Pekín en 1999)

Pila de software: desde el código fuente hasta las instrucciones de la máquina

En términos generales, un programa de computadora se refiere a la porción de código en el software. El software cubre mucho más, como datos, documentos e incluso hardware (como dongles) y posiblemente los servicios correspondientes. Un programa de computadora es un conjunto de instrucciones que instruyen a una computadora u otro dispositivo con capacidades de procesamiento de información para realizar varias acciones. Los programas de computadora pueden estar en forma de instrucciones de máquina (secuencias de 0 y 1 binarios que son difíciles de interpretar para los humanos) o en forma de código sin procesar escrito por humanos (generalmente interpretado y mantenido por programadores).

El desarrollo de la tecnología de software en las últimas tres décadas se puede ver desde la forma en que se escriben y ejecutan los programas. Las formas típicas son las siguientes:

1. Ejecución de traducción literal de código

En los primeros días de la programación, los programadores controlaban una máquina siguiendo la idea de que la máquina ejecutaba las instrucciones. El programa más típico está escrito en lenguaje C, casi cada línea de código puede corresponder a una secuencia de instrucciones, e incluso las instrucciones de ensamblaje (la descripción de caracteres de las instrucciones de la máquina) pueden integrarse directamente en el código fuente del lenguaje C.

2. Interpretación y ejecución del código

El código original se interpreta como una descripción de lenguaje abstracto intermedio, que luego se convierte en lenguaje de máquina para su ejecución. Basado en la filosofía del lenguaje Java "Escribir una vez, ejecutar en cualquier lugar", los programas escritos en lenguaje Java son inherentemente multiplataforma. El programador se enfrenta a un entorno informático abstracto, cómo se ejecuta el código Java escrito, hay una capa de direccionamiento indirecto en el medio.

3. Máquinas virtuales y contenedorización

El código escrito por el programador finalmente es ejecutado por la CPU en la máquina.A medida que el hardware de la computadora se vuelve más y más capaz, una máquina puede virtualizarse en múltiples computadoras. El código de máquina a partir del cual se compila o interpreta el código fuente se mapea en una secuencia de instrucciones. El desarrollo y la popularidad de la computación en la nube ha hecho que esta forma de ejecutar programas sea la corriente principal. Los contenedores son una forma ligera de máquinas virtuales y sus ideas son esencialmente las mismas.

4. Separación de front-end y back-end

La visualización de datos se realiza con tecnologías web, el procesamiento de back-end se realiza con un lenguaje de programación adecuado y la comunicación entre los dos se realiza a través de API que se ajustan a los estándares web. Separar las partes de visualización e interacción del usuario, en lugar de acoplarlas con la lógica comercial, es la idea central de separar los extremos frontal y posterior.

De los cuatro métodos anteriores, los primeros tres se enfocan en la introducción de una o más capas intermedias en un programa de computadora en la misma máquina, lo que hace que el código fuente sea interpretado o mapeado varias veces antes de llegar a la CPU física; el cuarto método consiste en cruzar la perspectiva de la máquina desacopla las partes de visualización e interacción del usuario de la lógica comercial (especialmente el procesamiento de datos). Estos cambios están estrechamente relacionados con el desarrollo de la industria del software. Vale la pena mencionar los siguientes puntos.

  • Desde el código fuente hasta las instrucciones de máquina correspondientes, el camino es cada vez menos claro. En el entorno de la máquina física, el código fuente está separado de la CPU por una o más capas; en el entorno de computación en la nube, el programador ni siquiera sabe cómo se ejecuta físicamente el código. Esta tendencia cambiante ha hecho que la depuración de programas y la optimización del rendimiento sean más complejas y difíciles.

  • Cuando se ejecuta el programa, la ruta del código de la función comercial se vuelve más larga e incluso se distribuye a diferentes entornos informáticos. El lugar donde se activa una lógica comercial y donde se procesa puede abarcar entornos de ejecución o incluso redes. Esto requiere una mayor capacidad compuesta por parte de los programadores, y los programadores con una sola pila de tecnología se enfrentarán a grandes desafíos.

  • Estos métodos de programación están integrados y tienen sus propios escenarios de adaptación. Con el desarrollo continuo de Internet y su penetración en varias industrias, el método de programación híbrido se ha convertido en la corriente principal de la industria del software. Para los desarrolladores de software, necesitamos ir de la mano con profundidad y amplitud: la llamada profundidad se refiere a la comprensión de la ejecución progresiva del código fuente al siguiente nivel; la llamada amplitud se refiere a la migración de la ejecución cadena de un entorno de ejecución a otro entorno de ejecución comprensión del proceso.

  • El progreso tecnológico es el motor interno del desarrollo industrial.La computación en la nube se beneficia del gran avance del hardware y de la madurez de la tecnología de virtualización. A su vez, el desarrollo de la industria ha llevado a la expansión a gran escala de los profesionales del software. Hay millones de programadores en China, e incluso decenas de millones según algunos métodos estadísticos. El desarrollo de estos métodos de programación tiene una gran relación con la eficiencia de la industria del software. Es probable que el avance de la nueva tecnología de software aumente exponencialmente la eficiencia industrial, lo que a su vez puede generar la necesidad de que un gran número de profesionales realicen cambios tecnológicos.

Siempre he creído que los programadores que escriben código son una actividad creativa, que es la parte sagrada de la profesión de programador. Idealmente, los programadores escriben código que es creativo y de alto valor más allá del alcance de los robots y la inteligencia artificial. De lo contrario, tarde o temprano estos trabajos serán reemplazados por innovaciones tecnológicas. Si el código escrito por el programador es solo una repetición de la fórmula, o puede describirse mediante una formalización relativamente simple, entonces con la evolución tecnológica actual, el código puede escribirse sin un ser humano. Este es el objetivo en el que están trabajando actualmente muchas plataformas de desarrollo de código bajo o código cero, y ha llevado a la tendencia de que las herramientas de escritura son muy valiosas, y el trabajo que no depende de las herramientas para escribir mucha lógica es de gran importancia. valor limitado

Escribir código en el dormitorio durante la escuela de posgrado

Durante la primera mitad de mi carrera, he creído en "comprender un programa o sistema de manera binaria", tratando de descubrir la secuencia subyacente de instrucciones para cada función o tarea. Con la creciente complejidad de los programas o sistemas, la computación en la nube y la popularidad de los modelos de separación front-end y back-end, cada vez nos resulta más imposible entenderlos de una manera binaria refinada. En este caso, la comprensión de la arquitectura de software se ha vuelto cada vez más importante y, por casualidad, he logrado pasar de programador de sistemas a arquitecto de software.

Red: conectividad en todas partes

El desarrollo de Internet ha cambiado nuestras vidas, que es uno de los mayores cambios en la sociedad humana en las últimas tres décadas. La red también ha cambiado la forma en que se ejecutan los programas de computadora, e incluso cambió la forma de pensar de la programación. Veamos primero la evolución de la propia red:

  • La red inicial se utiliza en el entorno de la sala de cómputo o en el entorno de la oficina, y la forma física de la red es muy intuitiva, porque en la mayoría de los casos, cada máquina se arrastra con una línea. Las funciones de red comunes se realizan a través de aplicaciones especializadas, como programas de correo electrónico, navegadores, herramientas de transferencia de archivos, etc. La programación de funciones de red es una técnica de programación avanzada.

  • La red se ha vuelto popular. Los hogares y muchos lugares públicos tienen redes. El método de conexión puede ser un cable o Wi-Fi inalámbrico. En tales condiciones, cada vez más programas han agregado capacidades de red y la programación de red se ha vuelto gradualmente popular, pero sigue siendo una tecnología de programación avanzada. Sin embargo, con muchos middleware, el umbral de programación se ha reducido.

  • La popularidad de las redes de datos móviles. Los avances en redes son integrales, incluida la infraestructura de hardware y las pilas de software. La red de datos móviles es relativamente inestable, lo cual es un desafío para la programación de software, y su complejidad proviene de dos aspectos: el manejo de las anomalías de la red y la conexión de la red involucra la coordinación de dos partes. Sin embargo, gracias a las funciones de red básicas proporcionadas de forma nativa por los sistemas operativos móviles, el umbral para la programación de redes se reduce considerablemente.

En segundo lugar, la idea de la red es inseparable del sistema operativo, y la evolución de los dos está aún más relacionada. La filosofía central de la red es la estratificación del protocolo. La implementación de la función de cada capa solo depende de la semántica proporcionada por la siguiente capa, y también proporciona una semántica estándar o acordada para la capa anterior. El sistema operativo también tiene una estructura jerárquica similar, cuanto más alto el nivel, más lejos del hardware, cuanto más alto el nivel, más bajo el umbral para la programación. La pila de software para redes reside principalmente en el sistema operativo y, en consecuencia, escribir aplicaciones no es significativamente más difícil, ya que la mayor parte de la complejidad introducida por las redes es absorbida por el sistema operativo. Por ejemplo, la mayor parte de la complejidad que trae la red de datos móviles es manejada por el sistema operativo móvil, y el marco de desarrollo de aplicaciones proporcionado anteriormente no expone la complejidad del entorno de la red de datos móviles.

Sin embargo, la red en sí tiene un gran impacto en la escritura de aplicaciones, desde el diseño de software hasta la escritura de código, y los siguientes son algunos cambios notables.

  • El patrón más básico de programación de red es la programación asincrónica y el manejo y recuperación de excepciones. TCP y UDP no son solo dos protocolos de transporte, sino también dos ideas de programación. Nos guían sobre cómo diseñar y escribir programas de servidor y cliente.

  • Para los programas que se ejecutan en un entorno de red, podemos escribir solo la mitad de un programa. La otra mitad del programa puede desarrollarse en manos de personas completamente desconocidas, tal vez del otro lado del mundo, o incluso no aquí. Necesitamos acatar el acuerdo de ambos lados de la red, acatar las normas de la otra parte o ser lo suficientemente flexibles para hacer frente a posibles sorpresas.

  • Las funciones de red son susceptibles a problemas de rendimiento y experiencia. La red es a menudo un recurso compartido, por lo que su inestabilidad suele ser predecible. Si la función de la red se maneja bien, es posible resolver los factores inestables; si no se maneja adecuadamente, causará un rendimiento extremadamente bajo. Incluso la experiencia es extremadamente pobre, e incluso el proceso se estanca o falla. Desde este punto de vista, siempre hay espacio para la optimización y mejora en la programación de la red.

  • La inestabilidad de la red trae incertidumbre y dificulta el diagnóstico de los programas de red. Por un lado, el entorno de red del programa puede estar nervioso, lo que da como resultado un comportamiento de red irreproducible, lo que aumenta la dificultad del diagnóstico; por otro lado, el programa de red puede ejecutarse en un entorno físicamente inalcanzable (como un host en la nube) , que requiere que los programadores tengan una comprensión más completa del entorno de red, de lo contrario, será difícil analizar la causa raíz del problema a partir de fenómenos o códigos de error.

La red informática ha experimentado una gran cantidad de optimización y eliminación técnica. La red estable y las buenas aplicaciones de red que disfrutamos hoy en día son el resultado de precipitaciones históricas. En términos de hardware, nuestra red se está volviendo cada vez más estable y se puede lograr una conmutación sin interrupciones entre estaciones base (o puntos de acceso) de redes inalámbricas; en términos de software, el sistema operativo resuelve una gran cantidad de problemas de complejidad de la red, dejando el programa de aplicación Lógica de procesamiento relativamente fácil de implementar, como el protocolo HTTP fácil de manejar, solicitudes remotas sin estado, almacenamiento automático en caché fuera de línea y más. En los primeros días de las redes de datos móviles, muchas aplicaciones encontraban una pantalla blanca y no respondían cuando la red era inestable. Para mejorar la experiencia del usuario, los desarrolladores de aplicaciones necesitaban escribir mucho código. Con la popularidad y estabilidad de las redes de datos móviles y la madurez de los sistemas operativos móviles, este tipo de código de aplicación se ha reducido considerablemente.

Con el desarrollo de Internet móvil, hemos entrado en la era de Internet de todo, y la digitalización industrial está en pleno apogeo. La conexión en la red ya no se limita a computadoras o dispositivos personales, y cada vez más diversos dispositivos se conectan a Internet. Tanto la tecnología de red como el sistema operativo se enfrentan a una actualización, desde el concepto hasta la extensión funcional están cambiando. Tengo la suerte de estar en la ola de la tecnología después de tantos años en el negocio. En esta ronda de actualizaciones tecnológicas, surgió un sistema operativo para la conexión de dispositivos como lo requieren los tiempos, por lo que fundé una empresa de conjuntos de instrucciones en 2018, especializada en el desarrollo y comercialización de sistemas operativos de Internet de las Cosas.

Inteligencia artificial: de la inteligencia simulada a más allá de la inteligencia humana

El desarrollo de la inteligencia artificial representa una búsqueda del uso humano de la informática. La computación es una habilidad que puede hacer muchas cosas, incluida la computación científica y las tareas transaccionales; la tarea de la inteligencia artificial es permitir que las máquinas tengan la misma inteligencia que los humanos a través de la computación. Desde el nacimiento de las computadoras, el desarrollo de la inteligencia artificial ha experimentado altibajos, pero en las últimas tres décadas, la disciplina de la inteligencia artificial en general ha ido avanzando. Los siguientes son algunos eventos típicos en el campo de la inteligencia artificial:

  • Computadora Deep Blue (hecha por IBM), en 1997, Deep Blue derrotó al campeón de ajedrez humano Kasparov.

  • El robot biónico "Big Dog" (desarrollado por Boston Dynamics), en 2005, puede caminar sobre cuatro patas.

  • AlphaGo (AlphaGo, desarrollado por Google), en 2016, derrotó al campeón humano de Go Lee Sedol.

  • La tecnología de reconocimiento facial se aplica a las aplicaciones móviles. Por ejemplo, en 2015, Jack Ma hizo una demostración de pago mediante deslizamiento facial en la exposición CeBIT (Alemania).

  • AlphaFold/AlphaFold2 (desarrollado por Google), 2020/2021, básicamente supera el problema de predecir la estructura de plegamiento de proteínas que ha desconcertado a los científicos humanos durante mucho tiempo.

Además, en los últimos 10 años, la mayoría de los fabricantes de automóviles (ya sean empresas de automóviles tradicionales o fabricantes de automóviles nuevos) y algunas empresas de tecnología de Internet han estado investigando los automóviles autónomos, y se han lanzado algunos automóviles autónomos uno tras otro. De los eventos anteriores, podemos ver que hay muchos caminos de exploración para las aplicaciones de inteligencia artificial:

  • inteligencia analogica

El proceso de pensamiento humano se simula usando poder de cómputo. Las más típicas son actividades intelectuales regularizadas como el ajedrez y el Go, y el proceso de pensamiento humano puede extraerse adecuadamente. Por lo tanto, siempre que haya suficiente soporte de almacenamiento y poder de cómputo, así como modelos de experiencia humana, existe la posibilidad de hacerlo mejor que los humanos.

  • Uso de algoritmos para lograr tareas inteligentes

En muchos escenarios de aplicaciones, los algoritmos de inteligencia artificial (principalmente algoritmos de aprendizaje profundo) se pueden usar para completar algunas tareas bien definidas, como reconocimiento facial, reconocimiento de matrículas, reconocimiento de voz, etc. Este tipo de aplicación de inteligencia artificial requiere dos condiciones: suficientes muestras y suficiente potencia informática. En los últimos diez años, el vigoroso desarrollo de Internet móvil ha reunido suficientes datos de muestra para muchos escenarios comerciales y, combinado con el desarrollo de la computación en la nube, este tipo de aplicación de inteligencia artificial se ha desarrollado rápidamente.

  • Reemplazar al ser humano de manera integral para lograr la inteligencia humana

Los ejemplos más típicos son los coches autónomos y varios robots con complejas capacidades de toma de decisiones. Los automóviles autónomos pueden liberar a los humanos de las tareas de conducción, y los robots pueden reemplazar a los humanos en escenarios complejos para realizar tareas. Este tipo de aplicación de inteligencia artificial requiere la integración de varias tecnologías de software y hardware, y se ha convertido en un punto caliente en la industria en los últimos años.

  • más allá de la inteligencia humana

Explora territorio desconocido en beneficio de la humanidad. Por lo general, en algunos campos de investigación científica, la combinación de tecnología de inteligencia artificial ha logrado avances revolucionarios. Por ejemplo, el AlphaFold2 mencionado anteriormente ha logrado un gran avance en la predicción de la estructura de plegamiento de proteínas, alcanzando un nivel que los humanos no podrían hacer a través de experimentos. resultado.

Los tres elementos centrales de la inteligencia artificial son los datos, el poder de cómputo y los algoritmos. El poder de cómputo es la base física de la computación, los datos son la materia prima de la computación, y el algoritmo es la lógica de la computación, y su forma final es el código de software. El desarrollo de la inteligencia artificial ha creado una gran cantidad de trabajos de ingeniería de datos e ingeniería de algoritmos. Los ingenieros de datos son responsables de recopilar datos, realizar varios procesamientos en ellos y recopilarlos para que los utilicen los algoritmos; los ingenieros de algoritmos son responsables de implementar varios algoritmos o llamar a algunos algoritmos generales para completar tareas específicas. Después de años de desarrollo, se han depositado muchas bibliotecas de algoritmos, y muchas son de código abierto para que las use la industria, como TensorFlow, PyTorch, Ray y SparkML.

La programación de algoritmos debe prestar especial atención al rendimiento para garantizar que el rendimiento del algoritmo sea lo suficientemente bueno. Esta no es una tarea sencilla, requiere un conocimiento sólido del sistema subyacente, e incluso una comprensión de la arquitectura del hardware. Por un lado, la transmisión y distribución de datos es muy importante para un algoritmo con una gran cantidad de cómputo; por otro lado, entre muchos nodos de cómputo, es necesario evitar un único punto de cuello de botella en el rendimiento. Al utilizar algoritmos de inteligencia artificial, muchos expertos en el dominio no entienden los requisitos de configuración de la plataforma informática subyacente o no utilizan la biblioteca informática correctamente, lo que resulta en recursos desperdiciados o tiempo informático excesivo, lo cual es común en la práctica.

Tuve la oportunidad de construir un gran dispositivo informático en el Laboratorio de Zhijiang, llamado Reactor digital de computación inteligente, cuyo objetivo es construir una gran plataforma informática. El reactor digital puede agregar una variedad de recursos informáticos heterogéneos y proporcionar una plataforma informática unificada para diversas aplicaciones (incluidos descubrimientos científicos, economía digital, simulación industrial, etc., denominados reactores de aplicación) a través de algunos marcos informáticos o bibliotecas de algoritmos. Es concebible que una vez que tales instalaciones informáticas estén disponibles, se convierta en un modelo de desarrollo para combinar algoritmos de inteligencia artificial con modelos en varios campos para superar la inteligencia humana en áreas locales.

Visualización e interacción con el usuario: de GUI a gemelo digital

En la ingeniería de desarrollo de software de aplicaciones, la visualización y la interacción con el usuario suelen ocupar una proporción considerable. Los ingenieros que escriben esta parte de la lógica del programa suelen ser más populares porque pueden construir rápidamente algunos programas con resultados visibles. En la situación actual de digitalización industrial en pleno apogeo, además de los ingenieros de datos, los más demandados son los ingenieros que desarrollan la visualización y la interacción con el usuario. En las últimas tres décadas, las principales tecnologías de software de visualización e interacción con el usuario han sufrido varios cambios:

  • GUI nativa (compatible con el sistema operativo)

A principios de la década de 1990, la escritura de interfaces de usuario a menudo se enfrentaba directamente con las API proporcionadas por el sistema operativo. Para crear una interfaz gráfica atractiva, ordenada y estética, los programadores no solo deben estar familiarizados con la administración de ventanas y la API de gráficos del sistema operativo, sino también ser competentes en gráficos por computadora e incluso deben comprender la estética del color. Más importante aún, la cantidad de código en la parte de la interfaz interactiva del programa es extremadamente grande, y estos códigos son muy poco compatibles con la compatibilidad de los monitores de hardware y las versiones del sistema operativo.

  • GUI en el marco de programación de aplicaciones

La implementación de una interfaz gráfica de usuario a través de un marco de programación de aplicaciones puede resolver eficazmente el problema de escribir directamente la lógica de la interfaz interactiva sobre la base de una GUI nativa. Por lo tanto, han nacido muchos marcos de programación de aplicaciones desde mediados o finales de la década de 1990. El más clásico es La aplicación MFC de Microsoft, el marco de programación y Qt para soporte multiplataforma. El entorno de Java proporciona interacción con el usuario y soporte de visualización, y .NET también proporciona potentes capacidades de desarrollo de interfaz gráfica de usuario.

  • Motor de interacción de interfaz gráfica

Para aplicaciones con altos requisitos para la dinámica de la interfaz de usuario, como que sus datos sean dinámicos o el formulario se pueda configurar dinámicamente, tienden a tener un motor de interacción de interfaz gráfica incorporado, para visualizar el efecto de representación de la interfaz y el procesamiento. flujo de control de eventos de interacción dentro de su propio programa. Los motores típicos de representación e interacción son el motor WebKit compatible con Apple (anteriormente KHTML), el motor Flash de Adobe y el motor de navegador Chromium de Google (derivado de los motores WebKit y V8). Cuando Adobe Flash aún estaba en su apogeo (2010), la industria generó un debate sobre cuál es el futuro, Flash o HTML5.

  • Arquitectura B/S

Después de años de desarrollo, la visualización y la interacción del usuario han tendido gradualmente a estandarizarse: HTML+CSS+JavaScript, que es la base para la separación de front-end y back-end mencionada anteriormente. La premisa es que cada entorno front-end tiene un navegador web (navegador), la lógica del front-end se ejecuta en el navegador y se comunican con el back-end (servidor) a través del protocolo HTTP o HTTPS. Esta arquitectura encaja perfectamente con la virtualización de servidores para computación en la nube. La aplicación se puede implementar en la nube y el usuario puede ver el resultado de la ejecución del programa e interactuar con él en cualquier lugar de la red simplemente a través de un navegador.

La evolución tecnológica de las GUI ha pasado por el proceso de "optimización de la visualización gráfica de una sola máquina, estandarización de las GUI, separación de la parte delantera y trasera de las GUI". Las principales formas de desarrollo de interfaz visual interactiva se están desarrollando hacia una alta eficiencia, y la arquitectura tiende a ser razonable. . Sin embargo, estos métodos de desarrollo no son alternativas simples, y cada método aún tiene su entorno de software y hardware aplicable en el entorno industrial actual.

En la era de Internet para PC, la visualización y la tecnología de interacción con el usuario se centraron en la mejora continua del rendimiento de representación y la puntualidad de respuesta; en la era de Internet móvil, además de los requisitos de rendimiento, el dinamismo era un requisito más importante y el contenido de la página en muchas aplicaciones y la lógica de interacción debe personalizarse fácilmente; y en la era de la Internet industrial, la visualización y la interacción del usuario tienen nuevas necesidades y tendencias. Los siguientes dos aspectos del desarrollo merecen una mención especial:

1. Plataforma de desarrollo de código bajo

Como sugiere el nombre, una plataforma de desarrollo de código bajo se refiere al desarrollo de una aplicación que requiere solo una pequeña cantidad de código, o incluso sin escribir código. Este es un nuevo modo de desarrollo de software en la capa de aplicación después de que madure la virtualización de la computación en la nube. Hay una gran cantidad de requisitos de visualización de datos dinámicos en la escena de la digitalización industrial, que ha generado varias herramientas de personalización de páginas y se ha expandido aún más para formar una plataforma de desarrollo de código bajo. Las ventajas de la plataforma de desarrollo de código bajo son: umbral de entrada bajo, generación rápida de páginas y proceso de prueba de páginas breves.

2. Gemelo digital

Los gemelos digitales se propusieron y desarrollaron por primera vez en el campo industrial, y luego se aplicaron a la digitalización de edificios y ciudades, y luego se adoptaron en todos los ámbitos de la vida. El gemelo digital conecta el mundo físico con el espacio digital para el mapeo y la retroalimentación. Los gemelos digitales involucran una amplia gama de tecnologías, que incluyen principalmente tecnología IoT (para digitalizar el mundo físico y retroalimentar el espacio digital al mundo físico), modelado de datos (construir un gemelo en el espacio digital), visualización 3D (transformar el mundo digital). espacio en gemelos), GIS y BIM (estableciendo un sistema de coordenadas consistente en el espacio digital), etc.

En los últimos 30 años, la visualización y la tecnología de interacción con el usuario, desde la etapa inicial para resolver los problemas más básicos de efecto de representación, rendimiento y usabilidad, para formar gradualmente una solución sistemática y de alta eficiencia y herramientas de plataforma, lo que hace que la ingeniería de desarrollo de software gaste menos. y menos mano de obra en visualización e interacción con el usuario y más en el negocio del software en sí. Gracias al desarrollo continuo del motor de interacción de la interfaz gráfica y el avance de la tecnología de inteligencia artificial, las máquinas realizarán cada vez más trabajo de visualización e interacción del usuario en el futuro y, finalmente, se logrará el desarrollo de código cero.

En mi práctica en los últimos años, nuestro equipo aprovechó al máximo el avance de la visualización y la tecnología de interacción del usuario, construyó un modelo gemelo y una plataforma de desarrollo de código bajo en el sistema operativo IoT del conjunto de instrucciones. Un beneficio directo de esto es que para cada escenario de usuario, siempre que el dispositivo esté conectado, naturalmente se convierte en parte del modelo gemelo, participa en el modelo comercial y se puede mostrar en la interfaz visual. Este enfoque puede mejorar en gran medida la eficiencia digital de los escenarios de IoT.

Predicción del progreso tecnológico en la programación

Después de revisar los importantes avances en la tecnología de programación durante las últimas tres décadas, también miramos hacia el futuro. Lo describo en términos de lo que es probable que suceda en los próximos diez años:

  • La ruta de desarrollo del sistema operativo entrará en una nueva pista: el sistema operativo de la industria.

La esencia del sistema operativo de la industria es aprovechar las partes comunes de la industria para formar un sistema de software que se pueda copiar en el entorno informático del hardware con una similitud significativa en la industria. Los ejemplos típicos son los sistemas operativos de automóviles y los sistemas operativos de edificios inteligentes. Solo los escenarios de la industria que pueden abstraer el entorno informático del hardware y los requisitos comunes pueden formar un sistema operativo de la industria.

Fuente: CSDN descargado de Oriental IC

  • Habrá grandes avances en inteligencia artificial, y estos avances tendrán cambios profundos en la producción y la vida humanas.

La oportunidad de esta ronda para promover el desarrollo de la inteligencia artificial es que varios campos de investigación básica han logrado grandes avances en el uso del poder de cómputo. Los investigadores en los campos de la biología, la medicina, los materiales, la astronomía y la geografía tienen una comprensión más profunda de lo que se puede hacer con la potencia informática y los algoritmos. AlphaFold es un ejemplo, el modo se puede extender a otras áreas.

  • Un espacio público gemelo digital.

Muchas instalaciones y equipos públicos están abiertos en el espacio del gemelo digital y se puede acceder a ellos mediante la red pública a través de una URI, que constituyen un espacio público del gemelo digital. Después de diez años, el acceso al dispositivo es muy conveniente.Si el firewall de la red local no restringe un dispositivo, el dispositivo se convertirá en un nodo en el espacio público del gemelo digital después del acceso. A partir de este espacio público de gemelos digitales, también nacerán algunas aplicaciones y servicios. El espacio gemelo digital público corresponde al espacio gemelo digital privado de cada organización.

  • En China, la cantidad de personas que escriben código alcanza su punto máximo después de 2 o 3 años y disminuye en un orden de magnitud después de 10 años.

En los últimos dos años, la digitalización industrial se ha promovido por completo, y todo comenzó a partir de los requisitos de las aplicaciones, lo que inevitablemente llevará a una gran cantidad de personal a realizar funciones de aplicaciones, incluidas diversas tareas de ingeniería y visualización de datos. Con la mejora de las herramientas del sistema y el retorno a la racionalidad de la construcción digital, las oportunidades para los programadores se reducen. El nacimiento y la popularización de buenas herramientas eliminará muchos puestos de trabajo. Por supuesto, la profundización de la digitalización también traerá nuevas oportunidades para la codificación, lo que depende de quién tenga una gran capacidad para volver a aprender.

  • Nació un lenguaje de programación basado en chino para la definición de la lógica de la capa de aplicación.

Este lenguaje de programación nació de una industria y es aplicable a muchas más industrias. Combinado con la PNL y otras tecnologías de inteligencia artificial, se espera que la programación universal en nuestro país se haga realidad.

Las predicciones anteriores son el pensamiento de un programador, y algunas de ellas también conllevan mis deseos personales, o incluso la continuación del trabajo que estoy haciendo actualmente, o las metas que espero lograr. Desde esta perspectiva, estas predicciones son demasiado realistas y no lo suficientemente escandalosas.

Epílogo

Finalmente, menciono dos principios fundamentales detrás del desarrollo de programas informáticos y técnicas de programación:

  • A medida que los escenarios de uso y el alcance de los programas informáticos se vuelven más y más amplios, los medios básicos para adaptarse a esta expansión de amplitud son las capas, es decir, agregar capas;

  • En la estructura jerárquica de un sistema informático, cuanto menor es el nivel, mayor es la capacidad de proporcionar elementos comunes, por el contrario, cuanto mayor es el nivel, más individualizado es.

Con la promoción generalizada de la digitalización industrial, el sistema operativo industrial es un nuevo nivel, y hay un sistema operativo técnico más abstracto bajo el sistema operativo industrial. El llamado progreso de la tecnología de programación de computadoras es hacer que el nivel y la división del trabajo tiendan a ser razonables de acuerdo con este principio.

Este artículo revisa la evolución de los programas informáticos en los últimos 30 años desde las perspectivas de la pila de software, la red, la inteligencia artificial y la visualización y la interacción del usuario, lo que corresponde a algunas ideas de mi carrera de programación de 30 años. Esperando el progreso continuo de la tecnología de programación informática en los próximos diez años, abriendo una mejor vida y experiencia para los seres humanos.

Sobre el autor: Pan Aimin, fundador y presidente del conjunto de instrucciones, arquitecto jefe del reactor digital de computación inteligente del Laboratorio de Zhijiang. Ha estado involucrado en la investigación y el desarrollo de software y tecnología de sistemas durante mucho tiempo. Ha escrito una gran cantidad de artículos sobre tecnología de software, ha traducido muchos libros clásicos de informática y ha publicado más de 30 artículos en revistas académicas nacionales y extranjeras. Solía ​​​​enseñar en la Universidad de Pekín y la Universidad de Tsinghua (a tiempo parcial), y luego ingresó al mundo industrial y trabajó en Microsoft Research Asia, Shanda Network y Alibaba. Sus principales intereses de investigación incluyen sistemas operativos móviles, seguridad de la información, big data, Internet móvil, Internet de las cosas y ciudades inteligentes.


El " Nuevo programador 001-004 " está completamente listado, dialoga con maestros de clase mundial e informa sobre innovación y creación en la industria de TI de China.

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/programmer_editor/article/details/123741004
Recomendado
Clasificación