CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

C# C ou C++ ?

Darth-vader-2
Darth-vader-2
Niveau 10
03 février 2013 à 17:44:58

Le langage C est idéal pour commencer, tu peux après choisir de continuer soit avec le C# ou le C++

tbol
tbol
Niveau 20
03 février 2013 à 18:14:25

Pas du tout, l'idéal pour commencer c'est le Pascal
(grosse fatigue...)

FredericPlanet
FredericPlanet
Niveau 3
09 février 2013 à 12:21:19

@Ywnith

Oui moi aussi je développe en C# depuis deux ans,
mais je maintient que c'est une usine a gaz xD

Bien sur ça dépend de ce que tu veux faire,
je ne dis pas que le C# est tout pourrit.

Mais il y a beaucoup de pièges à performances qui ne sont pas facile à éviter sans connaitre les détails du langage.

Dès que tu écris du code critique, c'est plus évident de faire du code performant en C++ qu'en C#.

Par exemple le simple fait de ne pas pouvoir avoir d'instances de classe automatique sur la pile dans une fonction et de devoir passer par un new et donc de passer par le GC, ça n'aide pas à faire en sorte que ton CLR meme une fois compilé en natif puisse rivaliser avec du C / C++.

Bien sur on peut imaginer un GC super optimisé et intégré à la génération du CLR qui soit capable d'évaluer le scope d'une variable suffisamment pour finalement avoir une variable automatique.

Mais d'une ce n'est pas forcement le cas et de deux ce n'est définitivement pas le programmeur qui le gère.

C'est un simple exemple, on pourrait parler du boxing, etc.

Le fait est que dès que tu travailles avec un langage plus haut niveau, non seulement le langage tend à faire beaucoup de chose dans ton dos sans que tu le saches, mais en plus c'est pas évident de ne pas se laisser tenter par le fait de ne plus y faire attention.

Et on a vite fait de se retrouver avec un code largement plus lent et une consommation mémoire beaucoup plus importante en C# qu'en C/C++.

De plus, si tu passes ton temps à faire attention à tout pour éviter ça, tu risques de perdre beaucoup en vitesse de dev...

Ça dépend de ce que tu développes fondamentalement.

Mais je suis convaincu que la simplicité et la clarté du C / C++ (on passera sur les template de class à héritage multiple avec des surcharge d’opérateur stupide dans tout les sens),

C'est plus facile pour commencer et bien maîtriser ce que l'on fait qu'avec les C# / java et leur Garbage Calamitator :)

Il est vrai qu'en utilisant le mode unsafe on peut se rapprocher pas mal d'un développement C en C#, mais il faut voir que le mode unsafe n'est pas toujours disponible.

Par exemple sous Unity, il me semble qu'il est impossible d'utiliser le mode unsafe de c#.
Donc si c'est pour s'habituer à utiliser le c# de manière non conventionnelle,
ce n'est pas non plus forcement une bonne idée pour commencer.

De mon point de vue, programmer en Java / C# pour commencer ça ne t'apprends forcement à bien maîtriser tes ressources en général.

En tout cas c'est ce que j'ai pu constater chez beaucoup de gens qui ont commencé comme ça.

Aldebran
Aldebran
Niveau 10
09 février 2013 à 22:02:38

C ou C++ sont naturellement plus performants que C#. Après, la différence de performance généralement ça va être du simple au double, pas plus.

Par contre en ce qui concerne le développement, le C# c'est bien plus agréable et simple à utiliser que le C++ et les temps de développement sont biens raccourcis (d'où son succès dans l'industrie).

Pour commencer le C ou le C# me paraissent aussi bien. Le C# permettra au débutant de ne pas se focaliser sur des concepts bas niveau, et le C permettra au débutant d'étudier les concepts bas-niveau et l'algorithmique de base sans se soucier de la couche objet. Mais pour débuter je déconseillerais peut-être le pur C++ : string, cout, cin, etc. ça offre pas mal d'avantages, mais par ailleurs certains concepts sont plus complexes à maîtriser.

_skip
_skip
Niveau 10
10 février 2013 à 20:20:09

Frederic a raison sur certains points, ce qui est facile est rarement gratuit.
Ce qu'il ne précise pas en revanche et qui me semble important, c'est sur quel pourcentage du code il doit vraiment faire gaffe. Et sur la plupart des applications, c'est facilement moins de 15%.

Sans compter que de mon expérience, du bon code C# (oui ca existe) est plus maintenable et plus facilement refactorable que du bon code C++.

tbol
tbol
Niveau 20
10 février 2013 à 22:18:45

Certes C# est plus moderne que C++ et C# est très bien pensé (par le créateur de Pascal Objet je le rappelle), mais enfin c'est pas impossible d'être "productif" en C++, en utilisant un Framework comme Qt par exemple.

