Red de conocimiento informático - Conocimiento informático - ¿Qué software se necesita para la integración?

¿Qué software se necesita para la integración?

1. Características de la programación en lenguaje de alto nivel para sistemas integrados

Con la expansión continua del alcance de aplicación de los sistemas integrados y la aplicación generalizada del sistema operativo integrado en tiempo real RTOS (sistema operativo en tiempo real), alta La programación en lenguaje de nivel se ha convertido en una parte importante de los sistemas integrados y es una tendencia inevitable en el diseño de sistemas. Debido a que el lenguaje ensamblador está estrechamente relacionado con la estructura de hardware del microprocesador específico, tiene poca portabilidad, no es adecuado para su uso en sistemas complejos y no es fácil de reutilizar el software, mientras que el lenguaje de alto nivel tiene buena versatilidad y un rico soporte de software, y Es fácil de promover. Por tanto, la programación en lenguajes de alto nivel tiene muchas ventajas.

(1) Gran versatilidad. Con el continuo desarrollo de la tecnología de microprocesadores, sus funciones son cada vez más específicas y cada vez hay más tipos de microprocesadores que tienen sus propios lenguajes ensambladores dedicados. Esto ha creado enormes obstáculos para los desarrolladores de sistemas, haciendo que la programación del sistema sea más difícil y la reutilización del software sea imposible, mientras que los lenguajes de alto nivel generalmente tienen menos conexión con la estructura de hardware de la máquina específica y los lenguajes de alto nivel actualmente populares; Tienen requisitos comunes para la mayoría de los microprocesadores. Muy buen soporte y buena versatilidad.

(2) Fácil de programar. Con la expansión continua del alcance de la aplicación de los sistemas integrados y la profundización de los niveles de aplicación, la escala del sistema es cada vez mayor, la estructura se vuelve cada vez más compleja y la dificultad de diseño es cada vez mayor. Los sistemas compuestos por múltiples microprocesadores se han vuelto comunes. En este momento, el uso de la programación en lenguaje ensamblador no solo requiere que los programadores estén familiarizados con el lenguaje ensamblador de todos los microprocesadores, sino que a medida que las tareas se vuelven cada vez más complejas, es extremadamente difícil implementar tareas a mayor escala en lenguaje ensamblador y lenguajes de alto nivel; Tiene un nivel semántico más alto y tiene un rico soporte de biblioteca de programas, por lo que es relativamente sencillo compilar programas más complejos. El uso de programación en lenguajes de alto nivel no solo puede acelerar el proceso de desarrollo del sistema y ahorrar mucho tiempo, sino que también facilita la depuración y el mantenimiento del sistema.

(3) Fácil de leer. Dado que el nivel semántico del lenguaje ensamblador es bajo, al leer un programa en lenguaje ensamblador, a menudo hay que gastar mucha energía analizando los "detalles", como por qué ciertos datos se transfieren a un determinado registro, por qué un determinado bit de bandera se cambia Borrar etc. Al centrarse en estos "detalles", a menudo se olvida la línea principal del programa. Por lo tanto, los programas en lenguaje ensamblador no solo son difíciles de escribir, sino también de leer. Estos problemas se pueden resolver muy bien utilizando lenguajes de alto nivel. Debido a que el nivel semántico de los lenguajes de alto nivel es mayor y el método de expresión está más cerca del pensamiento diario de las personas, algunas expresiones matemáticas se pueden expresar directamente en declaraciones, lo que hace que el programa sea más conciso y claro. Por tanto, el programa también es fácil de leer.

(4) Buena portabilidad. Dado que el lenguaje ensamblador está estrechamente relacionado con un microprocesador específico, un programa diseñado para un determinado microprocesador no se puede trasplantar directamente a otro microprocesador diferente, por lo que la portabilidad es deficiente, mientras que los lenguajes de alto nivel son todos Los microprocesadores son universales, por lo que el programa puede; se ejecuta en diferentes microprocesadores y tiene buena portabilidad. Ésta es la base para la reutilización del software.

(5) Buena mantenibilidad. Los programas en lenguajes de alto nivel suelen adoptar un diseño modular y las interfaces entre módulos son fijas. Por lo tanto, cuando ocurre un problema en el sistema, el problema puede localizarse rápidamente dentro del módulo y resolverse lo antes posible. Además, el diseño modular también favorece la expansión y actualización de las funciones del sistema.

