OVH Cloud OVH Cloud

c++ versus c#

44 réponses
Avatar
erwan
Bonjour à tous,
voici ma question : quel langage choisir entre c++ et c#?

je vous expose mon projet :

Je dois développer une application windows qui est un logiciel de pilotage
d'une machine se composant d'un bloc moteur et d'un module d'électronique
(émission et réception de signaux). Je dois réaliser une interface graphique
conviale pour afficher ces données. Le gros problème est la vitesse
d'exécution. Le bloc moteur et l'électronique me seront livrés avec une API.
Typiquement, je dois déclenché un signal d'excitation sur un capteur,
attendre sa réponse ( de l'ordre de 20µs), enregistrer ce signal, le
convertir en signal video (une transformée de Hilbert, qui doit prendre plus
ou moins le même temps que de faire une FFT), déplacer le capteur avec le
bloc moteur de qques pas, et recommencer ainsi de suite pour former une
image enregistrable.Actuellement, j'aimerai faire entre 30 images par
secondes composées de 400 lignes, soit environ 1200 lignes traitées par
seconde. L'affichage devra être en temps réel.
Il est peut être nécessaire de coder la transformation de Hilbert en langage
très bas niveau pour que cela soit traité en temps réel.
C# est-il plus lent que c++?
Je pense que la réalisation de ce projet est plus simple en c# mais peut
être pas assez rapide.
Avez vous des idées ou des commentaires?

Toutes les aides seront bienvenues.

Merci à tous.

10 réponses

1 2 3 4 5
Avatar
DINH Viêt Hoà

L'éditeur est plus abouti en c# qu'en c++



heu ... ça m'a rien à voir avec le langage lui-même.

plus pour C++ au niveau développement visuel). Et moi, en VB,
j'ai de la difficulté à accepter qu'un éditeur me dise comment
je dois écrire le code !


Ah ben là, au moins, t'as un coding standard bien défini :)

Encore une fois, mon impression est que, oui, C++ est peut-être
un peu complexe pour certains types de développement, mais VB
est alors un meilleur choix que C#. Mais je ne suis pas un très
bon juge, j'aime le choix des possibilités de C++ et je ne vois
aucun intérêt à VB non plus :-)


Effectivement, VB a pas mal été choisi pour certains types de
développements (interfaçage de bases de données) et ça a l'air de pas
mal marcher (enfin, je n'ai vu personne dire que c'était une mauvaise
solution).

--
DINH V. Hoa,

etPan! - newsreader, mail user agent -- http://libetpan.sf.net/etpan


Avatar
James Kanze
Fabien LE LEZ writes:

|> On 16 Jan 2004 01:18:36 -0800, wrote:

|> >Et en ce qui concerne la modification du code pendant
|> >l'exécution, Sun Workshop le supporte en C++. Bien compilé.

|> Tiens ? Comment ça marche ? Il recompile le programme tout en
|> sauvegardant le contexte ?

Je ne connais pas les détails, mais je suppose que :

- déjà l'éditeur de liens laisse de la place en rabe
derrière chaque fonction,

- le déboggueur récompile la fonction modifiée,

- il remplace la fonction actuelle par la fonction modifiée dans
l'image en mémoire, et

- il continue.

Évidemment, il y a des contraintes. Si tu ajoutes des variables
locales à une fonction active (celle où tu es arrêté, ou une
au dessus quelque part dans la pile des appels), par exemple, ça ne
peut pas marcher. En fait, je doute qu'il marche si tu modifies
n'importe quelle fonction dans la pile de l'appel -- ça
m'étonnerait qu'on puisse s'assurer de l'adresse de rétour dans le
cas où la fonction appelante a changé.

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
Avatar
erwan
Exact cela fait bien 12.000 traitements. En fait, cela s'annonce encore un
peu différemment : je suis capable de fabriquer des images en 100Hz, mais
personne n'est capable de toutes les voir. Je pense donc faire un traitement
d'une image sur 4 et l'afficher (les autres datas seront sauvegardées mais
pas affichées et peut être pas traiter en temps réel).

Visual studio 2003.net permet en fait de programmer en plusieurs langages
(c++, c#, J#, VB...), ensuite le code est transformé en langage intermédiare
qui est le même pour tous. On peut donc choisir son langage de programmation
suivant ses préférences. On pourrait même faire fonctionner des appli .NET
ayant le framework qui va être complétement implanter sous linux.
Si j'ai bien compris, les bibliothèques de classes de Microsoft sont
spécialement développer pour le .NET et risquer de ce développer dans ce
sens. Leurs utilisations me semblent plus aisés avec les langages
fonctionnant sous Visual studio .
Bref, je me perds un peu car d'un côté on me dit qu'il n'y a pas de pb à
faire mon appli sous woidows avec du C# et d'autres sont plus négatifs. Mais
est ce par méconnaissances?


"Fabien LE LEZ" a écrit dans le message de
news:
On Thu, 15 Jan 2004 00:49:18 +0100, "erwan" wrote:

j'aimerai faire entre 30 images par
secondes composées de 400 lignes, soit environ 1200 lignes traitées par
seconde


12000, non ?

--
;-)

http://www.gotw.ca/gotw/063.htm
http://www.gotw.ca/gotw/067.htm#2



Avatar
Loïc Joly
erwan wrote:

Exact cela fait bien 12.000 traitements. En fait, cela s'annonce encore un
peu différemment : je suis capable de fabriquer des images en 100Hz, mais
personne n'est capable de toutes les voir.


Ca dépend de ton type d'application, mais pour info 25 Hz peut être tout
à fait insuffisant. Déjà pour du cinéma, c'est limite et ça contraind
clairement le réalisteur dans ce qu'il peut faire. Pour de la réalité
virtuelle, 60Hz semble être un minimum.

Visual studio 2003.net permet en fait de programmer en plusieurs langages
(c++, c#, J#, VB...), ensuite le code est transformé en langage intermédiare
qui est le même pour tous. On peut donc choisir son langage de programmation
suivant ses préférences. On pourrait même faire fonctionner des appli .NET
ayant le framework qui va être complétement implanter sous linux.
Si j'ai bien compris, les bibliothèques de classes de Microsoft sont
spécialement développer pour le .NET et risquer de ce développer dans ce
sens. Leurs utilisations me semblent plus aisés avec les langages
fonctionnant sous Visual studio .
Bref, je me perds un peu car d'un côté on me dit qu'il n'y a pas de pb à
faire mon appli sous woidows avec du C# et d'autres sont plus négatifs. Mais
est ce par méconnaissances?


D'un côté, tu as un choix inter-langages, relativement neuf (et donc
susceptible de subir des modifications importantes avant que de se
stabiliser), payant, et plutôt bien intégré.

De l'autre, tu as un choix inter-systèmes, plus éprouvé, et un peu
foutoir, bien que très riche.

A ce choix de base, presque philosophique, se pose le problème des
performances qui complique tout. Si potentiellement tu risques de devoir
beaucoup t'interfacer avec du hard et de devoir faire (après profiling)
de l'optimisation poussée de ton code, j'aurais plutôt tendance à te
conseiller de ne pas utiliser .NET, mais je n'ai pas d'expérience
précise pour étayer mon impression.

--
Loïc

Avatar
Fabien LE LEZ
On Mon, 19 Jan 2004 00:04:19 +0100, "erwan" wrote:

Bref, je me perds un peu car d'un côté on me dit qu'il n'y a pas de pb à
faire mon appli sous woidows avec du C# et d'autres sont plus négatifs. Mais
est ce par méconnaissances?


Méconnaissance du C#, sur un forum dédié à C++, ça se comprend.

--
;-)

http://www.gotw.ca/gotw/063.htm
http://www.gotw.ca/gotw/067.htm#2

Avatar
PRORIOL Fabien
VB est alors un meilleur choix que C#. Mais je ne suis pas un très
bon juge, j'aime le choix des possibilités de C++ et je ne vois
aucun intérêt à VB non plus :-)



Je ne suis pas raiment d'accord.

Le VB est un langage purement "de merde". Il est fait a la base pour soit
disant permettre a des "non informaticien" de réalisé des programme
facilement, mais sont manque de rigueure font de ce langage un truc tres mal
fait est tres dure a utilisé pour faire des truc un peu balaise!!!
Le Delphi par exemple est 100000 fois plus efficasse que le VB, et pas bien
plus difficile a apprendre (je dirait meme plus facile).

