 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
erwan Guest
|
Posted: Wed Jan 14, 2004 11:49 pm Post subject: c++ versus c# |
|
|
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.
|
|
| Back to top |
|
 |
Loïc Joly Guest
|
Posted: Thu Jan 15, 2004 1:10 am Post subject: Re: c++ versus c# |
|
|
erwan wrote:
| Quote: | 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.
|
Je n'ai pas beaucoup d'expérience de c#, mais le mode de fonctionnmeent
préconisé par µsoft c'est un coeur d'application réalisé en langage
performant (c++, avec peut-être même des bouts en assembleur), et
l'interface avec un langage plus "souple" (par exemple c#) et entre les
deux du c++ managé pour jouer le rôle de liant.
D'autres critères sont aussi à prendre en compte :
- L'API à utiliser est fournie pour quel langage ?
- Es-tu sur de ne pas avoir à porter ce logiciel ailleurs que sous
windows dans un futur plus ou moins proche (auquel cas une structure
type C++ / (wxWindows ou QT) serait peut-être un gain important)
- Quels langages connais-tu, et les autres membres du projet ?
- Si ton système a une problèmatique temps réel, tu va peut-être devoir
prendre un OS adapté. Des choses existent avec windows (RTX de
venturcom, par exemple), mais tu es limité dans ton choix de langages
pour la partie temps réel.
--
Loïc
|
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
Posted: Thu Jan 15, 2004 1:50 am Post subject: Re: c++ versus c# |
|
|
On Thu, 15 Jan 2004 00:49:18 +0100, "erwan" <erwanj (AT) free (DOT) fr> wrote:
| Quote: | voici ma question : quel langage choisir entre c++ et c#?
|
Le C++, bien sûr ! On n'est pas sur fclc++ pour rien ;-)
Plus sérieusement, je vois deux critères pour ton choix : d'une part,
comme l'a dit Loïc, il faut voir quel(s) langage(s) s'interfacent bien
avec l'API fournie, mais aussi avec les bibliothèques mathématiques
utilisées (à moins que tu ne cherches à tout recoder toi-même).
D'autre part, et en supposant que tu ne connais aucun des deux
langages (sinon tu ne poserais pas la question), sache qu'apprendre un
langage comme C++ est un gros investissement (en temps). Aussi, il me
paraît judicieux de faire le choix non seulement par rapport à ton
projet, mais aussi par rapport aux projets futurs. Sans réellement
connaître ce langage, je vois quelques inconvénients à C# :
- c'est du pur Microsoft, donc si à un moment ou un autre la
politique de Microsoft te paraît insupportable, ben c'est tant pis pour toi.
- le langage C# est relativement jeune, et, connaissant
Microsoft, j'ai des doutes sur sa pérennité à long terme, ainsi que
sur la stabilité du langage (Mais ça vient sans doute de mes
expériences malheureuses avec VB4 totalement incompatible avec VB3 et
VB5).
Mais encore une fois, ce n'est que le point de vue (peut-être partial)
de quelqu'un qui ne programme pas en C#.
--
;-)
http://www.gotw.ca/gotw/063.htm
http://www.gotw.ca/gotw/067.htm#2
|
|
| Back to top |
|
 |
DINH Viêt Hoà Guest
|
Posted: Thu Jan 15, 2004 8:24 am Post subject: Re: c++ versus c# |
|
|
Fabien LE LEZ wrote :
| Quote: | Sans réellement connaître ce langage, je vois quelques inconvénients à C# :
- le langage C# est relativement jeune
|
L'autre inconvénient est que, tout comme Java, il est interprété. Tu
auras d'ailleurs peut-être plus de pérénnité avec Java. Mais toujours
pas de temps réel possible à moins d'avoir un C# ou un Java adapté au
temps réel.
--
DINH V. Hoa,
etPan! - newsreader, mail user agent -- http://libetpan.sf.net/etpan
|
|
| Back to top |
|
 |
