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 !

Quel est le meilleur langage pour le développement embarqué ?
Qu'est-ce qui le différencie des autres langages ?

Le , par Lana.Bauer

68PARTAGES

2  0 
Quel langage utilisez-vous pour le développement embarqué ?
Bonjour,

Chers membres du club et développeurs Embarqués,

Nous aimerions lancer un sondage afin de savoir quel est le langage embarqué préféré des développeurs présents sur le forum. Il s'agit bien sûr de mentionner quels sont les langages que vous utilisez le plus.

Si vous en avez essayé plusieurs, où se situe votre préférence et pourquoi ?
Lequel trouvez-vous le plus didactique ?
Avec lequel vous avez fait vos premiers pas dans ce domaine ?
Lequel voyez-vous évoluer plus pour devenir le plus utilisé ? - Selon vous, quel langage doit encore évoluer pour rendre son utilisation plus courante ?

Ce sondage doit être l'occasion de nous raconter vos expériences avec ces langages que vous aimez et que vous devez utiliser pour le développement embarqué.

N'hésitez pas à préciser quels sont les environnements de vos projets : OS riches ou pas, temps réels, compilateurs, etc.

N'hésitez pas à parler d'autres langages qui ne soient pas présents dans la liste.

Si vous utilisez un langage qui n'est pas répertorié manifestez-vous et exprimez-vous sur celui-ci.

Merci

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

Avatar de gangsoleil
Modérateur https://www.developpez.com
Le 30/10/2013 à 10:13
Chaque langage a ses avantages et ses inconvenients... Ada apporte de fortes verifications, la ou le C permet au contraire de faire n'importe quoi (y compris de tres bonnes choses).
Et a l'inverse, le cote bas-niveau du C peut devenir tres interessant si on s'interesse aux couches basses (paquets reseau par exemple).

De meme, si on fait un jeu, le cote bas-niveau du C et son absence de lib graphique sera surement plus penalisant que l'utilasation d'un langage comme Java...

Mais pour ce que je fais, le C est probablement l'un des plus adapte -- et il existe un compilateur C sur presque toutes les architectures.
3  0 
Avatar de minnesota
Membre émérite https://www.developpez.com
Le 31/10/2013 à 19:22
salut,

Citation Envoyé par Lana.Bauer Voir le message
Quel langage recommandes tu aux personnes qui comptent apprendre un langage pour postuler dans le domaine embarqué ?
Désolé d'être aussi cru, mais cette phrase n'a aucun sens. Je le dis comme ça pas que certains ou certaines se fassent des illusions. "L'embarqué" c'est pas du Arduino, ou du Raspberry Pi, et encore moins un "smartphone", et surtout il ne suffit pas d'apprendre un langage de programmation pour prétendre à une place "dans l'embarqué". Au sens industriel du terme, parce que c'est de ça qu'il s'agit ici, "l'embarqué" est un système informatique, numérique, éventuellement sur la base de microcontrôleurs, intégré dans un ensemble d'une tout autre nature, ça peut être une batterie, un frigo, une voiture, un TGV, un avion, entre parenthèses y'a aussi toute une branche du secteur du jouet, mais c'est un peut particulier et surtout très nuancé, y compris sur le plan de la réglementation, et avec tout ça, je vous fais grâce de l'appareillage médical. Bref, de "l'embarqué" y'en a partout, et suivant les secteurs, les impératifs et les obligations ne sont pas les mêmes, y compris sur les niveaux de compétences et de connaissances demandés, donc on ne travaille pas "dans l'embarqué" comme ça. La porte d'entrée, le plus souvent (je dirais presque exclusivement), c'est les écoles, la matière prédominante est en général l'électronique, les langages, eux, ils viennent avec, le reste est appris en entreprises pendant les périodes de (stages de) formations et après l'embauche. C'est un lourd investissement par ce que ça prend du temps pour obtenir un ou une employés 100% opérationnel. Pour les candidatures, il faut un bon bagage, une très grande flexibilité et de bonnes références.

Enfin, comme on parle de langage dans ce thread, je confirme que le C est effectivement un des langages les plus utilisés dans les systèmes embarqués, et que le C++ tant de plus en plus à se démocratisé, ce qui n'empêche pas qu'une puce spécialisée puisse utiliser un langage spécifique. Cependant, je tiens à rappeler que les systèmes embarqués s'inscrivent dans un contexte d'interaction avec leur environnement, et que ce dernier est différent d'un secteur à l'autre, et on note des environnements différents dans un même secteur. Indéniablement, si c'est ce genre d'activité qui vous intéresse, c'est l'électronique qui vous offrira le plus d'opportunités. Bien sûr, sur certains modules ou projets complexes, il y a et il y aura toujours des unités consacrées uniquement à la programmation, à la partie logiciel ou micrologiciel, mais c'est pas ce qui revient majoritairement.

