Con los sistemas embebidos basados en microcontroladores de 8 y 16 bits, todo se reduce a que es más fácil desarrollar software que pueda adaptarse a los recursos limitados de estas limitaciones de almacenamiento muy modestas (quizás unos pocos bytes de RAM para microcontroladores de 8 bits de gama baja, con 2-8 KiB de ROM o EPROM / Flash para almacenamiento de código).
En esos casos, los lenguajes pequeños como C o ensamblaje tienden a ser los lenguajes de desarrollo más utilizados. Como una comparación relativa muy aproximada, un ensamblador completo y un compilador C99 pueden caber en un solo disquete, mientras que usted necesita varios MiB para un moderno sistema de desarrollo de C ++ (con STL, etc.).
Cuando busca micros de gama alta (de gama alta de 16 bits, y en su mayoría de 32 bits, con 64 bits bastante raros) y DSP en entornos integrados, las restricciones se debilitan y el desarrollo de software puede constituir la mayor parte del esfuerzo de desarrollo, por lo que tiene sentido utilizar las herramientas de desarrollo más productivas, incluidos lenguajes más avanzados con características como Object Lenguajes de programación orientada (OOP) como C ++ y lenguajes más nuevos (Java, Perl, Ruby, Python).
Es posible, en ensamblado y en C, predecir cuánta memoria se está utilizando, de modo que es posible un diseño con espacio limitado, pero las características avanzadas como las plantillas, el manejo de excepciones y el enlace en tiempo de ejecución hacen que sea imposible saber exactamente el Memoria de huella necesaria para un programa estándar de C ++ por adelantado. No sé lo suficiente sobre MISRA C ++ , que es un subconjunto de C ++, para comentarlo.
Los lenguajes basados en máquinas virtuales que ejecutan byte-code (Java, Perl, Python) son menos maduros en la experiencia del desarrollador integrado, y como estos lenguajes están diseñados para aislar al programador del hardware particular, también hace que sea más difícil Sea consciente de las limitaciones y restricciones de dicho sistema de hardware integrado. Esto es un problema menor con los procesadores rápidos de 32 bits (por ejemplo, ARMv7) con MiB, si no GiB de RAM.
Todas las implementaciones de BASIC que conozco son bastante simplistas en cuanto a las características del lenguaje, y siguen siendo en gran parte fieles al legado de Dartmouth BASIC de los años sesenta. Esto significa que el lenguaje no tiene bibliotecas complejas en tiempo de ejecución ni manejo de excepciones, y un intérprete o compilador es bastante simple de escribir y también es pequeño en tamaño de archivo.
La mayoría de los microcontroladores tienen al menos un compilador BASIC disponible para él.
Espero que describa a grandes rasgos las razones por las que encontrará que C y el ensamblaje se utilizan principalmente en sistemas integrados más pequeños o más antiguos, y con las limitaciones de los sistemas incorporados de gama media a alta más nuevos, difieren solo ligeramente de una computadora personal de escritorio tradicional .