¿Hay dispositivos programables disponibles para lenguajes más modernos?

5

Perdone mi ingenuidad, pero parece que la mayoría de los dispositivos programables (FPGA, PLC, PIC, etc.) son programables usando los lenguajes C o C ++, o una variante de uno de estos. ¿Hay algún dispositivo por ahí que use algo como D, Mozilla Rust o Google Go? Me doy cuenta de que los dos últimos, especialmente, son lenguajes inmaduros; Pero seguramente alguien, en algún lugar, ha lanzado un producto experimental.

¿Alguien tiene alguna sugerencia?

    
pregunta arussell84

9 respuestas

14

No necesita diferentes dispositivos para usar estos idiomas, solo necesita el sistema de software adecuado.

Los principales problemas por los que esto no se hace con más frecuencia son:

  • Estos idiomas generalmente necesitan más recursos (memoria, tiempo de ejecución) para la misma tarea. Para grandes volúmenes, el menor esfuerzo en la programación sería más que compensado por los mayores costos de hardware.

  • La mayoría de los idiomas de nivel superior necesitan una asignación de memoria dinámica con recolección de basura, lo que es difícil de hacer en una configuración en tiempo real.

  • Es más difícil conseguir desarrolladores integrados para estos idiomas.

Dicho esto, hay cosas como Java en tiempo real , que se utilizan en sistemas embebidos reales .

    
respondido por el starblue
4

Hay proyectos de código abierto que trabajan en tales objetivos. Hay un proyecto para Ada en las MCU de Atmel (aunque no pude hacerlo funcionar). Uno de mis compañeros de trabajo está programando su MCU 68HC11 con una versión reducida de Ruby en el que ha estado trabajando en sí mismo. Y hay una compañía, BlueSpec, que tiene un nuevo HDL para FPGA / ASIC que se basa en Haskell. Pero no es una herramienta a la que la mayoría tendría acceso.

Los proveedores tienden a quedarse con C porque hay una gran audiencia para C y es ampliamente aceptado. Del mismo modo, para FPGAs / PLDs, VHDL / Verilog son ampliamente aceptados y probados. En lugar de tener que admitir muchos idiomas diferentes, la mayoría prefiere centrarse en sus chips, intentando mejorar el rendimiento de sus compiladores de C y ofrecer mejores herramientas para configurar y administrar recursos en sus chips. Yo mismo estoy de acuerdo con este enfoque. Prefiero que Texas Instruments mejore sus herramientas para configurar periféricos avanzados en sus chips que la implementación de metaprogramas de plantillas avanzadas en su compilador de C ++ mínimo.

    
respondido por el Dr. Watson
3

Estás perdonado.

La razón por la que C, y menos C ++, (entre otros lenguajes como VHDL) se usa para este tipo de dispositivos es que es fácil de traducir desde las construcciones de lenguaje al hardware subyacente. C se considera lingua franca, es comprendido por muchos y para portar un nuevo idioma al dispositivo, especialmente si la lectura / escritura de los registros es incómoda, no vale la pena el esfuerzo si el idioma no es mucho mejor para expresar construcciones útiles.

Los ejemplos que usa como lenguajes más nuevos y brillantes, D, por ejemplo, podrían ser candidatos para un lenguaje de "bajo nivel" si más programadores lo usan. D se promociona como el C ++ moderno sin todo el compromiso con C e implementado desde el principio. Lamentablemente sin todas las librerías de C ++. Creo que puedes llamar C libs desde D.

La pregunta no es si es más nueva, la pregunta es si son mejores herramientas. Por lo que veo, no es el caso.
editar
Cuando escribí código incrustado (en C) deseé mejores macros / plantillas de las que C puede ofrecer. Como es una construcción de tiempo de compilación, realmente no tiene nada que ver con el hardware subyacente. Pero mucho más complicado de implementar en un compilador.

    
respondido por el Gorgen
2

Los dispositivos han sido diseñados para utilizar otros idiomas de manera eficiente, como LISP / Scheme, Forth y Java. No creo que ninguno haya sido diseñado para los idiomas que mencionó, tal vez no sean adecuados para sistemas integrados (aparte de D, que debería ejecutarse de manera eficiente en cualquier cosa diseñada para C / C ++). Podrían, presumiblemente, implementarse en cualquier MCU adecuada, si alguien lo deseara.

    
respondido por el Leon Heller
2

Siempre hay netduino , que te permite codificar en .NET.

    
respondido por el jamesotron
2

Eche un vistazo a Micro Python enlace

  

Micro Python es una implementación ágil y rápida de Python 3   lenguaje de programación que está optimizado para ejecutarse en un microcontrolador.   La placa Micro Python es una pequeña placa de circuito electrónico que funciona   el lenguaje Micro Python.

Fue financiado exitosamente como un inicio de arranque proyecto en diciembre de 2013 y tener un tablero de referencia.

    
respondido por el Peter Gibson
1

Estás buscando un microprocesador. Intel los vende, al igual que AMD y ARM. Puedes usar cualquier lenguaje de programación en estos dispositivos.

En cuanto a los FPGA: su elección de idiomas es limitada. Esto se debe a que necesita una herramienta de síntesis que traduzca su código a una lista de redes. Además de VHDL, Verilog y (restringido C), puede usar idiomas más modernos como MyHDL (creado en Python) o Bluespec (similar a Haskell).

    
respondido por el Philippe
1

Primero, sus ejemplos son dispositivos pequeños que tienen un conjunto limitado de recursos, luego los idiomas antiguos que están cerca del hardware como c y vhdl hacen bien el trabajo.

Los nuevos lenguajes "geniales" necesitan más recursos para funcionar bien, así que supongo que lo que está buscando llegará pronto, ya que la MCU se está volviendo más poderosa con el tiempo.

Lo que quiero decir es que la mayoría de los MCU: s todavía están programados en C, y el tipo genial acaba de comenzar a jugar con C ++ en esos dispositivos.

Pero si observa la MCU basada en ARM de 32 bits que tiene muchos más recursos que las antiguas unidades de 8 bits, puede encontrar proyectos locos como eLua , que intenta ejecutar el lenguaje de script lua en un mcu basado en Cortex-M3 ...

Llegaremos allí, pero nos llevará un par de años más. Y no creo que ninguno de esos locos proyectos esté listo para su uso en producción (todavía), pero algunos de ellos lo estarán ya que es más rápido desarrollarse en idiomas con un mayor nivel de abstracción.

    
respondido por el Johan
1

Hay una aplicación de prueba de concepto que se ejecuta bajo Rust en los microcontroladores ARM STM32F4xx. Los cambios sorprendentemente menores necesarios para port Rust están disponibles en esta bifurcación de Rust .

    
respondido por el Kuba Ober

Lea otras preguntas en las etiquetas