Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Quels langages utilisez-vous pour le développement de systèmes embarqués ?

Le , par Michael Guilloux

306PARTAGES

12  0 
Quels langages utilisez-vous pour le développement de systèmes embarqués ?
Quels langages utilisez-vous pour le développement embarqué ? Dans un sondage à choix multiples similaire lancé il y a quelques années, le langage C s’est avéré le plus utilisé par les répondants, avec plus de 60 %, suivi par le C++ avec 29,41 %. Le top 5 a été complété par le langage Assembleur (20,59 %), Ada (17,65 %) et .Net (11,76 %).


Sondage Developpez.com (2013) : Quel langage utilisez-vous pour le développement embarqué ?

Il faut noter que plusieurs langages de programmation se veulent dédiés à l’embarqué. Parmi ces langages se trouvent Ada et le langage assembleur, ce dernier restant encore un choix approprié pour les systèmes soumis à des contraintes sévères de temps réel. Des langages proches de la machine comme le C et dans une moindre mesure le C++ sont aussi utilisés ; ce qui justifie leur position dans le dernier sondage.

C et C++ confortent également leur place respective dans le dernier classement de l’IEEE des meilleurs langages pour les systèmes embarqués. On voit aussi d’autres langages tels que Arduino, Haskell, D, LabVIEW et VHDL qui sont bien classés.


IEEE 2016 : meilleurs langages pour le développement de systèmes embarqués

En dehors de certains langages populaires (à usage général) qui reviennent dans les deux classements, il peut être important de donner quelques précisions sur les différents langages :

  • Arduino : il s'agit du langage natif pour le microcontrôleur Arduino, qui est devenu la base d'un grand nombre de dispositifs de fabrication et de prototypage ;
  • LabView : créé par National Instruments, LabView est conçu pour l'acquisition de données et le contrôle industriel ;
  • VHDL : VHSIC Hardware Description Language (VHDL) est un langage de description matériel utilisé dans la création et l'analyse de circuits électroniques ;
  • Ladder Logic : il s'agit d'un langage de programmation destiné au développement de contrôleurs logiques programmables industriels ;
  • Erlang : créé par Ericsson pour les applications de téléphonie embarquées, la publication d'Erlang en tant que langage open source en 1998 a renforcé sa popularité parmi les programmeurs qui développent des applications qui doivent gérer de nombreuses tâches simultanées ;
  • Verilog : comme VHDL, Verilog (ou Verilog HDL) est 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, Ada est utilisé pour des applications où la fiabilité est critique, comme les systèmes de contrôle aérospatial ;
  • TCL : il s'agit d'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, Forth est toujours utilisé pour des applications telles que les boot loaders et d'autres firmwares ;
  • Scade : il s'agit d'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

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Ashkandie
Nouveau membre du Club https://www.developpez.com
Le 29/06/2017 à 10:37
Il faut voir ce que l'on appel embarqué, pour avoir travaillé pendant quelques années sur des systèmes embarqués, on codait uniquement en C ou en Assembleur. Les ressources mémoires étaient ridicules (de l'ordre de quelques Ko), et la fréquence mémoire très faible (quelques Mhz) donc de base tout ce qui est interprété on oublie. Si maintenant les RPi et autres cartes du même genre entrent dans la catégorie de l'embarqué, vu le proc et la mémoire dont on dispose, on peut faire comme bon nous semble.
9  0 
Avatar de Steinvikel
Membre expérimenté https://www.developpez.com
Le 29/06/2017 à 13:57
Corrigez-moi si je me trompe, mais le terme "embarqué" est plutôt flou, je suppose que tout le monde se rejoins sur la notion d'élément autonome et isolé (physiquement, pas forcément non-connecté).
ex : Un module de contrôle de cuve (température, pression, niveau, gaz...) raccordé au secteur et au réseau, c'est de l'embarqué.
Pour le reste, la définition diffère pour tout le monde :
- avec ou sans OS >> dans tout les cas ça reste un (des) programme qui fait tourner le système (aussi petit et simple soit-il)
- avec peu de ressources >> 1ko, 1Mo, 1Go... le principe reste le même c'est juste une question de dimensionnement (de même pour la consommation et l'alimentation)
- avec des composants rudimentaires >> utilisant seulement des GAL/PAL, PIC, µproc... la complexité d'un système ne devrais pas définir son mode d'emploi
- c'est fait sur mesure >> sauf si c'est conçu pour être évolutif, polyvalent (une conception > plusieurs applications)
- c'est petit >> ça rest relatif... une carte de gestion d'un panneau solaire auto-rotatif c'est de l'embarqué ? > plus grand qu'une feuille A4 (donc plus grand qu'une CM µATX dans laquelle transitent de plus faibles puissances), alim par batterie, absence de proc', petits programmes, etc.

Bref tout ça pour dire que pour certains "embarqué" se résume à quelque chose qui répond à un cahier des charges limitant les possibilités, alors que pour d'autres c'est contextuel, par comparaison à son environnement, et pour d'autres encore c'est juste quelque chose qui correspond à un concept (la première ligne).
7  0 
Avatar de transgohan
Expert éminent https://www.developpez.com
Le 30/06/2017 à 16:38
Citation Envoyé par marsupial Voir le message
Edit : Interaction homme-machine; pour un drone c'est de machine à machine et l'objectif d'un OS c'est de rendre la machine exploitable par un être humain. Donc un OS pour un drone à mon avis c'est superflu. Je persiste. Un module de communication est largement suffisant pour le télécommander ou lui passer les instructions et il se débrouille comme il veut. Désolé, je ne vois vraiment pas l'utilité de lui faire bouffer des Go de codes inutiles augmentant la surface de bugs et de failles.
Si tu bosses sur des drones j'aimerai avoir le nom de ta boite pour ne jamais en acheter les produits.