En revanche, l'interet du C# sur le C++, c'est que c'est un langage purement
objet (comme le Java).
Alors maintenant qu'elle est l'interet de la programmation POO, la c'est un
tres grand débat qui a fait couler deja beaucoup d'encre, mais je trouve que
cette methode de programmation facilite grandement la programmation de
grosse application complexe.
Maintenant quel sont les avantages du C#, ben comme pour le Java, la
meta-class Object, je trouve sa super pratique (par exemple pour faire une
liste chainés d'object non déterminé).
Un interet aussi du C# sur le C++ ou le Java, c'est par exemple la fonction
get() et set() de chaque attribut, sa evite de les apeler explicitement,
c'est une abstraction interessante.

En revanche, ce que je n'appreci pas, c'est la framework .net!!!!!
Il existerait un compilateur C# qui créé de veritable executable binaire
comme en C++ originale, alors j'utiliserai ce nouveau langage.
Non seulement se serai plus performent, mais sa eviterait d'avoir des pb si
le pb d'en face n'a pas la framework.

.net se veut etre multi plateforme, mais ces loin d'etre le cas, et pour le
moment, il n'y a aucun interet a ce genre de framework.

Rien ne vaut que du bon code C++, qui peut aisement etre porter a Linux s'il
est bien programmer.


@+Fab


Avatar
erwan
La framework .NET est implantable sur tous les windows à partir de 95 ou 98
(je ne sais plus), et actuellement il y a des projets pour une installation
sur linux. Les applications sous .net devrait à terme être multiplateforme.
Le fait d'avoir une précompilation en MSIL permet effectivement de changer
de machine sans avoir de pb de compatibilité tant que la framework est
installée. L'utilisation de visual studio.net me parait qd même bcp plus
facile et rapide pour programmer une appli windows que de partir de sur du
c++ basic. Tu as qd même une base de classe assez riche a priori. A mon avis
c++ tournera + vite si tu arrives à optimiser très bien ton programme, sinon
c'est pas sûr.
@+

"PRORIOL Fabien" <c4[NOSPAM]@saint-[NOSPAM]pal.com> a écrit dans le message
de news:bujtb8$o2$
VB est alors un meilleur choix que C#. Mais je ne suis pas un très
bon juge, j'aime le choix des possibilités de C++ et je ne vois
aucun intérêt à VB non plus :-)



Je ne suis pas raiment d'accord.

Le VB est un langage purement "de merde". Il est fait a la base pour soit
disant permettre a des "non informaticien" de réalisé des programme
facilement, mais sont manque de rigueure font de ce langage un truc tres
mal

fait est tres dure a utilisé pour faire des truc un peu balaise!!!
Le Delphi par exemple est 100000 fois plus efficasse que le VB, et pas
bien

plus difficile a apprendre (je dirait meme plus facile).

En revanche, l'interet du C# sur le C++, c'est que c'est un langage
purement

objet (comme le Java).
Alors maintenant qu'elle est l'interet de la programmation POO, la c'est
un

tres grand débat qui a fait couler deja beaucoup d'encre, mais je trouve
que

cette methode de programmation facilite grandement la programmation de
grosse application complexe.
Maintenant quel sont les avantages du C#, ben comme pour le Java, la
meta-class Object, je trouve sa super pratique (par exemple pour faire une
liste chainés d'object non déterminé).
Un interet aussi du C# sur le C++ ou le Java, c'est par exemple la
fonction

get() et set() de chaque attribut, sa evite de les apeler explicitement,
c'est une abstraction interessante.

En revanche, ce que je n'appreci pas, c'est la framework .net!!!!!
Il existerait un compilateur C# qui créé de veritable executable binaire
comme en C++ originale, alors j'utiliserai ce nouveau langage.
Non seulement se serai plus performent, mais sa eviterait d'avoir des pb
si

le pb d'en face n'a pas la framework.

.net se veut etre multi plateforme, mais ces loin d'etre le cas, et pour
le

moment, il n'y a aucun interet a ce genre de framework.

Rien ne vaut que du bon code C++, qui peut aisement etre porter a Linux
s'il

est bien programmer.


@+Fab






Avatar
Michel Michaud
Dans news:bujtb8$o2$, PRORIOL
VB est alors un meilleur choix que C#. Mais je ne suis pas un très
bon juge, j'aime le choix des possibilités de C++ et je ne vois
aucun intérêt à VB non plus :-)



Je ne suis pas raiment d'accord.

Le VB est un langage purement "de merde". Il est fait a la base


N'empêche qu'il est actuellement bien plus utilisé que C# et que
ce n'est pas le passage à C# qui sera à l'étude par ceux qui
l'utilisent, mais bien le passage à .NET.

pour soit disant permettre a des "non informaticien" de réalisé des
programme facilement, mais sont manque de rigueure font de ce
langage un truc tres mal fait est tres dure a utilisé pour faire
des truc un peu balaise!!!
Le Delphi par exemple est 100000 fois plus efficasse que le VB, et
pas bien plus difficile a apprendre (je dirait meme plus facile).


Mais Delphi reste bien moins utilisé que VB. Pour la même raison
qui fera que C# le restera aussi d'après moi...

En revanche, l'interet du C# sur le C++, c'est que c'est un langage
purement objet (comme le Java).


En quoi c'est un avantage ? Pour moi, ce serait plutôt un
inconvénient. Ça n'ajoute rien, n'est-ce pas ?

Alors maintenant qu'elle est l'interet de la programmation POO, la
c'est un tres grand débat qui a fait couler deja beaucoup d'encre,
mais je trouve que cette methode de programmation facilite
grandement la programmation de grosse application complexe.
Maintenant quel sont les avantages du C#, ben comme pour le Java, la
meta-class Object, je trouve sa super pratique (par exemple pour
faire une liste chainés d'object non déterminé).


C'est une solution inférieure à la programmation générique... C'est
aussi très utile pour ceux qui programment mal en objet.

Un interet aussi du C# sur le C++ ou le Java, c'est par exemple la
fonction get() et set() de chaque attribut, sa evite de les apeler
explicitement, c'est une abstraction interessante.


Mais justement, les getter et setter ne devraient pas être là à
moi que ce soit vraiment utile. Simplifier leur présence n'est pas
non plus un avantage. Ça éloigne au contraire de l'orientation
objet bien utilisé.

En revanche, ce que je n'appreci pas, c'est la framework .net!!!!!
Il existerait un compilateur C# qui créé de veritable executable
binaire comme en C++ originale, alors j'utiliserai ce nouveau
langage.


Bof. .NET n'est pas significativement moins bien faite (ni mieux
faite) que la bibliothèque Java, etc. (si c'est moins bon ou
meilleur que d'autres bibliothèques est certainement une question
de goût...)

Non seulement se serai plus performent, mais sa eviterait d'avoir
des pb si le pb d'en face n'a pas la framework.

.net se veut etre multi plateforme, mais ces loin d'etre le cas, et


Faut laisser un peu de temps. Rome (et Java) ne se sont pas construits
en un jour et comme il y a MS derrière...

pour le moment, il n'y a aucun interet a ce genre de framework.


Bon, là on entre dans le troll... Personnellement j'y vois plein
d'intérêt. J'imagine que tu ne l'utilises pas hein... Je me rappelle
bien, dans le temps, ceux qui ne voyaient aucun intérêt aux interfaces
graphiques :-)

Rien ne vaut que du bon code C++, qui peut aisement etre porter a
Linux s'il est bien programmer.


Oui, c'est sûr. Mais il me semblait que tu n'étais pas vraiment
d'accord avec moi ?

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/



Avatar
SolozerK
Eh bah... un troll respectable :p
Avatar
espie
In article <4006e77b$0$29057$,
Alexandre wrote:
Java, au contraire, et si mes souvenirs sont bons, compile le
programme (pré-digéré) au début, ce qui en fait un exécutable (en
mémoire), qui est lancé.


Oui, mais compilé en pseudo-code (pas en code natif 386) pour une machine
virtuelle.
Ce pseudo-code est ensuite interprété.
En .net ce n'est pas exactement la même chose : il y a un pseudo-code, mais
compilé en code natif à la 1ere execution (compilo JIT, just in time), donc
executé en natif, donc rapide.


Bof, moi je connais plein de langages executes en natif qui ne sont
pas specialement rapides, et des langages interpretes qui s'en sortent
tres bien cote vitesse.

Il ne faut pas croire tout ce que raconte le departement marketing.
La seule facon de connaitre la vitesse d'une implementation d'un langage,
c'est de faire des tests pratiques.

Typiquement, je croirais que .Net est rapide le jour ou je verrais des
tests independants qui me semblent fiables. (et je veux bien croire
que certaines implementations java s'en tirent plutot bien.)

Meme pour C++: c'est cense etre aussi rapide que du C (et tout le design
du langage va dans ce sens). N'empeche que les capacites des compilateurs
vis-a-vis des exceptions, de l'inlining, et des appels virtuels sont
tres variables, et que le `cout de l'abstraction' d'une implementation
donnee peu variee dans de larges bornes.

Les seuls langages sur lesquels on peut dire des choses sensees sur la
vitesse d'execution dans l'absolu sont ceux ou l'implementation se
confond avec le langage, et ceux ou le design est tellement buggue que
personne ne sait faire une implementation efficace, ce qui fait... pas
des masses de langages en fait.


1 2 3 4 5