IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Débats sur le développement - Le Best Of Discussion :

Quel avenir du C++ par rapport au C# ou à Java ?


Sujet :

Débats sur le développement - Le Best Of

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Par défaut
    Oui, je ne pense pas que C++ soit menacé de si tot.

    C#, .NET, ... sont sympa mais seulement sous windows, exit le monde du free.

    JAVA reste du code pseudo-interprété et meme si la derniere JVM optimise de facon sympa les perf. certain domaine necessitant une certaine rapidité ne peuvent se permettent de l'utiliser.

    Je pense par exemple à la recherche, avec des outils de parralélisations, de compilation, de partitionnement, de Systeme, ...

    Maintenant dans le monde del'entreprise moderne ou les IHM prime souvent sur la perf, C++ disparait pour 2 raisons :
    - le portage inutile (WIN 100%)
    - difficulté de créer une GUI par rapport aux autres langages.

    Je suis étonné dans el monde des grandes entreprises de l'avancé de PHP pour des raisons de distributions d'appli.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 178
    Par défaut
    Citation Envoyé par Breuleux
    mais des langages avec GC et bytecode comme Java et C# (ou peut-être un nouveau langage, qui sait) les auront remplacés à peu près partout, tout simplement parce que les progrès en matière de JIT auront comblé la différence de performance. En d'autres mots, la JVM sera écrite en Java, le système d'exploitation sera écrit en Java.
    Mouhahaha un OS en Java Bon alors dans vraiment très longtemps alors, genre le Java ne sera plus ce qu'il est actuellement.

    Mais la quesion que tout le monde se pose est : <<a quoi cela sera de compiler en bytecode pour machine virtuelle si c'est pour compiler a la volé JIT en code natif ?>> Cela serait quand même considérablement plus simple de compiler directement en code natif. Moi ce que je vois surtout c'est que les machines virtuelles servent de surcouche par dessus le système d'exploitation pour le rendre plus puissant. Ce qu'il faudrait faire c'est modifier directement le SE pour inclure les améliorations des machines virtuelles dedans.


    Citation Envoyé par Breuleux
    Le principe dont il faut se rappeler c'est que plus un langage est bas niveau, moins le compilateur/interpréteur/jit a de latitude pour optimiser..
    Tout à fait d'accord, mais le Java/C# ne sont pas si haut-niveau que cela. On pourrait même dire que le Java est un langage simpliste par rapport aux possibilité de certain langages objets. C'est pour cela que ca va être très dur de rendre le Java très rapide, le langage n'est pas bien adapté pour cela. C# c'est un peu mieux et il y a des bonnes idée mais il reste du chemin a parcourir.

    Citation Envoyé par Breuleux
    Comme Java et C# sont relativement proches de C et C++, ils seront probablement à leur niveau dans peu de temps. Suivront les langages dynamiques comme Python ou Ruby et puis qui sait quoi par la suite..
    A part que le niveau d'optimisation du C++ n'est pas terrible, la plupart des optimisations son géré a la main par le programmeur : fonction non virtuelle, inlining, pointeurs...

    Et le problème des langages <<dynamiques>> (ca veut rien dire ca ... bref) est qu'ils se permettent des choses possibles uniquements avec un gros support d'éxecution. Et ca c'est très dur à optimiser.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Par défaut
    Citation Envoyé par outs
    Mais la quesion que tout le monde se pose est : <<a quoi cela sera de compiler en bytecode pour machine virtuelle si c'est pour compiler a la volé JIT en code natif ?>> Cela serait quand même considérablement plus simple de compiler directement en code natif. Moi ce que je vois surtout c'est que les machines virtuelles servent de surcouche par dessus le système d'exploitation pour le rendre plus puissant. Ce qu'il faudrait faire c'est modifier directement le SE pour inclure les améliorations des machines virtuelles dedans.
    Le JIT a davantage d'informations à sa disposition pour générer du bon code natif. Par exemple, il peut optimiser en fonction de la taille du cache, du pourcentage d'utilisation de telle ou telle fonction, etc. Or, c'est plus facile de faire ça à partir d'un bytecode qu'à partir du code natif (qu'on doit par ailleurs obtenir pour toute architecture cible). Mais si on veut, on peut mettre le code natif en cache et en théorie on pourrait même distribuer le bytecode avec des bouts natifs de différentes architectures qui ont été optimisés avec soin à force d'usage. Dans ces cas-là, cela reviendrait un peu au même que de le compiler une première fois, plus quelques avantages.

    Je suis d'accord qu'une meilleure intégration avec le système d'exploitation serait une bonne idée.

    Tout à fait d'accord, mais le Java/C# ne sont pas si haut-niveau que cela. On pourrait même dire que le Java est un langage simpliste par rapport aux possibilité de certain langages objets. C'est pour cela que ca va être très dur de rendre le Java très rapide, le langage n'est pas bien adapté pour cela. C# c'est un peu mieux et il y a des bonnes idée mais il reste du chemin a parcourir.
    Oui, c'est vrai Java est du C++ sans pointeurs, avec GC et forçant une organisation en objets plus stricte. Il n'y a pas grand chose d'autre à dire; les entiers/tableaux ne sont pas des objets, il n'y a pas de lambdas, pas de typage dynamique, un foreach apparu sur le tard, pas de macros, de génération de code ou de métaprogrammation, sans dire que tout langage de haut niveau devrait avoir tout ça, il manque quand même pas mal d'abstractions. Sûr, il y a des outils, mais bof...

    En tout cas, la différence entre ASM et C++ est bien plus grande que celle qui existe entre C++ et Java. C'est donc possible que Java ne tue jamais C++, tout simplement parce la différence entre les deux n'est pas assez prononcée.

    A part que le niveau d'optimisation du C++ n'est pas terrible, la plupart des optimisations son géré a la main par le programmeur : fonction non virtuelle, inlining, pointeurs...
    Pour le moment, c'est son avantage. Si C++ commençait à s'occuper de tout ça, il n'aurait plus vraiment d'attrait.

    Et le problème des langages <<dynamiques>> (ca veut rien dire ca ... bref) est qu'ils se permettent des choses possibles uniquements avec un gros support d'éxecution. Et ca c'est très dur à optimiser.
    C'est juste, mais une grande partie de leur code peut être compilée pour être aussi efficace que du C. Il y a plusieurs façons de faire. Étant donné un typage dynamique, on peut fabriquer plusieurs versions d'une même fonction pour différents types et tenter le plus possible d'utiliser les versions spécialisées. On peut profiler le code et remplacer les tables de hachage par une structure de type C, quitte à essuyer un gros coût si la structure est modifiée. En ce qui a trait à l'évaluation dynamique de code, il suffit de regarder toutes les applications qui utilisent des langages de script pour spécialiser leur comportement

    Remarque que je ne crois pas que les langages avec typage dynamique vont supplanter les langages avec typage statique, tout simplement parce que de dire que "f s'applique sur des nombres entiers" fait partie de la définition d'un programme. Si je définis la fonction factorielle je m'attends à ce que le programme plante si je l'utilise sur une chaîne de caractères, même si le langage a décidé que "123"-1 est valide et donne "23" et que "a"*"b" est valide et donne "ab". C'est aussi très utile pour déboguer. D'un autre côté, cela demande un certain effort et cet effort n'est pas toujours justifié, surtout si on veut prototyper.

    Je crois que des langages avec typage optionnel vont gagner de la popularité. J'aimerais bien coder un programme sans types pour pouvoir le faire fonctionner plus vite et essayer plusieurs structures différentes, et une fois que je suis content de ma structure j'aimerais bien pouvoir rendre mon programme plus robuste avec des déclarations de types.

  4. #4
    Invité de passage
    Inscrit en
    Septembre 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 1
    Par défaut C++ va mort!
    Citation Envoyé par phpdev
    Que pensez-vous de l'avenir de C++ par rapport à C# ou même Java ? Cette question s'oriente surtout sur le devenir des logiciels de développement
    1. Jeux d'ordinateur(err, je ne sais pas un bon terme en fransais, graphics&physics engines)
    2. Drivers, OS etc - tous que travaille avec hardware
    3. Quelque systeme grand, par example, pour station nucléaire

    C'est tout Si vous est un spécialiste grand, il n'y a rien à s'inquiéter; si non - c# nous sauvera.

    ps Et pardonnez-moi pour mon pauvre francaise

  5. #5
    Membre éprouvé Avatar de siplusplus
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 78
    Par défaut
    Bonjour,

    Eh bien je pense que C++ (moi lol), son prédécesseur C pour être précis,
    est devenue une norme.
    Un de ces trois aura probablement plus de facilité pour
    fonctionner sur n'importe quelle plateforme.
    Un de ces trois a été créé pour développer un système.
    Un de ces trois est propriétaire et est devenu un langage systeme
    et permet aussi d'utiliser "n'importe quel langage" sur la même plateforme.
    etc ...

  6. #6
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut WHAT VISUAL C++ LIBRARY THAT TARGETS THE WEB?
    • Currently VC++ has no IDE support in Visual Studio for programming these CLR technologies (why???):
    • 1) ASP .NET
    • 2) WPF
    • 3) WCF
    • 4) LINQ
    while of course C# supports all of them. Clearly you, and Microsoft, could support all of these using C++/CLI in pure/safe mode modules.
    If you are not interested in supporting .NET, and just ceding .NET development to C#, just drop C++/CLI and stop pretending that you are creating a level field for all .NET languages.
    • What is the real reason of releasing the only Web library ATL Server on CodePlex.com? Is it to hard to ingrate some of sophisticated web components like in ASP. NET to make our only C++ Web library ATL Server web developpement easy to use?
    • MFC will support BCG controls bar but it is only for desktop application and not for web application.
    • Can we built 3-tiers application entirely in VC++?
    You did an excellent job of creating a first class .NET language with C++/CLI and you have done a general good job in interoperating between C++/CLI and standard C++, but you have done a terrible job of bringing .NET technologies to C++/CLI.
    • I would want to say that www.hotmail.com still use *.srf web page to open connection in the mail box. And *.srf pages are built using ATL Server technology. It 's the same for .NET passeport web pages. Can you explain this?
    • With Silverlight 1.1 we can build interaction web application using C# or VB .NET with the .NEt Framework and C++/CLI is not a .NET language?
    • Is ASP .NET only for C# and VB.NET? But it is not all of .NET language?
    • Can you explain the real Visual C++ Futures?
    Je remercie Microsoft et BCGSoft pour la mise à jour des bibliothèques de Visual C++ et en particulier des MFC (intégrant le ruban d’office 2007, le look and feel d’Office 2007 & 2003, les fenêtres auto-glissantes et auto hide de Visual Studio et les toolbars et rebars customisables d’Internet Explorer 7.0) vers cette nouvelle version 9.0 de Visual Studio 2008.

    Mais j'ai une petite réclamation. Ce nouvel update des MFC en particulier et des libraires de Visual C++ en général ne cible que les applications de bureaux et non les applications Web.
    Je ne vois aucune librairie dédiée de Visual C++ 2008 qui ciblerait le Web alors que le développement Web prend une ampleur telle qu’on ne peut s'en passer à l’heure actuelle vu qu’on peut réaliser des applications web à interfaces riches d'internet (RIA, SylverLight, Ajax, etc…).

    Je sais que l'équipe de Visual C++ a abandonné la seule et unique bibliothèque ATL Server en la faisant passer en open source sur CodePlex.com.
    Cette bibliothèque d’ATL Server était la seule qui soit purement orienté Web qui pouvait faire le bonheur des développeurs C++ qui n'avaient même pas besoin de regarder à ASP .NET ou à une quelconque technologie pour le Web tel que PHP ou les JSP.

    Je sais que les MFC permettent également ce genre de développement d’application mais pas aussi autant que faisait cette libraire dédiée d’ATL Server.

    Ainsi ma question serait de savoir est-ce qu’il n’y pas de développeurs Web dans l’équipe de Visual C++ qui tout en réfléchissant à son futur pourraient repenser cette bibliothèque d’ATL Server et de la refondre ou de l’améliorer afin d’intégrer tous les gadgets actuels tels qu’on les voit dans ASP .NET par exemple (Web Contrôles ou des Web Forms).

    Et si la reprise de ATL Server n’est pas envisageable pourquoi ne pas intégrer suffisamment le développement d’application ASP. NET avec C++/CLI comme code behind. Et founir des outils pour WPF, WCF et LINQ comme en C# directement dans l'IDE Visual Studio.

    C'est quel Visual Studio 2008 Microsoft veut il nous pondre pour nous développeur C++? Sans ASP. NET avec C++/CLI code behind, sans outils pour WPF, WCF et LINQ utilisant C++/CLI, sans une réelle bibliothèque dédié au Web (ATL Server).

    La dernière réponse que j'ai eu à mes questions n' étaient pas satisfaisantes et non convaincantes. C# et VB .NET permettent le développement d’application aussi Windows et que Web. De même Java le fait également avec ses pages JSP.

    Il serait faux de croire que seul le C++ puisse s’intéresser à ce qui est sous le capot car Java tout comme C# entrent également sous le capot.

    Et d’ailleurs les classes de .NET sont faites en C# et pas en C++.
    Le langage C# ou Java pénètre toutes les couches du développement n-tiers tels que la couche d’accès au donnés, la couche métiers et la couche présentation.

    Si les bibliothèques de VC++ sont dédiées aux applications windows ou sont celles qui le sont uniquement pour les applications Web?

    WHAT VISUAL C++ 2008 LIBRARY THAT TARGETS THE WEB?

  7. #7
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Citation Envoyé par loco_che Voir le message
    1. Jeux d'ordinateur(err, je ne sais pas un bon terme en fransais, graphics&physics engines)
    2. Drivers, OS etc - tous que travaille avec hardware
    3. Quelque systeme grand, par example, pour station nucléaire

    C'est tout Si vous est un spécialiste grand, il n'y a rien à s'inquiéter; si non - c# nous sauvera.

    ps Et pardonnez-moi pour mon pauvre francaise
    4: J'ajouterais quelques couches protocolaires,


    Maintenant sous windows, microsoft pousse clairement vers .net et consors
    Sun pousse vers java notament sur solaris

    Mais je pense que le C/C++ a encore de beaux jours devant lui.
    surtout au vu le nombre techno que l'on m'a dit qu'elles étaient morte (lorsque j'etais étudiant et plus tard) et qui sont encore en vie de nos jours

    - cobol / Mainframe, X25, ada83, Oracle version 8 (plus supportée officiellement), Fortran 77...

    j'ai même entendu parler dans ma boite de prospect qui voulais savoir si on supportait Vax-VMS pour un de nos produits. bref parfois on peux croire que l'on halucine, mais non.....

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 268
    Par défaut
    Heu, j'ai peut être mal compris certains propos mais il y en a qui racontent qu'il vaut mieux utiliser des QString que des std::string ?

    Ou alors j'ai rien compris.

  9. #9
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 287
    Par défaut
    A l'inverse d'un point de vue carrière toujours, tu seras plus facile à remplacer en Java qu'en C++... Et demain Python ?
    Alors qu'est-ce qui est vraiment le mieux ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 48
    Par défaut
    Peut etre parce que java et C# évolue plus vite et mieux que le C++ ?
    Suffit de comparer les dernieres réformes du C++ et les avancés de .net ..

  11. #11
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par Mickael23 Voir le message
    Suffit de comparer les dernieres réformes du C++ et les avancés de .net ..
    Te serait-il possible de détailler un peu ce propos et de définir en quoi ces avancés sont "mieux" ?

Discussions similaires

  1. Quel intéret du Portage par rapport à indépendant ?
    Par sylk974 dans le forum Structure
    Réponses: 20
    Dernier message: 01/03/2019, 08h46
  2. Réponses: 1
    Dernier message: 16/08/2010, 10h34
  3. Réponses: 2
    Dernier message: 31/10/2009, 15h01
  4. Quel est l'intéret de Google Chrome OS par rapport à Android ?
    Par Annaelle32 dans le forum Actualités
    Réponses: 16
    Dernier message: 13/07/2009, 18h38
  5. Réponses: 1
    Dernier message: 30/04/2007, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo