Cuando dice "desarrollo integrado", tenga en cuenta que debe tener en cuenta la escala del proyecto.
Al programar algo en la escala de un microcontrolador o el firmware de un ASIC, usted tiende a ver que C y el conjunto dominan la escena. Los desarrolladores integrados tienden a "especializarse" en estos lenguajes, ya que los compiladores están disponibles para casi todas las plataformas de destino integradas. Si su proyecto migra de, digamos, un chip con un núcleo de PowerPC a un chip con un núcleo ARM, puede estar bastante seguro de que su código C no será demasiado difícil de sobrepasar. Algunos chips tienen compiladores disponibles para otros idiomas, pero normalmente no coinciden con el compilador de C en términos de eficiencia del binario resultante. Como los sistemas integrados a menudo tienen pocos recursos, los diseñadores del sistema quieren que su código sea lo más eficiente posible (también es una de las razones por las que se ve mucho código de lenguaje ensamblador). He visto herramientas de desarrollo disponibles para lenguajes como C++, Pascal, Basic y otros, pero generalmente son herramientas de nicho que no son lo suficientemente maduras para igualar la eficiencia de los compiladores de C disponibles. Las herramientas de depuración para estos idiomas también tienden a ser más difíciles de encontrar que las disponibles para C/assembly.
También mencionó decodificadores. Los sistemas integrados en esta escala pueden incluir la potencia equivalente de una computadora de escritorio desde hace 7-8 años. Su RAM disponible, espacio de almacenamiento y poder de procesamiento les permite ejecutar sistemas operativos e intérpretes con todas las funciones para idiomas de más alto nivel. En estos sistemas más potentes, aún verá C y el lenguaje ensamblador que se está utilizando (para el código del controlador, sino nada más), pero otros idiomas (como Java, Lua, Tcl, Ruby, etc.) se están volviendo más y más comunes. El uso de lenguajes interpretados hace que el código de transferencia de una plataforma a otra sea aún más fácil, siempre que la plataforma tenga recursos suficientes para manejar la sobrecarga del intérprete de idiomas. Cualquier código de bajo nivel que se conecte directamente con el hardware (controladores) aún usa normalmente ensamblaje o C ya que los lenguajes de alto nivel no siempre tienen la capacidad de hacer este tipo de cosas. Cualquier cosa que se ejecute como una aplicación en la parte superior del sistema operativo incorporado generalmente se puede desarrollar y probar dentro de un emulador o máquina virtual, por lo que verá que se desarrollará una gran cantidad de código en cualquier idioma que el desarrollador se sienta cómodo.
Versión TLDR: C es popular porque es un lenguaje versátil con el que casi todos los desarrolladores están familiarizados. El ensamblaje es popular porque permite el acceso a hardware de bajo nivel de maneras que de otro modo serían difíciles o imposibles. Los lenguajes interpretados/con guiones, como Java, son cada vez más populares, pero los requisitos de recursos de los intérpretes para estos idiomas pueden ser demasiado para algunos sistemas integrados. La calidad y la variedad de disponibilidad de herramientas de desarrollo/depuración para los lenguajes C y ensamblador también hacen que estas opciones sean atractivas.
+1. No entiendo por qué alguien votaría por esto, y mucho menos marcarlo como ofensivo. Supongo que quieren que te quedes con C :) –
No reaccionaría de esta manera. Solo déjalo cambiar a gris. – Svante
lol, otra marca ofensiva. Algunas personas tienen sus bragas en un montón. –