erwan Guest
|
Posted: Thu Jan 15, 2004 8:51 am Post subject: Re: c++ versus c# |
|
|
Informations complémentaires :
L'API fournit est écrite en C++. Les personnes me les fournissant ne
connaissent pas le c#.
Effectivement, mon niveau de programmation est en c++ ou c# est proche du
niveau zero.
Je suis a priori le seul pour programmer cette interface. Tout est à
programmer, même les fonctions mathématiques. Je vais peut être prendre un
stagiaire pour soutenir ce projet. Le problème ensuite c'est de se replonger
dans son code...
A priori, l'interface doit tourner sur un pc, peu importe l'os, mais un
logiciel équivalent que j'utilise tourne bien sous win98 (je pense qu'il a
été développé avec du c++). Si le projet se développe correctement, il est
possible qu'on monte plusieurs machines de ce type. Je pense donc essayer de
rester si cela est possible sous windows.
C'est vrai que le c++ a l'air de mieux convenir pour ce type d'application
mais à mon avis beaucoup plus lourd à programmer.
Merci de vos commentaires.
A+
"DINH Viêt Hoà" <dinh.viet.hoa (AT) free (DOT) fr> a écrit dans le message de
news:etPan.40064e3e.20a4c31f.4b04 (AT) homer (DOT) ..
| Quote: | Fabien LE LEZ wrote :
Sans réellement connaître ce langage, je vois quelques inconvénients à
C# :
- le langage C# est relativement jeune
L'autre inconvénient est que, tout comme Java, il est interprété. Tu
auras d'ailleurs peut-être plus de pérénnité avec Java. Mais toujours
pas de temps réel possible à moins d'avoir un C# ou un Java adapté au
temps réel.
--
DINH V. Hoa,
etPan! - newsreader, mail user agent -- http://libetpan.sf.net/etpan
|
|
|
| Back to top |
|
 |
DINH Viêt Hoà Guest
|
Posted: Thu Jan 15, 2004 9:54 am Post subject: Re: c++ versus c# |
|
|
erwan wrote :
| Quote: | Je suis a priori le seul pour programmer cette interface. Tout est à
programmer, même les fonctions mathématiques. Je vais peut être prendre un
stagiaire pour soutenir ce projet. Le problème ensuite c'est de se replonger
dans son code...
|
1er commandement :
"Sur les doigts du stagiaire tu taperas afin qu'il respecte ton standard
de coding"
2ème commandement :
"Même si son standard est mieux que le tien, se référer au premier
commandement"
| Quote: | C'est vrai que le c++ a l'air de mieux convenir pour ce type d'application
mais à mon avis beaucoup plus lourd à programmer.
|
car, effectivement, pas de garbage collector en C++ (sauf éventuellement
le garbage collector de Boehm).
--
DINH V. Hoa,
etPan! - newsreader, mail user agent -- http://libetpan.sf.net/etpan
|
|
| Back to top |
|
 |
Ignace Guest
|
Posted: Thu Jan 15, 2004 12:53 pm Post subject: Re: c++ versus c# |
|
|
"DINH Viêt Hoà" <dinh.viet.hoa (AT) free (DOT) fr> a écrit dans le message de
news:etPan.40066347.4590f267.4b04 (AT) homer (DOT) ..
| Quote: | erwan wrote :
Je suis a priori le seul pour programmer cette interface. Tout est à
programmer, même les fonctions mathématiques. Je vais peut être prendre
un
stagiaire pour soutenir ce projet. Le problème ensuite c'est de se
replonger
dans son code...
1er commandement :
"Sur les doigts du stagiaire tu taperas afin qu'il respecte ton standard
de coding"
2ème commandement :
"Même si son standard est mieux que le tien, se référer au premier
commandement"
C'est vrai que le c++ a l'air de mieux convenir pour ce type
d'application
mais à mon avis beaucoup plus lourd à programmer.
car, effectivement, pas de garbage collector en C++ (sauf éventuellement
le garbage collector de Boehm).
|
C'est pas un peu hâtif de parler de garbage collector à un débutant ?
Je préférerai dire à Erwan qu'il devra gérer sa mémoire à l'octet prêt (ce
qui peut être compliqué) en C++,
alors qu'avec le C#, ce n'est pas nécessaire. Mais qu'en tant que "semi
interprété", le C# risque d'être plus lent.
Même s'il s'appuie sur des "composants" (portions de codes complexes)
théoriquement optimisés.
Par contre, les 20uS me semblent utopiques, en C++ aussi, sur une machine
standard.
Il va peut être falloir paralléliser (threads ?), et c'est pas facile.
--
Ignace
|
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
Posted: Thu Jan 15, 2004 2:08 pm Post subject: Re: c++ versus c# |
|
|
On Thu, 15 Jan 2004 09:51:48 +0100, "erwan" <erwanj (AT) free (DOT) fr> wrote:
| Quote: | C'est vrai que le c++ a l'air de mieux convenir pour ce type d'application
mais à mon avis beaucoup plus lourd à programmer.
|
Mouais... C'est pas parce qu'un langage a moins de fonctionnalités
qu'il est plus facile à utiliser.
--
;-)
http://www.gotw.ca/gotw/063.htm
http://www.gotw.ca/gotw/067.htm#2
|
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
Posted: Thu Jan 15, 2004 2:09 pm Post subject: Re: c++ versus c# |
|
|
On Thu, 15 Jan 2004 09:24:30 +0100, DINH Viêt Hoà
<dinh.viet.hoa (AT) free (DOT) fr> wrote:
| Quote: | L'autre inconvénient est que, tout comme Java, il est interprété.
|
Si je ne m'abuse, Java n'est pas interprété. Un programme Java est
compilé à chaque exécution.
--
;-)
http://www.gotw.ca/gotw/063.htm
http://www.gotw.ca/gotw/067.htm#2
|
|
| Back to top |
|
 |