Tsuioku
Tsuioku
Niveau 9
11 février 2013 à 12:10:20

Le C est en train de devenir obsolète. Il est encore très utilisé dans des secteurs comme l'embarqué et l'aéronautique. Mais il est en train de suivre le même chemin que le COBOL, c'est-à-dire un marché de niche.

Quitte à apprendre un nouveau language, autant se lancer dans la programmation objet, qui est vraiment intéressante du point de vue conceptuel.
Ensuite, C++ ou C#, c'est une question de préférence. Les deux sont très utilisés dans le monde professionnel (avec Java).

Perso, j'aime C#, même si la portabilité cross-plateforme en prend un coup.

tbol
tbol
Niveau 20
11 février 2013 à 14:48:07

Je ne sais pas ou tu as vu que le C est en train de devenir "obsolète", il est encore classé numéro 2 et stable sur le tiobe : http://www.tiobe.com, et classé dans les premier dans les classements de http://langpop.com/
C à toujours eu une place à part, c'est pas fait pour faire des applications de gestion mais entre autres de l'industriel, du système et de la robotique et il en est toujours ainsi. Bref ça se compare pas aux autres langages c'est tout , ça à sa propre utilité.

Le C# portable ça existe c'est Java, C# ça n'est que la version Microsoft de Java, même s'il y à des trucs dans C# qui peuvent êtres considérés comme spécialement bien foutu car son créateur est une sorte de génie dans son genre.

Tsuioku
Tsuioku
Niveau 9
11 février 2013 à 16:20:38

C'est simple, regardes les offres actuelles. Tu verras qu'il y a essentiellement du C++, C# et Java.
Comme je l'ai mentionné, C n'est plus demandé que dans l'embarqué et certains secteurs comme l'aéronautique. Les nouveaux projets basculent en C++.

Au sujet des liens que tu mentionnes, je les prendrais avec des pincettes.
Dans le premier, regardes les clients. Il n'y a pas les grands comptes (Bull, EADS, Dassault, Safran, etc.).
Dans le deuxième, la source n'est pas citée. Est-ce que cela provient des sociétés ou des particuliers ? De plus, il semble qu'il n'ait pas été mis à jour depuis presque 2 ans.

Tu sais, moi aussi j'adore le C, j'en ai fait pendant 8 ans. Mais je vois bien que le marché est en train de se tourner vers autre chose.

tbol
tbol
Niveau 20
11 février 2013 à 17:54:41

Je connais les offres actuelles, ça fait déjà plus de 10 ans que les grandes entreprises demandent du Java et du C# ça n'est pas nouveau, et ça ne rends pas le C obsolète pour autant, ça reste toujours utilisé dans les projets systèmes dans le secteur industriel ça n’a pas changé.

Ywnith
Ywnith
Niveau 10
11 février 2013 à 18:02:44

C pas que dans l'aéronautique en effet ... Des usines qui fabriquent des simples robot nettoyants au sol a 20€ produits en masse, possèdent un circuit intégré programmé en C. Exemple parmit beaucoup d'autres ...

Tsuioku
Tsuioku
Niveau 9
11 février 2013 à 18:08:43

Cela correspond à ce que j'ai dit. Les exemples que vous citez sont du domaine de l'embarqué.

_skip
_skip
Niveau 10
11 février 2013 à 18:10:42

Mais l'embarqué c'est un sacré pourcentage des processeurs. J'imagine plus facilement le C++ perdre de la vitesse que le C.

Tsuioku
Tsuioku
Niveau 9
11 février 2013 à 18:27:32

@_skip

Le C++ a quasiment entièrement supplanté le C dans le développement fonctionnel et haut-niveau.

Par contre, le C restera le language de référence dans l'embarqué. Je connais d'excellent développeur qui sont passés par l'utilisation du C++ pour l'embarqué, et ils sont revenus au C.

Pour aller plus loin dans ce que tu dis, le C survivra grâce à l'embarqué. Maintenant, est-ce que le C++ survivra face aux languages managés comme C# et Java, là est la question.

godrik
godrik
Niveau 30
11 février 2013 à 18:50:06

Tsuioku, je vois le monde depuis la perspective du calcul haute performance et C ou C++ ne sont pas pres de s'en aller de ce secteur la.

Des que tu as besoin de performance, Java et C# ne sont juste pas les bon outils.

tbol
tbol
Niveau 20
11 février 2013 à 18:51:28

C# à pas encore remplacé C++ chez les éditeurs de logiciels pour windows, en particulier sur les jeux. Comme j'ai écrit sur un autre fil, je connais un jeu ou ils sont passés à C#, sword of the stars 2, je suppose pour profiter des avantages d'un environnement managé, résultat le est jeux quasiment injouable tellement il est lent. La version 1 de sword of the stars, faite en C++, est par comparaison très stable et très performante.