Pour ce qui est des bogues logiciels (et même matériels, oui ça existe), je vais pas entrer dans le débat. Même si un langage donné peut aidé à réduire les risques, aucun ne permet de s'en prémunir et ce, quel que soit le degré d'expertise des développeurs ou concepteurs, ni même toutes les batteries de tests qu'a pu subir un système avant sa livraison, et sur certaines applications critiques, l'investissement en ce sens est conséquent, et "compte pour double" lorsqu'il s'agit de faire des corrections après livraison.
4  1 
Avatar de gorgonite
Rédacteur/Modérateur https://www.developpez.com
Le 14/04/2014 à 11:16
Citation Envoyé par ManusDei Voir le message
Des outils permettant de prouver formellement du code.
solver est le terme anglais que j'ai vu, j'imagine qu'en français on dit plutôt moteur de preuve.
Ok, donc le sens le plus générique du mot...

Tout d'abord, tu te doutes sûrement qu'on travaille souvent avec des sous-ensembles de langage (cf les règles MISRA & cie)
Alors prenons quelques exemples (plus ou moins industriels) :
  1. Si tu as déjà du code

  2. Si tu veux générer un code "prouvé"
    • Atelier-B pour générer vers de l'Ada ou du C (voire du VHDL)
    • Simulink et les module Design Verifier & Coder (anciennement Real-Time Workshop)

  3. Si tu veux compiler ce qui a été vérifié au dessus de manière fiable
    • les compilo classiques avec désactivation de (toutes ?) optimisations
    • CompCert cité précédemment


Et la liste est très longue
3  0 
Avatar de bpy1401
Membre éclairé https://www.developpez.com
Le 31/10/2013 à 15:30
Bonjour à tous

Travaillant chez un équipementier automobile, je peux vous assurer que le langage le plus utilisé est le C.

Au début de ma carrière, le langage le plus optimisé était l'assembleur, mais les compilateurs C ont bien progressés depuis et maintenant je ne vois pratiquement plus d'assembleur. par contre, le C++ n'est pas démocratisé dans notre domaine.
Une seule exception, c'est la télématique automobile, ou l'on retrouve le C++ et peut être du Java embarqué.

Notre principal souci est d'optimiser la mémoire utilisé par notre logiciel (RAM, ROM) et le temps d’exécution, et pour le moment, le C permet parfaitement la gestion de ces deux problématiques.

Pour l'avenir, C va resté le langage le plus utilisé dans l'automobile. le Standard AUTOSAR défini par les constructeurs force l'utilisation de ce langage.

Bon week end
2  0 
Avatar de jabbounet
Membre expert https://www.developpez.com
Le 04/11/2013 à 13:40
Citation Envoyé par Davidbrcz Voir le message
Quand je vois ca , je me dis quand même qu'il faudrait passer a autre chose que du C et réussir a trouver un langage qui puissent offrir

  • Une empreinte mémoire faible
  • Une simplicité d’utilisation
  • Une capacité de vérification formelle importante
Il ne faut pas considérer uniquement le langage, mais tout l'environnement qui a conduit à l'apparition de ce bug (comme par exemple la chaine de validation), le même problème peut se produire dans n'importe quel langage.

Ce n'est pas pour rien que dans certains secteur il y'a des normes très strictes autour du développement logiciel je perse a DO178b pour l'avionique et les normes SIL pour le ferroviaire et même avec ces normes on ne fait que limiter fortement le risque d'apparition d'un problème.
2  0 
Avatar de bpy1401
Membre éclairé https://www.developpez.com
Le 04/11/2013 à 16:03
Bonjours à tous

Pour éclaircir un peu le sujet sur le C. il faut savoir que ce langage très proche de l'assembleur permet d'optimiser la charge CPU et la mémoire utilisée par le logiciel. Ces deux facteurs sont un point important dans le prix du produit final qui doit toujours être le bas possible.