DINH Viêt Hoà Guest
|
Posted: Thu Jan 15, 2004 3:59 pm Post subject: Re: c++ versus c# |
|
|
Fabien LE LEZ wrote :
| Quote: | On Thu, 15 Jan 2004 09:24:30 +0100, DINH Viêt Hoà
[email]dinh.viet.hoa (AT) free (DOT) fr[/email]> wrote:
L'autre inconvénient est que, tout comme Java, il est interprété.
Si je ne m'abuse, Java n'est pas interprété. Un programme Java est
compilé à chaque exécution.
|
Comme tout langage interprété, non ?
Enfin ça dépend ce que tu appelles langage interprété. perl par exemple
est appelé langage interprété mais le code est bien compilé à chaque
exécution.
Enfin ça dépend de la définition de langage interprété. Je crois
qu'aujourd'hui, la frontière entre les langages compilés et ceux qui
sont interprétés est un peu floue.
--
DINH V. Hoa,
etPan! - newsreader, mail user agent -- http://libetpan.sf.net/etpan
|
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
Posted: Thu Jan 15, 2004 4:38 pm Post subject: Re: c++ versus c# |
|
|
On Thu, 15 Jan 2004 16:59:04 +0100, DINH Viêt Hoà
<dinh.viet.hoa (AT) free (DOT) fr> wrote:
| Quote: | Si je ne m'abuse, Java n'est pas interprété. Un programme Java est
compilé à chaque exécution.
Comme tout langage interprété, non ?
|
Non. PHP, par exemple, lit une instruction, l'évalue, et fait les
actions que l'instruction lui demande. Du moins, c'est ce que j'ai cru
comprendre.
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é.
| Quote: | Enfin ça dépend de la définition de langage interprété. Je crois
qu'aujourd'hui, la frontière entre les langages compilés et ceux qui
sont interprétés est un peu floue.
|
J'ai l'impression que la frontière n'est pas si floue que ça : Il y a
les langages interprétés, où l'interpréteur lit chaque instruction,
tente de la comprendre, et fait ce qu'elle demande (l'exemple le plus
flagrant étant le langage de script de Windows (.BAT), où on peut
modifier le code pendant l'exécution, en modifiant le fichier .BAT).
Et il y a les langages compilés, où le code est transformé en
exécutable (que ce soit chez le développeur ou chez le client), puis
cet exécutable est lancé.
Mais je suis sûr qu'un plus spécialiste que moi saura prouver que mon
message est un tissu d'âneries ;-)
--
;-)
http://www.gotw.ca/gotw/063.htm
http://www.gotw.ca/gotw/067.htm#2
|
|
| Back to top |
|
 |