Un OS ce n'est pas uniquement une interface graphique ou un shell... D'ailleurs bon nombre d'OS n'en proposent pas...
Un OS embarque des outils très utiles tels que :
- scheduler
- timer
- lock
- gestion mémoire
et d'autres...

Dans la majorité des projets complexes on ne se passe pas de ce genre d'outils.

Et quand à parler de Go pour un OS... On voit vraiment que tu ne sais pas de quoi tu parles...
Je travaille sur un projet qui tient en 6mo et qui comporte aux 5/6 notre code, le reste c'est l'OS et des drivers.
6  0 
Avatar de Forthman
Membre chevronné https://www.developpez.com
Le 02/07/2017 à 10:52
Il y a un plouc qui a répondu Forth, je me demande bien qui c'est
3  0 
Avatar de kilroyFR
Membre éclairé https://www.developpez.com
Le 29/06/2017 à 13:08
C/C++ et C# sous WinCE2013 (mais IHM seulement en C#, pour tout le reste, comm etc. c'est avec des libs (type libcurl etc) en C car sinon les perfs sont catastrophiques et surtout ca nous permet d'eviter au maximum les pbs de ce p*tain de garbage collector en C# (pour moi la pire des inventions car pour supprimer la rigueur dans le developpement on doit maintenant gerer ceci et eviter que l'equipement ne decharge au mauvais moment).

sinon android pour applis smartphone.
2  0 
Avatar de RyzenOC
Inactif https://www.developpez.com
Le 29/06/2017 à 13:13
Citation Envoyé par hotcryx Voir le message
Ok intéressant, je ne connaissais pas
J'ai trouvé ceci

https://www.busybox.net/live_bbox/live_bbox.html
ben c'est busybox linux qui tient sur quelques mo.
2  0 
Avatar de transgohan
Expert éminent https://www.developpez.com
Le 29/06/2017 à 13:51
Je fais du C et un peu d'assembleur sur du 68000 (oui un machin qui date d'avant ma naissance ça me fait me sentir quand j'en parle).
En gros pour ceux qui connaissent pas c'est de la grosse machine à laver, mais c'est super loin d'un smartphone ou RPi.
Et encore... Je reste persuadé que certains constructeurs mettent plus puissant que ça dans une machine à laver en mettant une usine à gaz dans le code.
2  0 
Avatar de kilroyFR
Membre éclairé https://www.developpez.com
Le 29/06/2017 à 17:55
Pas de memory leak de notre coté car on maitrise tout ce qu'on fait. Faut juste etre rigoureux mais ce n'est plus ce qu'on demande aux dev C# de nos jours. Ils ont l'impression d'etre les rois du monde parce qu'il ont codé une page de code . Pour rappel C# a ete fait pour s'approcher de la simplicité de programmation de VBasic a l'epoque. Forcement on perd au passage.
et Oui je confirme ne t'en deplaise qu'on a pas mal de soucis avec Compact CE dont les versions .net ne sont pas du tout equivalentes avec leurs versions desktop. Mais ca tu t'en rends compte quand tu cherches des API que tu ne trouves pas. Ujen logiciel qu'il faut 'reveiller' regulierement pour eviter qu'il decharge des objets dont on aurait besoin immediatement (sans temps de 1ere compilation).
Je ne suis afficionados de personne, j'aime juste avoir les bons outils pour etre productif (je veux dire je me tape de connaitre les dernieres syntaxes C# a la mode pour coder en 2 lignes de codes ce qu'on faisait en 3).
Par contre quand tu utilises une API sous WinCE qui a un comportement different que son (a priori) equivalent sous PC ben tu zappes car c''est le genre de truc ou tu perds un temps fou pour decouvrir que M$ a decidé de changer un comportement d'une API entre PC et WinCE.
La plateforme WinCE est une merde et il me tarde qu'on passe totalement a Android la dessus (on doit etre les rares encore a developper sur cette plateforme).
Le seul truc de bien c'est visual studio (2008 - faut pas deconner non plus mais ca fait le taf).

Et Xamarin je me suis jeté dedans comme un fou croyant trouver l'outil miraculeux. Au final tu codes ton appli en C# dans une syntaxe/conception tres proche de ce que tu fais en java donc rien de revolutionnaire la dedans si ce n'est de pouvoir dire que tu as un seul langage (je n'ai aucun soucis avec ca, aucun n'est meilleur que l'autre) et tu te retrouves avec des applis de 60Mo qui embarquent tout le SDK Java. Moralité j'ai laissé mes applis sou java android (IDE equivalent si ce n'est meilleur que VStudio pour moi).
3  1 
Avatar de archqt
Membre confirmé https://www.developpez.com
Le 02/07/2017 à 21:15
C'est du C++ avec le main caché et 2 fonction setup et loop et des classes cachées aussi. A moins qu'il n'y ait un autre truc que je ne connaisse pas.
3  1 
Avatar de Iradrille
Expert confirmé https://www.developpez.com
Le 13/07/2017 à 6:11
Sans définition réelle de l'embarqué, les réponses peuvent être n'importe quoi.

Voir VHDL / Verilog dans la même liste que C / C++ et autres est bizarre, ça répond à des besoins vraiment différents.

Sinon pour moi, en fonction du besoin : VHDL / C++ (éventuellement C) / autre si plus adapté (ex: performance non critiques et C# possible, je me laisserai surement tenté, le langage est vraiment agréable).
2  0