GRATUIT

Vos offres d'emploi informatique

Développeurs, chefs de projets, ingénieurs, informaticiens
Postez gratuitement vos offres d'emploi ici visibles par 4 000 000 de visiteurs uniques par mois

emploi.developpez.com

C ou C++ ? Quel langage choisir pour un projet sur une cible embarquée ?

Le , par poukill, Membre chevronné
Salut à tous,

On entend dire par monts et par vaux que pour le domaine de l'embarqué, le C est plus adapté que le C++.

1 - Est-ce vrai ?
2 - Si oui, Pourquoi ?

J'ai dans l'idée que les deux langages produisent de l'assembleur, donc pourraient être équivalent.

Je vous écoute !

EDIT : J'aurai bien mis cette discussion dans C et C++ mais je crois pas que ce soit faisable !


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Davidbrcz Davidbrcz - Rédacteur http://www.developpez.com
le 24/08/2010 à 22:09
Citation Envoyé par ptyxs  Voir le message
Sur l'adoption de C++ par Lockheed pour ses avions de combat :

F-35 Joint Strike Fighter (JSF)

et sur les normes de codage C++ adoptés par Lockheed (et apparemment rédigées par Stroustrup, voir plus haut) :

Joint Strike Fighter Air Vehicles C++ Coding Standards

Extrèmement intéréssant, tu bosses dans ce milieu pour connaitre ce genre de chose ?

Edit: je viens de voir un de tes messages dans ce topic, je comprends mieux.
Avatar de poukill poukill - Membre chevronné http://www.developpez.com
le 25/08/2010 à 10:52
Très intéressant en effet. On y retrouve beaucoup de principes bien connus traités dans la bonne littérature Meyers, Alexandrescu, ...
Les template sont encouragés, mais pas un mot sur la STL ou Boost, alors qu'il parle de réutilisabilité de composants éprouvés !
Avatar de jabbounet jabbounet - Membre expert http://www.developpez.com
le 25/08/2010 à 11:03
Citation Envoyé par poukill  Voir le message
Très intéressant en effet. On y retrouve beaucoup de principes bien connus traités dans la bonne littérature Meyers, Alexandrescu, ...
Les template sont encouragés, mais pas un mot sur la STL ou Boost, alors qu'il parle de réutilisabilité de composants éprouvés !

boost et STL sont peu être "éprouvé" pour une utilisation standard, mais ils n'ont peu être pas encore passé les certifications requise pour l'embarqué ....

Il faut savoir que dès que tu parle "sureté de fonctionnement" les technologies ont toujours un temps de retard du aux validations de ces dernières composant/libraries/compilateurs, cela prend parfois plusieurs années/h à certifier quelque chose.
Avatar de poukill poukill - Membre chevronné http://www.developpez.com
le 25/08/2010 à 13:36
Je comprends. Mais si je me trouve dans le cas où j'ai besoin d'une liste doublement chainée. Je fais quoi ? Je code ma classe comme un grand, ou bien j'utilise std::list ?
C'est pas que je me fasse pas confiance, mais j'aurais espéré pouvoir décemment choisir la deuxième solution !
Avatar de jabbounet jabbounet - Membre expert http://www.developpez.com
le 25/08/2010 à 13:46
Citation Envoyé par poukill  Voir le message
Je comprends. Mais si je me trouve dans le cas où j'ai besoin d'une liste doublement chainée. Je fais quoi ? Je code ma classe comme un grand, ou bien j'utilise std::list ?
C'est pas que je me fasse pas confiance, mais j'aurais espéré pouvoir décemment choisir la deuxième solution !

De mémoire si quelque chose n'est pas certifié pour être dans les parties critique tu ne peux pas l'utiliser dans les parties critiques.

Si std::list n'est pas certifié pour être dans les parties critiques alors tu ne peux pas l'utiliser dans les parties critiques. Donc soit tu as de la chance et tu prend le modele de liste déjà implémenté en interne par ta société et qui a passé la certification, soit tu en fait une à la main.

Ce milieu es un mode très restrictif. Tout ce qui n'a pas été autorisé explicitement est interdit.
Avatar de Klaim Klaim - Membre expert http://www.developpez.com
le 25/08/2010 à 13:54
J'imagine que ce sont les interfaces ET les implémentations des libs qui doivent être certifiées?
Avatar de 3DArchi 3DArchi - Rédacteur http://www.developpez.com
le 25/08/2010 à 19:00
Citation Envoyé par jabbounet  Voir le message
De mémoire si quelque chose n'est pas certifié pour être dans les parties critique tu ne peux pas l'utiliser dans les parties critiques.