Jean-Marc Bourguet Guest
|
Posted: Thu Jan 15, 2004 5:07 pm Post subject: Re: c++ versus c# |
|
|
DINH Viêt Hoà <dinh.viet.hoa (AT) free (DOT) fr> writes:
| Quote: | Je crois qu'aujourd'hui, la frontière entre les langages compilés et
ceux qui sont interprétés est un peu floue.
|
La frontiere entre langages compiles et interpretes a toujours ete
floue. Meme celle entre implementation par un compilateur et un
interpreteur l'est depuis longtemps, en particulier pour les systemes
lisp...
A un extreme on a l'interpreteur pur et dur repartant de la
representation textuelle a chaque fois qu'il execute une instruction
et a l'autre le compilateur optimiseur generant de l'assembleur.
Rendant la situation plus ou moins floue, on trouve l'utilisation de
representations intermediaires allant d'une tokenization legere
(simplement les mots cles) ou complete au byte code qui sont
interpretes mais ayant beaucoup ou peu de rapport avec le langage en
passant par le threaded code (la representation classique des forths).
L'utilisation d'interpreteur de byte code faisant de la compilation
JIT. L'utilisation de compilation incrementale. L'optimisation des
bytes codes. La compilation/optimisation au link (voir HP) ou au
chargement (voir certaines implementations d'Oberon, et celle de
reference de C# aussi si j'ai bien compris). L'emulation de
processeurs (voir les implementations actuelles des architectures 36
bits d'Unisys et de Dec).
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
|
|
| Back to top |
|
 |
Michel Michaud Guest
|
Posted: Thu Jan 15, 2004 5:47 pm Post subject: Re: c++ versus c# |
|
|
Dans news:bu4p8u$q7q$1 (AT) news-reader2 (DOT) wanadoo.fr, Loïc
Joly <loic.actarus.joly (AT) wanadoo (DOT) fr> a écrit :
| Quote: | Je n'ai pas beaucoup d'expérience de c#, mais le mode de
fonctionnmeent préconisé par µsoft c'est un coeur d'application
réalisé en langage performant (c++, avec peut-être même des bouts
en assembleur), et l'interface avec un langage plus "souple" (par
exemple c#) et entre les deux du c++ managé pour jouer le rôle de
liant.
|
Tu peux me dire où tu as vu que c'est ce que préconise MS ?
D'après ce que je lis un peu partout et aussi en considérant les
efforts autour du nouveau C++ pour .NET, je crois avoir compris
que C# n'a pas eu l'impact attendu. Que pour un langage simple,
il y a toujours VB, tout aussi capable que C#.
Par ailleurs, tu peux expliquer en quoi C# est « plus souple »
que C++ ? Je ne comprends pas ce que ça veut dire. À force de
faire du C++ standard, je trouve un peu désagréable de voir
tous ces nouveaux mots clefs commençant par des __ afin de
faire du .NET. Mais je n'ai pas encore vu d'endroit où C++
manquait de souplesse. Au contraire, il me semble que C++ peut
faire plus de choses que C# : ça c'est la souplesse !
--
Michel Michaud [email]mm (AT) gdzid (DOT) com[/email]
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
|
|
| Back to top |
|
 |
Adrien Treccani Guest
|
Posted: Thu Jan 15, 2004 6:37 pm Post subject: Re: c++ versus c# |
|
|
Hello,
| Quote: | Sans réellement connaître ce langage, je vois quelques inconvénients à
C# :
- le langage C# est relativement jeune
L'autre inconvénient est que, tout comme Java, il est interprété.
|
Le C# (ainsi que tout langage .NET) est un langage compilé. Cela se passe en
deux étapes : la compilation en code intermédiaire (MSIL), puis la
compilation finale lors de la première exécution sur le poste client. Le
code résultant est donc natif et optimisé en fonction de la machine sur
lequel il est exécuté. Il existe d'ailleurs des outils pour compiler
directement en binaire un "exécutable" .NET.
Bonne soirée
|
|
| Back to top |
|
 |
erwan Guest
|
Posted: Thu Jan 15, 2004 6:38 pm Post subject: Re: c++ versus c# |
|
|
Admettons que je programme mon application en c++, est ce je peux ou ne dois
pas utiliser le framework.net?
Si j'ai bien compris, comme en Java, cela nécessite une machine virtuelle
(CLR) qui ralentit l'exécution. Je ne pourrai donc pas utiliser les classes
qui y sont développés.
Vrai ou faux?
"Jean-Marc Bourguet" <jm (AT) bourguet (DOT) org> a écrit dans le message de
news:pxb8yk9m97i.fsf (AT) news (DOT) bourguet.org...
| Quote: | DINH Viêt Hoà <dinh.viet.hoa (AT) free (DOT) fr> writes:
Je crois qu'aujourd'hui, la frontière entre les langages compilés et
ceux qui sont interprétés est un peu floue.
La frontiere entre langages compiles et interpretes a toujours ete
floue. Meme celle entre implementation par un compilateur et un
interpreteur l'est depuis longtemps, en particulier pour les systemes
lisp...
A un extreme on a l'interpreteur pur et dur repartant de la
representation textuelle a chaque fois qu'il execute une instruction
et a l'autre le compilateur optimiseur generant de l'assembleur.
Rendant la situation plus ou moins floue, on trouve l'utilisation de
representations intermediaires allant d'une tokenization legere
(simplement les mots cles) ou complete au byte code qui sont
interpretes mais ayant beaucoup ou peu de rapport avec le langage en
passant par le threaded code (la representation classique des forths).
L'utilisation d'interpreteur de byte code faisant de la compilation
JIT. L'utilisation de compilation incrementale. L'optimisation des
bytes codes. La compilation/optimisation au link (voir HP) ou au
chargement (voir certaines implementations d'Oberon, et celle de
reference de C# aussi si j'ai bien compris). L'emulation de
processeurs (voir les implementations actuelles des architectures 36
bits d'Unisys et de Dec).
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF:
http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
|
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|