(6) Admite directamente la gestión de interrupciones. Las interrupciones son los métodos de intercambio de información más importantes y comúnmente utilizados en los sistemas integrados. Por lo tanto, si el sistema de interrupción es flexible y si la función de interrupción es poderosa tiene un gran impacto en el rendimiento del sistema. En los lenguajes de alto nivel, generalmente existen potentes mecanismos de gestión de interrupciones para construir un sistema de interrupciones eficiente y flexible; en lenguaje ensamblador, los programadores generalmente necesitan programar su propia gestión de interrupciones. Esto no sólo aumenta la dificultad de la programación, sino que el efecto no es necesariamente bueno.

(7) Admite la reutilización del software. Debido a la extremadamente pobre portabilidad del lenguaje ensamblador, su reutilización de software se ve seriamente obstaculizada, mientras que el lenguaje de alto nivel tiene mayor versatilidad y portabilidad, lo que permite que los programas en lenguaje de alto nivel se utilicen en diferentes momentos, diferentes lugares, diferentes sistemas y diferentes; compartir entre ellos para lograr la reutilización del software. Esto no sólo puede mejorar la calidad del producto, acortar el ciclo de desarrollo y reducir los costos del producto, sino que también permite que el desarrollo de software se embarque en el camino de la formalización y la industrialización.

Modula-2 es un lenguaje de diseño de sistemas desarrollado por Nicklans Wirth a finales de los años 1970 basado en Pascal y Modula. Su principal objetivo es mejorar Pascal en términos de modularidad, programación de sistemas, coprocesamiento, etc. Modula-2 tiene potentes capacidades de verificación de tipos y un amplio soporte para funciones subyacentes. Modula-3 es un lenguaje de desarrollo de sistemas desarrollado y puesto en uso en 1988 por DEC (Digital Equipment Corporation) y ORC (Olivetti Research Center) basado en Modula-2. El objetivo era diseñar un lenguaje de programación de propósito general potente pero simple. Mejora Modula-2 en términos de coprocesamiento, programación orientada a objetos, recolección automática de basura y soporte para C y UNIX [6].

Hay muchos factores a considerar a la hora de probar si un idioma es apropiado. Los diferentes idiomas tienen sus propias características. Es difícil compararlos exhaustivamente. Además, las características de ejecución de cualquier idioma están estrechamente relacionadas con el entorno de ejecución, por lo que se deben tomar consideraciones integrales al elegir un idioma. Por conveniencia, dividimos el rendimiento del lenguaje en dos aspectos para analizar: rendimiento básico y rendimiento en ejecución.

(1) Rendimiento básico

El rendimiento básico de un lenguaje se refiere principalmente a las características inherentes del propio lenguaje, o características estáticas, es decir, las características de cada componente del idioma. No solo determina la usabilidad, aplicabilidad y confiabilidad del lenguaje, sino que también afecta el resultado del desarrollo, la portabilidad, la mantenibilidad y la seguridad de la aplicación. Es el núcleo y la piedra angular del lenguaje. El rendimiento básico del lenguaje se examina principalmente desde los siguientes aspectos: interfaz con lenguaje ensamblador/máquina, direccionamiento directo, control de hardware, operaciones de bits, procesamiento de interrupciones, operaciones de puntero, soporte y detección de tipos de datos, soporte y detección de estructuras de control, soporte modular. , soporte de compilación independiente, soporte de estructura de tareas, manejo de eventos de excepción, soporte de modelos matemáticos, sintaxis y estructura general, soporte de tareas múltiples

(2) Rendimiento en tiempo de ejecución

Idioma El rendimiento en tiempo de ejecución se refiere a las características de comportamiento de la aplicación cuando realmente se ejecuta, que son las características dinámicas del lenguaje. Tiene un fuerte impacto en la aplicabilidad, utilidad y usabilidad del lenguaje. Se refleja principalmente en varios aspectos, como la configuración de la duración de la tarea, la evaluación simple del tiempo de ejecución del código, la selección de estrategias de programación y el soporte de análisis de tiempos. Porque el rendimiento de ejecución de un lenguaje está estrechamente relacionado con el entorno de ejecución, como la velocidad de la CPU, el tamaño de la memoria, la velocidad del disco duro, el sistema operativo, el entorno de compilación, etc. Por lo tanto, la evaluación del desempeño lingüístico debe estar vinculada al entorno de aplicación específico, y cualquier evaluación teórica tiene poca importancia práctica. Por lo tanto, este artículo no discutirá este aspecto.

3. Rendimiento básico de los lenguajes de programación de alto nivel comúnmente utilizados en sistemas embebidos

El rendimiento básico de un lenguaje es el elemento básico del lenguaje y el factor clave que determina el desempeño de la lengua. Por tanto, es muy necesario estudiar detenidamente el funcionamiento básico del idioma. El siguiente es un breve análisis y comparación del rendimiento básico de los populares lenguajes de programación de sistemas integrados mencionados anteriormente [7].

(1) Interacción con lenguaje ensamblador y código de máquina

En el lenguaje Ada, el acceso al lenguaje ensamblador y al código de máquina se puede lograr a través de funciones de subrutina. El paquete estándar MACHINE-CODE admite esta funcionalidad. En C, el lenguaje ensamblador se puede definir como un módulo asm integrado en el código fuente de C, o se puede escribir como un proceso externo independiente que se comunica con llamadas a funciones. Las macros también se pueden utilizar para proporcionar operaciones en lenguaje ensamblador. El lenguaje en sí no proporciona un mecanismo para esto, está respaldado por el compilador.

(2) Direccionamiento directo

Ada aborda direcciones absolutas a través de la clase Dirección en el paquete SISTEMA; C/C aborda direcciones absolutas a través de punteros, y el direccionamiento de memoria se puede realizar en C. Esto se realiza mediante operaciones Peek and Poke; Modula-2 admite direccionamiento absoluto a través del módulo SISTEMA.

(3) Acceso y control del hardware

Ada asigna el código Ada a dispositivos específicos a través de cláusulas de expresión; C/C opera en el hardware a través de punteros en Modula-2, el dispositivo se identifica; como un objeto con una dirección absoluta, al que se accede a través de una declaración de asignación.

(4) Operaciones de bits

Ada puede especificar bits específicos en la cláusula de expresión, o puede combinar varios bits independientes en una palabra lógica y utilizar operaciones lógicas para procesarlos. Las operaciones de bits son la fortaleza del lenguaje C. Las operaciones lógicas y las operaciones de desplazamiento pueden implementar operaciones de bits; en C, se pueden lograr más funciones de operación de bits definiendo la estructura de "campos de bits" Modula-2 usa la estructura "SET" para manejar los bits; operaciones. Para aplicaciones integradas, la estructura más útil es la estructura "BITSET", que puede implementar convenientemente varias operaciones de bits.

(5) Procesamiento de interrupciones

Ada implementa el procesamiento de interrupciones a través de tareas de procesamiento de interrupciones. Las tareas de interrupción están estrechamente relacionadas con los vectores de interrupción. La dirección de entrada de la tarea de interrupción se almacena en la dirección del vector de interrupción. El lenguaje C/C en sí no proporciona un mecanismo estándar de manejo de interrupciones, por lo que los usuarios pueden manejarlo ellos mismos. Modula-2 implementa el manejo de interrupciones a través del proceso IOTRANSFER en el módulo SISTEMA. Los usuarios también pueden escribir sus propios controladores de interrupciones.

(6) Punteros

Los tres lenguajes proporcionan potentes operaciones de puntero.

(7) Detección de tipos de datos

Ada tiene un mecanismo estricto de detección de tipos de datos, que prohíbe los tipos mixtos y permite la conversión de tipos de datos, pero tiene especificaciones estrictas de detección de tipos de datos en lenguaje C; Débil, pueden ocurrir errores durante la conversión de tipos de datos, C ha sido mejorado; Modula-2 tiene una detección estricta de tipos de datos y no permite una conversión de tipos de datos inequívoca. Modula-2 tiene una verificación estricta de tipos de datos y no permite conversiones de tipos de datos ambiguas.

(8) Estructura de control del programa

Ada proporciona una estructura de control de programa estricta, admite bifurcaciones, bucles y otras funciones, y también admite transferencias incondicionales. C / C proporciona ramas y estructuras de control; como los bucles son convenientes y flexibles, pero debe tener cuidado de evitar factores inseguros al usarlos. Modula-2 tiene un control muy estricto sobre ramas y bucles, pero debe tener cuidado de evitar factores inseguros al usar la estructura CASE-ELSE. Lo que se debe tener en cuenta sobre la estructura CASE-ELSE es que al transferir incondicionalmente, use EXIT para salir del bucle y RETURN para finalizar el proceso. Debe tener más cuidado al usarlo.

(9) Estructura del módulo y compilación independiente

Las unidades básicas de los programas Ada son subprogramas, paquetes, tareas y genéricos, mientras que las unidades básicas de compilación son subprogramas y paquetes. se puede compilar de forma independiente, tener una verificación de tipo estricta y no tener un área de datos común. La unidad básica de un programa en C es una función. Las variables externas son variables globales y las variables internas son variables locales. Un programa en C es una colección de varios archivos compilados. Cada archivo puede definir clases, funciones, variables globales y otros tipos. ser independiente. El programa principal de Modula-2 consta de varios módulos de programa y módulos de biblioteca. El módulo de programa es la unidad de nivel más alto del programa. El módulo del programa es el nivel más alto de la unidad del programa y cada módulo se puede compilar de forma independiente.

(10) Manejo de excepciones

Ada proporciona un mecanismo completo de manejo de errores que puede manejar las excepciones causadas por el lenguaje en sí y los usuarios; C/C no proporciona un mecanismo de manejo de excepciones directo. Debe ser manejado por el usuario; C (V3.0) proporciona manejo directo de excepciones; PIM Modula-2 no proporciona manejo de excepciones, pero no proporciona una función de manejo de excepciones. C (V3.0) proporciona manejo directo de excepciones; PIM Modula-2 no proporciona manejo de excepciones, pero algunos otros sistemas de compilación proporcionan mecanismos de manejo y detección de errores en tiempo de ejecución.

(11) Soporte de estructura de tareas

La "tarea" es una parte integral del estándar del programa Ada y una parte integral e importante del lenguaje; no existe una "tarea" independiente; la estructura del lenguaje C, pero se puede implementar a través de "funciones" en C, Modula-2 no tiene una estructura de "tarea" independiente; estructura; PIM Modula-2 no proporciona manejo de excepciones, pero algunos otros sistemas de compilación proporcionan mecanismos de manejo y detección de errores en tiempo de ejecución. No existe una estructura de "Tarea" independiente en Modula-2, pero se puede implementar como una estructura "PROC".

(12) Soporte de modelos matemáticos

Ada proporciona un buen soporte para modelos matemáticos No importa en qué microprocesador se ejecute el programa, el comportamiento del programa será estrictamente verificado; admite aritmética de punto fijo y punto flotante. Sin embargo, el modelo matemático no es perfecto y puede conducir fácilmente a algunos comportamientos indefinidos, como la división por 0 o desbordamientos superior e inferior. El modelo matemático de PIM Modula-2 está asociado con el entorno de ejecución, y el nuevo estándar está mejorando el; entorno de ejecución.

(13) Gramática y estructura

Ada tiene una estructura y gramática de estilo inglés y el programa es fácil de leer y comprender. C/C es un lenguaje conciso (conciso). y el programa es difícil de leer. Más difícil de leer. La estructura del lenguaje Modula-2 está claramente definida y el programa es fácil de leer.

(14) Soporte multitarea

El soporte multitarea es una característica importante del lenguaje Ada y una parte integral del mismo. C/C no admite multitarea; Modula-2 pasó Mecanismos como "Coroutines" que admiten la multitarea.

(15) Biblioteca estándar

Ada tiene una rica biblioteca de funciones básicas; C/C tiene una biblioteca de programas muy rica, pero se debe prestar atención a la compatibilidad en la aplicación Modula-2; tiene Hay programas de biblioteca relativamente ricos, pero también se debe prestar atención a la compatibilidad.

(16) Soporte de estructura OOP

Ada83 es ​​un lenguaje OOP, Ada95 ha sido mejorado; C no admite OOP, C tiene características sólidas de OOP; , Modula-3 admite programación orientada a objetos.

4. Acerca de Java

El lenguaje Java es el primer lenguaje Java. Sun Microsystems lanzó el lenguaje de programación orientado a objetos en Internet en 1995. Su desarrollador principal es Gosling, y su objetivo es diseñar un sistema de lenguaje que pueda ejecutarse en un entorno de red heterogéneo distribuido geográficamente a gran escala para completar la comunicación y el trabajo colaborativo entre múltiples dispositivos electrónicos. Gosling utilizó código de máquina virtual (código de máquina virtual) en su diseño, que es un intérprete generado por la compilación del lenguaje Java que se ejecuta en una máquina virtual para interpretar programas compilados por el compilador de Java. Esto convierte a Java en un lenguaje informático independiente de la plataforma, lo que significa que las aplicaciones Java pueden ejecutarse en diferentes plataformas de hardware y software sin modificaciones. Por lo tanto, se implementó "Escribir una vez, ejecutar en cualquier lugar", lo que hizo que el lenguaje Java rápidamente se popularizara en todo el mundo. Algunos incluso dicen que esto es una revolución [8].

(1) Características de Java

Java es un lenguaje de red, pero no se limita a este. En los últimos dos años, el lenguaje Java se ha desarrollado rápidamente y se ha utilizado ampliamente en muchos campos. Esto muestra que Java tiene características distintas.

En primer lugar, Java es simple.

Elimina algunas cosas que no son absolutamente necesarias para los lenguajes de alto nivel, como la sobrecarga de operadores, archivos de encabezado, aritmética de punteros, conversión de tipos implícita, herencia múltiple, etc., y simplifica enormemente el trabajo de administración de memoria del programador mediante la recolección automática de basura, lo que hace que Programación simplificada.

En segundo lugar, Java está orientado a objetos. El diseño del lenguaje Java se centra en los objetos y sus interfaces, y proporciona un mecanismo de clase simple y un modelo de interfaz dinámico. El objeto encapsula sus variables de estado y sus métodos correspondientes, logrando modularización y ocultación de información; mientras que la clase proporciona el prototipo de un tipo de objeto, y a través del mecanismo de herencia, las subclases pueden usar los métodos de la clase principal, logrando la reutilización del código.

En tercer lugar, la arquitectura de Java es neutral. En términos generales, una red está compuesta por máquinas con diferentes arquitecturas, diferentes CPU y estructuras de trabajo. Es muy difícil hacer que una aplicación se ejecute en máquinas de diferentes arquitecturas; sin embargo, el compilador de Java puede generar un formato de archivo de objeto de estructura neutral que permite que el código compilado se ejecute en diferentes procesadores.

En cuarto lugar, Java es robusto; Java comprueba posibles problemas al compilar y ejecutar el programa para evitar errores. Cuando ocurre una excepción en un programa, Java la descarta para garantizar que el sistema informático no falle.

En quinto lugar, Java es seguro. Java no admite operaciones de puntero, lo que evita todos los inconvenientes asociados con las operaciones de puntero. Java tiene varios tipos de protección entrelazada (entrelazada) que pueden prevenir eficazmente la intrusión de virus y el comportamiento destructivo. Los navegadores web utilizan la verificación de código de bytes para garantizar que los subprogramas no contengan virus.

En sexto lugar, Java es multiproceso. Java puede ejecutar varios subprocesos simultáneamente; por ejemplo, puede realizar cálculos mientras interactúa con el usuario en una conversación. Generalmente, escribir programas multiproceso es difícil, pero Java proporciona mecanismos de sincronización fáciles de usar que hacen que la programación sea cómoda y sencilla.

En séptimo lugar, Java es escalable; Java está diseñado para adaptarse a entornos en evolución. Se pueden agregar libremente nuevos métodos y variables de instancia a la biblioteca de clases sin afectar la ejecución del programa de usuario. Al mismo tiempo, Java admite herencia múltiple a través de interfaces, lo que lo hace más flexible y extensible que la herencia de clases estricta.

(2) Java y los sistemas integrados