Donc C# pour les applications d'entreprises et les applications web dotnet ok, mais pour les logiciels comme les jeux ça reste à voir...

Le plus gros changement récent que je voie sur les langages c'est la montée de la demande en développeurs sur Android et Objective C à cause du succès des smartphones et des tablettes, du coup Android remet un peu Java à la mode parce que Oracle à pas vraiment aidé sur ce coup la.

Aldebran
Aldebran
Niveau 10
11 février 2013 à 19:24:00

"Tsuioku, je vois le monde depuis la perspective du calcul haute performance et C ou C++ ne sont pas pres de s'en aller de ce secteur la. "

CUDA et OpenCL sont pas mal pour le calcul haute performance et sont utilisables en Java ou C#, sans que le langage choisi n'impacte sensiblement les performances. A terme pour les calculs parallélisables, C et C++ risquent de perdre de l'importance.

"Comme j'ai écrit sur un autre fil, je connais un jeu ou ils sont passés à C#, sword of the stars 2, je suppose pour profiter des avantages d'un environnement managé, résultat le est jeux quasiment injouable tellement il est lent."

Le C# s'impose massivement pour les jeux indépendants, notamment via XNA. Fez, Magicka, Terraria, Bastion, etc. sont des jeux qui tournent extrêmement bien. D'un autre côté, faut reconnaître que ce ne sont pas des jeux qui bouffent beaucoup de ressources.

Ce qui me paraît bizarre quand on dit que les jeux ne tournent pas en C# ou en Java, c'est que à la base, le CPU est rarement un élément limitant pour le jeu. Ce qui limite les perfs c'est le GPU, et là, vu qu'une grande part du code est déporté sur la carte, C++, Java ou C# devraient s'en tirer quasiment aussi bien normalement, non ?

tbol
tbol
Niveau 20
11 février 2013 à 19:56:05

Sur sword of the stars 2 c'est pas les combats 3D qui sont lents (donc pas un problème calculs graphiques) c'est de passer d'une fonction du jeux à un autre, et aussi le calcul des tours, il doit y avoir quelque chose de mal géré au niveau de la mémoire ou du chargement/Déchargement des modules je ne sais pas, peu être que les développeurs sur ce jeux ont pas sur gérer dotnet aux mieux et que c'est bien géré dans d'autre jeux.

Tsuioku
Tsuioku
Niveau 9
11 février 2013 à 20:02:07

Ne me faites pas dire ce que je n'ai pas dit lol.
Je n'ai jamais dit que le C++ allait disparaître, je n'ai fait que soulever une réflexion.

@godrik
Pas seulement ce secteur pour le C++. Par exemple, Dassault fera du C++ encore longtemps car c'est tout son logiciel Catia qu'il faudrait basculer en C# sinon.
Pour le C, cela rejoint mon opinion du "marché de niche".

@tbol
C'est normal, on ne peut pas accéder à directX de façon directe (elle était facile celle-là lol) en C#. Il y a bien XNA, mais bon, il faut bien avouer que c'est mal foutu. D'ailleurs, personne ne l'utilise sur XBOX 360 pour développer les jeux "gold", uniquement du C++.

@Aldebran
XNA est suffisant pour faire le genre de jeu que tu cites (en bref, un jeu pouvant tourner sur une tablette), mais très lourd lors du développement d'un jeu comme Battlefield ou CoD. Le problème vient du "non-accès" à directX. Pour une raison obscure, Microsoft a laissé tomber Managed directX.

Mon point de vue, c'est que, du moins pour la plateforme Windows, C# est appelé à supplanter le C++, sauf dans quelques secteurs (comme le jeu-vidéo). Surtout que Microsoft fait le forcing derrière pour imposer C#. Ils ont déjà abandonné le C (Visual Studio 2010 et 2012 ne compilent pas du C99). A mon avis, le C++ est sur leur planning d'éradication. A moyen ou long terme.

Pour en revenir à l'OP :
Si ce que tu aimes c'est le développement bas-niveau, apprends le C.
Sinon, je te conseille plutôt C++ ou C#.

Tsuioku
Tsuioku
Niveau 9
11 février 2013 à 21:05:07

Oui, je le sais que Windows, ses api, .NET, etc., sont faits en C++.
Je me suis peut-être mal exprimé.
Microsoft continuera à faire du C++. Mais ils semblent plus soucieux de promouvoir le C# qu'autre chose. Ils ne développent plus les MFC et disent à tout le monde de basculer sur les Winform ou WPF. De plus, Visual Studio tarde à être conforme avec C++11.

Microsoft n'est pas qu'un membre éminent de la Fondation C++. C'est aussi un co-fondateur et un financeur.
En tout cas, s'ils souhaitent montrer qu'ils soutiennent C++, ils le font bien mal.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment