Developpez.com - Systèmes embarqués

Le Club des Développeurs et IT Pro

Sondage : quels langages utilisez-vous pour le développement de systèmes embarqués en 2019 ? Et pourquoi ?

Partagez votre expérience

Le 2019-09-08 10:13:21, par Michael Guilloux, Chroniqueur Actualités
Quels langages utilisez-vous pour le développement embarqué ? Lors de notre dernier sondage, les langages les plus cités par les développeurs et IT pro de la communauté Developpez.com étaient d'abord C(47,14 %), C++(30,71 %), Assembleur (20,71 %) et Java (10 %). Python était au coude à coude avec .NET pour la 5e place, tous les deux ayant été votés par 7,14 % des répondants.

Arduino, le langage natif pour le microcontrôleur appelé du même nom n'est venu qu’à la 7e place avec 4,55 %, en dépit du fait que la carte Arduino est aujourd’hui la base d'un grand nombre de dispositifs de fabrication et de prototypage. Cela peut s’expliquer par le fait que le développement de systèmes embarqués Arduino n’est pas une exclusivité du langage natif de la plateforme. Il est en effet possible de programmer la carte Arduino en C/C++. Et vous le faites d'ailleurs déjà dès que vous utilisez le langage Arduino, puisqu'il est simplement un ensemble de fonctions C/C++ qui peuvent être appelées à partir de votre code. Votre sketch (nom donné aux programmes écrits pour Arduino) subit des modifications mineures (par exemple, génération automatique de prototypes de fonctions), puis est transmis directement à un compilateur C/C ++ (avr-g ++).

Pour les programmeurs confirmés, le langage C/C++ qui est traditionnellement utilisé pour programmer les microcontrôleurs peut être la solution la plus performante pour programmer une carte Arduino. Cela dit, on peut également vouloir utiliser un langage de programmation qu'on maitrise déjà pour ne pas avoir à apprendre un nouveau langage pour programmer la carte Arduino.

Si vous ne pouvez pas écrire du C/C++, il est possible d’utiliser un langage interprété soit directement sur la carte, soit sur un autre ordinateur qui communique avec Arduino. Il existe en effet quelques implémentations de langages interprétés pour l'Arduino, y compris plusieurs ports de Forth sur Arduino, un port de Tiny BASIC, PyMite (un sous-ensemble de Python), et un langage dédié appelé Bitlash. Ces langages peuvent être exécutés directement sur Arduino. Tout cela peut expliquer pourquoi le langage Arduino arrive à cette position dans le classement des langages les plus utilisés pour le développement de systèmes embarqués.


Sondage réalisé en 2017

Notre dernier sondage date toutefois de 2017, et en deux ans, beaucoup de choses peuvent se passer dans le monde de l'informatique, y compris dans celui de la programmation de systèmes embarqués. Par exemple, la plupart des langages de script dynamiques modernes ont la réputation d'être trop complexes pour tenir dans la RAM et la mémoire des programmes très limitées d'un microcontrôleur. Les langages qui entrent dans cette catégorie sont : Java, PHP, Perl, Batch, Shell, Ruby, JavaScript, TCL, Python. Mais aujourd'hui, la puissance de calcul des microcontrôleurs a fortement augmenté, ce qui permet par exemple à des versions embarquées de Python, telles que CircuitPython et MicroPython, de devenir de plus en plus populaires parmi ceux qui font du développement embarqué.

Il y a donc des changements qui s'opèrent actuellement dans les choix de langages pour la programmation de microcontrôleurs. Les deux derniers classements annuels de l'IEEE montrent par exemple que Python est le langage numéro un pour le développement de systèmes embarqués, alors qu'il n'était pas parmi les candidats juste un an plus tôt.


IEEE : Top 10 des langages les plus populaires pour le développement de systèmes embarqués

En France, qu'en est-il exactement ? La réalité est-elle la même que celle donnée par le classement de l'IEEE ? Ou le trio leader de 2017 (C, C++ et Assembleur) reste inchangé ? C'est ce que nous voulons savoir à travers vos votes. Quels langages utilisez-vous pour le développement de systèmes embarqués en 2019 ? Les langages à usage général comme C, C++, Python, Java, etc. ou les langages plus spécialisés, comme :

  • Arduino : le langage natif pour le microcontrôleur Arduino ;
  • LabView : créé par National Instruments pour l'acquisition de données et le contrôle industriel ;
  • VHSIC Hardware Description Language (VHDL) : un langage de description matériel utilisé dans la création et l'analyse de circuits électroniques ;
  • Ladder Logic : un langage de programmation destiné au développement de contrôleurs logiques programmables industriels ;
  • Erlang : langage créé par Ericsson pour les applications de téléphonie embarquées ;
  • Verilog : un langage de description matériel utilisé dans la création et l'analyse de circuits électroniques ;
  • Ada : à l'origine conçu pour le département de défense des États-Unis, il est utilisé pour des applications où la fiabilité est critique, comme les systèmes de contrôle aérospatial ;
  • TCL : un langage de script destiné au prototypage rapide et supportant l'interface utilisateur graphique Tk utilisée principalement avec les systèmes Unix ;
  • Forth : conçu à l'origine pour contrôler les radiotélescopes, il est toujours utilisé pour des applications telles que les boot loaders et d'autres firmwares ;
  • Scade : un langage pour l'embarqué critique. C'est le langage de modélisation de SCADE Suite, un environnement de développement intégré pour la conception de systèmes critiques.


Et vous ?

Quels langages utilisez-vous pour le développement embarqué ? Pourquoi ?
Lesquels préférez-vous ? Et dans quels domaines ?

Voir aussi :

Forum Systèmes embarqués
Rubrique Systèmes embarqués
Quels langages utilisez-vous pour le développement de systèmes embarqués en 2017 ?
Quels langages de programmation utilisez-vous pour Arduino ? Partagez votre expérience
  Discussion forum
7 commentaires
  • f-leb
    Responsable Arduino et Systèmes Embarqués
    Dans l'étude IEEE d'il y a deux ans, Python n'apparaissait même pas dans le top 14

    En deux ans seulement, ce serait micropython/circuitPython sur des micros 32 bits (les ESP32/8266) qui aurait raflé la mise sur tout un pan de secteur embarqué ?!!! Dingue...
  • sitexw
    Membre régulier
    Perso, Javascript sur l'ESP32/ESP8266/ESP01. Je suppose que c'est loin d'être la solution la plus performante, mais bon, pour allumer des lumières, activer des PINs, faire un mini serveur web ou encore faire des requêtes HTTP... Ça fait largement le job.

    Voilà les trucs type que je réalise (exclusivement du Javascript et Node.js) :
    - Détecteur de fuite d'eau, relié à IFTTT pour les alertes
    - Sonde de température, relié a Zapier pour insérer ça dans un Sheet
    - Détecteur d'ouverture de portail (Zapier + Google Sheet)
    - Allumer des bandeaux de led (IFTTT)
    - Je travaille aussi sur un traceur GPS avec transmission de la localisation par GSM

    Évidemment, si tous ça est réalisable en JS, on peut aussi le faire en MicroPython, Arduino, ...
  • kilroyFR
    Membre éprouvé
    C/C++ principalement.
    On a essayé .net mais on est vite revenu en arriere, un garbage collector qui fait du menage a un moment ou il faut pas; du code compilé just in time etait devenu impossible. On a donc laissé tombé. En C/C++ on maitrise vraiment tout et on ne passe pas notre temps a essayer de contourner le fonctionnement du framework .net sur certains points.
  • sergio_is_back
    Expert confirmé
    Selon le cas (et le matériel) : C/C++, Python et CodeTyphon (Pascal Objet) sur les plateformes Arm-Linux
  • 23JFK
    Membre expert
    Envoyé par f-leb
    Dans l'étude IEEE d'il y a deux ans, Python n'apparaissait même pas dans le top 14

    En deux ans seulement, ce serait micropython/circuitPython sur des micros 32 bits (les ESP32/8266) qui aurait raflé la mise sur tout un pan de secteur embarqué ?!!! Dingue...
    Il y a des calculatrices graphiques qui utilisent python comme langage de programmation. Ça et les universitaires qui ne jurent que par ce langage, ça aide à se construire une clientèle.
  • bizulk
    Membre confirmé
    OK, Arduino c'est pas un langage mais un framework C++, quand je vois des cours décrivant la syntaxe ou le manuel de référence il n'y a pas de doute.
    Donc on pourrait ajouter ce groupe au C/C++.

    Sinon de mon côté pour du RAD/tooling j'envisagerais sérieusement le uPython, pour les Soc comme l'ESP, ou les MCU de ST ça doit bien faire l'affaire.
  • Artemus24
    Expert éminent sénior
    Salut à tous.

    J'avais supposé que le langage est au plus près de la machine comme l'assembleur.
    Surtout pas un langage interprété comme python.

    Un microcontrôleur ne disposant pas énormément de mémoire, il est normal d'économiser les lignes d'instructions.
    Donc les langages un peu trop bavards sont à prescrire.

    Du coup, il ne reste plus grand chose comme langage sur des systèmes embarqués.
    Je suppose que la question de ce sondage est plus tournée vers ce que l'on aime faire et non les bonnes pratiques.

    Cordialement.
    Artemus24.
    @+