Le C a aussi ces défauts. il permet tout et n'importe quoi.
Plusieurs tests existent pour vérifier le codage que vos avez fait.
Les test unitaires permettent de vérifier la fonctionnalité d'une fonction C, mais aussi le résultat de la compilation.
Les test d'intégration permettent de vérifier que tous les sources C cohabitent ensemble.
Pour finir, les tests de validation vérifient la fonctionnalité du logiciel.

Mais i l existe toujours des trous dans la raquette, et forcement un bug peut toujours survenir, mais cela c'est valable pour tous les langages.

En automobile, la norme ISO26262 (sureté de fonctionnement) permet de gérer les événements redoutés (générateurs de bugs), mais comme toujours, c'est celui que l'on n'a pas imaginé qui va se produire.

Pour finir, on voit ce qui ne fonctionne pas, mais on ne remarque jamais les choses qui fonctionnent.

A+
2  0 
Avatar de SuBWaReZ
Futur Membre du Club https://www.developpez.com
Le 12/11/2013 à 20:55
Citation Envoyé par Tryph Voir le message
j'ai l'impression que dans l'esprit de certain, embarqué = temps réel...
ce qui, selon moi, est juste faux.

perso, en loisir et par curiosité, j'ai fait un peu de programmation de microcontroleurs en C et en assembleur quand j'ai du mesurer un temps au 100e de miliseconde près...

depuis quelques mois, je bosse sur un projet embarqué dans le ferroviaire en... python, oui oui
tant qu'on fait pas de temps réel et que la carte sur laquelle tourne le soft est surdimensionnée, ça fonctionne pas mal...
en même temps dans le même boite, j'ai déjà fait du bureau à distance sur un windows XP installé sur une carte electronique qu'on retrouve dans plein de métros et de tramway... alors plus rien ne m'étonne.
temps réel = vitesse est tout aussi faux
2  0 
Avatar de Davidbrcz
Rédacteur https://www.developpez.com
Le 30/10/2013 à 11:07
Citation Envoyé par gangsoleil Voir le message
Chaque langage a ses avantages et ses inconvenients... Ada apporte de fortes verifications, la ou le C permet au contraire de faire n'importe quoi (y compris de tres bonnes choses).
Et a l'inverse, le cote bas-niveau du C peut devenir tres interessant si on s'interesse aux couches basses (paquets reseau par exemple).

De même, si on fait un jeu, le cote bas-niveau du C et son absence de lib graphique sera surement plus pénalisant que l'utilasation d'un langage comme Java...

Mais pour ce que je fais, le C est probablement l'un des plus adapte -- et il existe un compilateur C sur presque toutes les architectures.
Réponse pleine de bonne chose.

Ca va déjà dépendre de la définition d’embarqué qu'on sens.
Embarqué = Pas PC fixe ? Contrainte taille mémoire ? Securite ?

Pour certain, un téléphone Android cest de l'embarque, pour moi c'est plus un PC amoindri.

Dans ma vision de l'embarqué (système temps reel critique qui doivent tenir entre 10 et 30 ans dans des environnement hostiles), on a le C et C++ (souvent un peu amoindri*) car beaucoup de plateformes les supportent. Ada quad on peut, car il offre une bonne sécurité et est relativement standard dans ce but et enfin Scade car je suis dans le domaine de l'aero

* : RTTI, exception passent souvent a la trape. Et les templates son pas toujours bien gérés
1  0 
Avatar de Klaim
Membre expert https://www.developpez.com
Le 30/10/2013 à 21:52
Ok je vois mieux l'intention. Dans ce cas la je vote C++.
1  0 
Avatar de Klaim
Membre expert https://www.developpez.com
Le 31/10/2013 à 13:27
Citation Envoyé par Lana.Bauer Voir le message
As tu une préférence pour l'un d'eux ?
As tu travaillé avec plusieurs ?
Oui, notemment C, C#, Java, Objective-C++ et quelques autres.

Si tu avais à choisir tu aurais travaillé avec C++ ?
Oui, c'est la ou j'ai le plus d'expertise et c'est aussi ce que je trouve de plus flexible (pour quelqu'un qui connait bien ce language, pas pour un debutant) autant au niveau performance (vitesse ou memoire ou taille des binaires) qu'au niveau "expression".

J'aurais aime essayer D aussi.

Quel langage recommandes tu aux personnes qui comptent apprendre un langage pour postuler dans le domaine embarqué ?
Ca depends du domaine... mais miser sur C et C++ (en sachant les differences) est essentiel, meme si on se retrouve a bosser avec quelque chose d'autre.
1  0