Si std::list n'est pas certifié pour être dans les parties critiques alors tu ne peux pas l'utiliser dans les parties critiques. Donc soit tu as de la chance et tu prend le modele de liste déjà implémenté en interne par ta société et qui a passé la certification, soit tu en fait une à la main.

Ce milieu es un mode très restrictif. Tout ce qui n'a pas été autorisé explicitement est interdit.

Ceci dit, tout l'embarqué ne relève pas de la sureté de fonctionnement. Le code de commande d'un volet électrique n'a pas les mêmes contraintes que celui d'un équipement ferroviaire ou avionique (et même dans ces domaines, tous les équipements ne tombent pas sous la sureté de fonctionnement).
Il y a aussi des règles MISRA C++ qui concernent plus le monde de l'automobile.
Avatar de jabbounet jabbounet - Membre expert http://www.developpez.com
le 25/08/2010 à 19:30
Citation Envoyé par 3DArchi  Voir le message
Ceci dit, tout l'embarqué ne relève pas de la sureté de fonctionnement. Le code de commande d'un volet électrique n'a pas les mêmes contraintes que celui d'un équipement ferroviaire ou avionique (et même dans ces domaines, tous les équipements ne tombent pas sous la sureté de fonctionnement).
Il y a aussi des règles MISRA C++ qui concernent plus le monde de l'automobile.

Tout à fait. simplement le sujet à dérivé sur la thématique "sureté de fonctionnement quand blacknight" à parlé de la DO-178B.

Et tu as raison, tout n'est pas critique dans le ferroviaire/avionique, Comme je l'ai dit plus haut le système de freinage d'un train ou le système de verrouillage des portes sera probablement critique alors que le système de climatisation probablement pas.

Maintenant pour revenir a l'embarqué au sens large, cela peu inclure la téléphonie mobile, les lecteur de carte bleu, les box/routeurs, les centrales nucléaires, les satellites, ....

Bref c'est un domaine qui est probablement aussi vaste que l'informatique, par contre la partie SDF reste petite comparé au reste.

Cependant, en voyant la disparité des besoins, des équipements utilisé et de leur criticité. on peut difficilement imaginer unifier tout ce beau monde avec un langage/framework.
Avatar de 3DArchi 3DArchi - Rédacteur http://www.developpez.com
le 26/08/2010 à 6:51
Citation Envoyé par jabbounet  Voir le message
Cependant, en voyant la disparité des besoins, des équipements utilisé et de leur criticité. on peut difficilement imaginer unifier tout ce beau monde avec un langage/framework.

Yes. Surtout si on rajoute les différentes cultures dans chaque entreprise ou chaque domaine.

@poukill : Une autre branche où les langages/bibliothèques/outils nécessitent d'être approuvées avant de pouvoir être utilisées est la sécurité au sens chiffrement (pour ce qui est gouvernemental). Et là, Boost avec une sortie tous les 4 à 6 mois, ben, au mieux tu auras de droit d'utiliser une version qui date de mathusalem au pire personne ne cherchera à l'approuver.
Avatar de valefor valefor - Membre éclairé http://www.developpez.com
le 26/08/2010 à 9:52
Citation Envoyé par JolyLoic  Voir le message
Revenir pour la n-ième fois sur le coût d'un appel virtuel (même pas vraiment comparé au coût d'un if, qui n'est pas étudié...),


Page 26 :
But compared to C alternatives :
Faster and smaller than if/then/else or switch-based techniques.

Pas de chiffres, mais il donne une idée.
Avatar de JolyLoic JolyLoic - Rédacteur/Modérateur http://www.developpez.com
le 26/08/2010 à 11:09
Citation Envoyé par valefor  Voir le message
Page 26 :

Pas de chiffres, mais il donne une idée.

Justement, c'est ce que je lui reproche. Il indique qu'un appel virtuel est l'équivalent moral de :
(*pB->vptr[1])(pB);

Il n'y a rien d'évident à première vue que c'est plus rapide qu'un if...
Offres d'emploi IT
Analyste développeur confirmé/senior C++ h/f
Sigmalis - Suisse - Lausanne
Ingénieur en développement C++
small IZ beautiful - Ile de France - Orsay (91400)
Data scientist h/f
AXA - Ile de France - Paris - Avenue Matignon

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique C++