Java es un lenguaje de red y los sistemas integrados tienen requisitos especiales en términos de funcionalidad, precio, tamaño, consumo de energía y tiempo de comercialización. Por lo tanto, el lenguaje Java está limitado por la velocidad y el volumen de código y no es adecuado para aplicaciones de sistemas integrados. Sin embargo, Sun no estaba dispuesto a renunciar a este mercado de aplicaciones con un enorme potencial de desarrollo. Después de mejorar Java, lanzó J2ME (Java2 Micro Edition). Es un subconjunto de la API de Java que contiene solo la funcionalidad principal de Java y está diseñado específicamente para sistemas integrados con memoria crítica. J2ME divide ampliamente las aplicaciones en dos categorías: dispositivos con memoria entre 128 KB y 512 KB y dispositivos con memoria superior a 512 KB, y proporciona diferentes interfaces de usuario y paquetes de software según las diferentes categorías.

Sin embargo, debido a la particularidad de los sistemas integrados, algunas cosas que se consideran características excelentes en el lenguaje Java se han vuelto muy problemáticas en los sistemas integrados. Por ejemplo, Java tiene dificultades para controlar el hardware directamente debido a la falta de direccionamiento del puntero y las características de seguridad de ejecutar en modo Máquina Virtual Java impiden que las aplicaciones tomen decisiones en tiempo real, es decir, procesen dentro de una duración predecible y repetible; de tiempo. fragmento de código específico. De hecho, Java detiene la ejecución de toda la aplicación mientras realiza la recolección de basura, por lo que los desarrolladores tienen poco control sobre el momento de la recolección de basura. Afortunadamente, estos problemas se han resuelto o se están resolviendo. Tanto los programas compiladores justo a tiempo como los de anticipación pueden mejorar la velocidad de ejecución del código Java.

Por ejemplo, Real Time Executive de New Monic y Fast J de WindRiver garantizan hasta cierto punto tiempo absoluto para el desarrollo de aplicaciones de toma de decisiones.

Por otro lado, para soportar mejor Java desde el hardware, muchos fabricantes están comprometidos con el desarrollo de chips Java para aprovechar al máximo las características compactas y flexibles del Java integrado y abrir las posibilidades integradas. mercado. Por ejemplo, HP está desarrollando y mejorando sus propias herramientas de compilación y su máquina virtual Java. El objetivo es integrar Java en dispositivos como impresoras, monitores médicos y cajeros automáticos, de modo que los dispositivos tengan un cierto grado de inteligencia, aumenten la manejabilidad y disponibilidad de los dispositivos y mejoren en gran medida la eficiencia del trabajo de los dispositivos. Sun afirma que proporcionará componentes API para cada campo en forma de perfiles en J2ME. Java TV es uno de los componentes API para la televisión digital bidireccional. Sun dijo que la tecnología Java TV proporcionará el entorno básico, la seguridad, la escalabilidad y la portabilidad necesarias para la televisión bidireccional. Con la tecnología Java TV, los desarrolladores pueden desarrollar contenidos y servicios de información más atractivos. Sun también anunció una asociación con General Motors para establecer estándares Java para la industria automotriz. Una vez que Java se convierta en el lenguaje informático estándar en la industria automotriz, agregará millones de usuarios. El año pasado, J2ME recibió toda la atención y una amplia aplicación en el campo de las comunicaciones inalámbricas. Esto se debe a que J2ME incluye una máquina virtual Java que se ejecuta en la mayoría de los dispositivos de consumo, una biblioteca de funciones API especializadas y herramientas para desarrollo y configuración. Por lo tanto, los fabricantes de teléfonos móviles han lanzado teléfonos móviles con acceso a Internet para que los usuarios puedan elegir.

En el sistema de control, Java permite que todas las operaciones se realicen en los paneles proporcionados por un navegador web estándar. Estos paneles de control son applets de Java que un navegador web puede utilizar para monitorear o configurar el sistema. Estas operaciones de monitoreo y configuración se pueden realizar de forma remota a través de la red, lo que facilita la gestión del sistema, especialmente los dispositivos ubicados en áreas peligrosas, remotas o inaccesibles que requieren la intervención de Java.

Java no es sólo un lenguaje, es una idea. Provocará cambios fundamentales en el desarrollo de software en términos de estilo de diseño, métodos de diseño, objetivos de diseño y procesos de diseño. Se convertirá en la base para la reimplementación del software, el núcleo de los futuros sistemas operativos y la plataforma de desarrollo y el entorno de implementación para diversas aplicaciones de software. Sin embargo, Java no es omnipotente. Tiene su propio ámbito de aplicación. Java es excelente en gestión de redes, aplicaciones de red, aplicaciones orientadas a objetos, operaciones visuales, aplicaciones interactivas, etc., pero en el campo del control en tiempo real. como control de cohetes, control de sensores, control de orientación de naves espaciales, etc. C o el lenguaje ensamblador siguen siendo las mejores opciones.

4. Resumen

En los últimos años, los lenguajes informáticos se han desarrollado muy rápidamente. Constantemente se producen nuevos lenguajes; los lenguajes populares se mejoran constantemente y se van perfeccionando gradualmente los lenguajes inadecuados; El desarrollo de los lenguajes informáticos presenta un escenario vibrante. Con el desarrollo de la tecnología integrada, los lenguajes de programación de alto nivel para sistemas integrados han recibido atención, formando gradualmente una situación en la que florecen cien flores y compiten cien escuelas de pensamiento. Todavía es difícil predecir quién será el lenguaje de programación principal para los sistemas integrados en el futuro. El lenguaje Ada está estrictamente definido, es fácil de leer y comprender y tiene un rico soporte de programas de biblioteca. Actualmente se usa ampliamente en defensa, aviación, aeroespacial y otros campos relacionados, y seguirá ocupando una posición importante en estos campos en el futuro. El lenguaje C tiene un amplio soporte de programas de biblioteca y actualmente es el lenguaje de programación más utilizado en sistemas integrados. Seguirá ocupando una posición importante en el campo de las aplicaciones de sistemas integrados en el futuro. C es un lenguaje de programación importante tanto en sistemas de PC como en sistemas de estaciones de trabajo. Visual C desempeñará un papel más importante en las interfaces gráficas de usuario (GUI). Sin embargo, el código objeto C suele ser grande y complejo, y este factor debe considerarse plenamente en las aplicaciones de sistemas integrados.

Modula-2 tiene una definición clara, un amplio soporte, una buena estructura modular y se usa ampliamente en la enseñanza y la investigación científica. El lenguaje Java es relativamente joven, pero su impulso de desarrollo es fuerte. Su función "programar una vez y utilizar en cualquier lugar" lo hace popular en muchos campos. Con el desarrollo continuo de la tecnología de red y la tecnología integrada, las aplicaciones de Java y Java integrado se generalizarán cada vez más.

En términos de funciones de tiempo de ejecución, el lenguaje Ada tiene un mejor comportamiento en tiempo de ejecución. Debido a que tiene menos contacto con el entorno de ejecución y el lenguaje en sí está estrictamente definido, su comportamiento en tiempo de ejecución es mejor. El comportamiento de ejecución de los programas en lenguaje C/C está estrechamente relacionado con el entorno de hardware y el sistema de compilación, por lo que pueden ocurrir más problemas inesperados. Los programas que se ejecutan en determinadas circunstancias en diferentes máquinas o en diferentes sistemas de compilación pueden producir errores. Por lo tanto, tanto C como C tienen varias páginas de comportamiento indefinido. Modula-2 también tiene un mejor comportamiento en tiempo de ejecución y aún se está mejorando. El lenguaje Java utiliza tecnología de máquina virtual para que su aplicación se ejecute independientemente de la plataforma de aplicación específica, por lo que tiene buenas características de tiempo de ejecución.

Aunque solo hemos discutido las características básicas de Ada, C/C y Modula-2, también hemos dado una breve introducción al lenguaje Java. Pero esto es suficiente para recordarnos que en el desarrollo y aplicación de sistemas integrados, debemos otorgar gran importancia a las ventajas de los lenguajes de alto nivel en la programación de sistemas integrados y seleccionar, investigar, desarrollar y aplicar racionalmente la programación de alto nivel. Lenguajes para sistemas embebidos que sean adecuados para nosotros. Esta no es solo la dirección futura del desarrollo y la aplicación de sistemas integrados, sino que también es de gran importancia para el desarrollo de la tecnología integrada en mi país.