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
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
Le C++ restera, car il a été conçu pour les performances d'un vrai langage compilé. Tant qu'on ne proposera pas (officiellement) des versions de Java ou C# qui donne du vrai code compilé, sans s'encombrer de vérifications inutiles, le C++ n'a pas de soucis à se faire.
J'aurais tendance a dire que C++ (avec C) sont de imbatables sur à peu prés tous les points: certes il ne sont pas toujours simple à utiliser et il est donc compréhensible que la plupart des débutant s'oriente de préférence vers de chose plus "simples" (Java, C#). Pourtant, en progréssant, les developpeurs sont tenté pour des raisons de performance de se diriger vers des languages plus puissant que sont C/C++ (voire ASM).
Pour bien des avantages (surtout au niveau de la puissance) C++ reste toujours plus avantageux que Java/C# dans certaines situations. On peut a titre d'éxemple (paradoxal, certes) citer le fait que malgrés le dénigrement de Visual C++ de la part de Microsoft, c'est toujours le language qu'utilisent leurs propres developpeurs!
Je crois que le seul risque pour C++ est de voir apparaitre des nouveaux conceptes de programation plus puissant que l'OO. Mais on en est pas encore là!
Je pense que C++ (et C) ont encore de l'avenir devant eux.
N'oublions pas que les machines virtuelles JAVA et le CLR DOTNET
sont elles-même écrites grâce à ces langages.
N'oublions pas que les systèmes d'exploitations sont écrits grâce
à ces langages.
c et c++ sont les langages systèmes par défaut (et par excellence ), et le seront encore très longtemps, puisque l'essentiel des efforts sont sur la création de langage de plus haut niveau (java et c#) ces derniers ont été inventé pour faire de l'applicatif.
La question est :
Peut on faire une application puissante (système, jeux , etc..) sans pointeur ?
Perso je ne le pense pas, donc le c et c++ restera.
Moi je dirai que chose langage a un domaine d'application plus ou moins restreint :
- Java et C# pour des applications ultra-portable (le principe de machines virtuelles est une excellente idée, la preuve certains téléphones portables utilisent Java !)
- ASM pour avoir une performance optimale : certaines parties de libraires sont écrites en ASM adapté à une architecture donnée (AMD K7, processeur Alpha, MMX, etc.). Certains parties des OS est écrite en ASM (je suis pas sûr que ce soit indispensable à l'heure actuelle ...)
- PHP pour écrire des applications web en très peu de temps : j'ai écrit un programme qui décode les fichiers email de Eudora & Mozilla en 6 heures grâce aux expressions régulières ! L'avantage de PHP est qu'il intègre une multitudes de librairies dans le langage. Utilise des regexp est très simple dans PHP (comparé au C par exemple où il faut gérer la mémoire)
- Pascal pour apprendre à programmer ou développer rapidement des applications (Pascal intègre plus de fonctions de base que le C)
- C et C++ : pour le reste ... pour faire du code portable et très rapide !
- etc.
@+ Haypo
le C et le C++ sont les langages les plus rapides du moments apres l'asm, ils sont la seul alternative a l'assembleur pour faire des appli ou la vitesse d'execution est primordiale. De plus, le C++ est a un niveau si proche de l'asm, que ca m'etonerais qu'un langage BEAUCOUP plus performant sorte dans les années a venir.
causa sui >> tout a fait d'accord, le seul risque pour le C++ est qu'il aparraisse un nouveau concept de prog plus puissant que la POO.
Bien que la plupart des compilateurs acceptent l'asm inline, il y a quand même des possibilité pour creer un langage de entre l'asm et le C++. Il y a pas mal d'optimisations asm qu'on rencontre assez souvent, mais pour lesquelles on est obligé de passer par l'asm inline. Cependant un tel langage ne serait plus portable.
Le fait que le C++ soit rapide ne rentre plus du tout en compte pour sa survie. Même pour un jeu, on retrouve des trucs salement codés, qui font qu'un jeu 'simpl' ne tourne que sur un 700 MGhz minimum. L'optimisation n'est plus tellement un soucis. Elle reste utilie que pour une classe très reduite dede programmes, os, émulateurs, encodeurs. Ca represente une partie ridicule.
Quant aux fonctions de bases que l'on trouve comme donné dans l'exemple php les expressions regulières, si l'on programme avec un programme comme Borland C++ Builder avec la CLX (j'en parle parce que je connais, j'imagine que les MFC font pareil) les AnsiString ont déja beacoup de fonctions pour trravailler sur les chaines. Je ne crois pas que le fait que les fonctions standard soient limité constitue un problème.
oui le C++ n'est pas encore mort !!!
mais a tout les fan d'ASm et autre optimisations extreme :-) je vous mets au defit de developper en assembleur les programmes d'aujourd'hui avec leur complexite.
Les language comme java C# ne sont pas des langages pour debutants ce sont de langages encore de plus haut niveau que C++ qui permet de s'abstraire de toute une serie de problemes de plus ils ne permettent plus les veilles fintes de programmeur C (je n'ai absolument rien contre eux).
Pour programmer en Java ou en C# il faut avoir un minimum d'approche objet alors qu'en C++ on peut tres bien faire du C.
Mais il est vrai que C++ est plus rapide mais n'arrive t-on pas a un niveau ou on peut laisser de cote la rapidite pur (largement comblee par les processeur de nouvelle generation) et essaye d'avoir un soft bcp plus stable. C'est pas parceque c'est java ou C# que c'est pas plein de bug ca depends du programmeur mais au moins il y a toute une serie de pieges qui sont evites.
Le seul argument que je lis ici et la a l'avantage de C++ c'est la rapidite et c'est toujours le meme.
Personnellement un programme bien modelise est bcp plus performant que toute autre optimisation de code (souvent illisible) optimisation en ASM ou encore optimisation de compilation(les compilo sont assez optimise).
La performance n'est pas seulement combien de nano seconde il faut a un programme pour executer une operation mais aussi combien d'heures il te faudra pour relire ton code et le comprendre 1 an apres, comment pourras tu maintenir ton code pour les 10 ans qui vienne.
c#est ca egalement la performance.
Ah bah là non, je ne peux pas laisser dire ça !!!Mais il est vrai que C++ est plus rapide mais n'arrive t-on pas a un niveau ou on peut laisser de cote la rapidite pur (largement comblee par les processeur de nouvelle generation) et essaye d'avoir un soft bcp plus stable.
Perso mon domaine, c le développement 3D, et je passe mon temps à faire comprendre aux gens que le fait de se reposer sur la puissance d'un processeur pour compenser les erreurs d'optimisation est la pire des chose à faire !!! Je vois deux raisons principales :
- Avec ce genre de raisonnement, on n'aurait pas encore les jeux qu'on a actuellement. En outre, le fait que les processeurs actuels soit beaucoup plus puissants que leurs prédécesseurs n'a rien de nouveau, c'était déjà le cas dans les années 80 !
- Le fait de tout faire à la bourrine sans optimiser ne fera pas forcément que ça tournera beaucoup moins vite, mais risque en revanche d'altérer très fortément la REGULARITE d'éxecution : la vitesse sera très dépendante des conditions d'exécution et aura tendance à varier beaucoup trop d'une seconde à l'autre rendant le jeu injouable (désolé je prend le point de vue du dvlpeur 3D, mais je pense que c aussi applicable ailleurs...)
Ceci dit, je suis bien d'accord qu'il ne faut pas faire du code illisible à force de vouloir tout le temps optimiser. Il y a surement un juste milieu... Mais de là à utiliser java ou c#, ya de la marge !
En tout cas je peux t'assurer que les performances de java ne lui permettent pas d'exécuter un jeu vidéo complexe de façon acceptable, justement à cause de toutes les vérifications au runtime qui en font la facilité d'utilisation.
Je suis tout a fait d'accord que la rapidité n'est pas un argument, et je l'ai mentionné precedement. Mais dire qu'optimiser un code le rend illisible ca par contre c'est terriblement faux. Je travaille actuellement sur un projet sur lequel j'ai passé beacoup de temps pour l'optimisation. Ca fait plus d'un an que je suis dessus. Mais les lignes de codes que j'ai ecrites il y a un an et optimisée reste pour moi lissibles instantanément. C'est aussi ca savoir ecrire du code opitmiser, savoir l'ecrire tellement. Mais si effectivement tu en est incapable, mieux vaut ne rien optimiser.
Encore une fois il existe enormement d'Api C++, qui lui permet de n'être pas moins désirable que le Java ou le C#.
euh petite rectification C# et java ne sont pas des langage sans pointeur !!!!Envoyé par jorix
au contraire tout est pointeur sauf que vu du developpeur il le voit pas et ca lui facilite pas ma la vie !!!
masi encore TOUT EST POINTEUR
pour toi c"est lisible ... et si un autre gars doit s"occuper de ce code ds 2 ans...Envoyé par Blustuff
Envoyé par Blustuff
je ne fais pas de denigrement de C++ je programme actuellement en C++
mais je me "revolte" un peu contre une partie des developpeur C/C++ (pas tous bien heureusement) qui ne font que defendre sasn essaye d"apprendre.
A mon avis si ces personnes avaient ete la au debut de l"air de l'info on serait encore taper de l"assembleur...
Oui C# et Java sont base sur C++ mais en encapsulant des notions comme celle de pointeur.
Oui C++ est plus rapide mais le probleme c"est qu'il contient plein de pieges de programmation
Pour ce Qui est de l"optimisation
1 optimise ta strructure de programme ( pour le rendre flexible et evolutif)
2 optimise ton code avec les truc de base pas d"instanciation ds les boucles for.
une fois que tu as fasi ca et que ca te convient toujours pas fais de l"optimisation extreme avec des truc illisibles masi c"est a tes risque et perile.!!!!!!
tout le monde parle de 3D et tout masi regarder ce qui ce fait en reconstruction 3D en java en imagerie medical ..Envoyé par patapetz
Exemple d"image medical 4000x4000 code sur 12 ou 14 bit et c'est pas une image qu"un scanner genere....
@+
Ca depends des domaines dans lequel tu travailles. Si tu developpe des applications sur des stations de travail, des PC ou des serveur, oui tu peux compenser la rapidite du code par celle du processeur. Par contre dans de l'embarque ce n'est pas possible.Envoyé par sebA
En plus je ne suis pas persuader que se reposer entierement sur la vitesse des processeurs soient une bonne chose en soi.
Certes optimiser un code au point de le rendre illisible et immaintenable est une des pires choses a faire mais il est possible d'obtenir un code relativement rapide, stable et qui reste lisible.
c'est exactement ma pensee
je débute juste le c++ mais avant et toujours maintenant en parallèle je fais du JAVA.
JAVA est très bien et simple. Cette simplicité nous permet de développer des application rapidement, mais si jamais nous recherchons des choses plus pousser comme l'intéraction avec l'OS c'est mort...
Le C/C++ offre ces possibilités et faut rapeller que les OS sont programmer dans ces langage ( + Assembleur ) sauf erreur de ma part
Attention les puristes de la portabilité à tout prix vont te tirer dessusEnvoyé par maminova77
Ceci dit je partage totalement cet avis
en tout ca, si trolltek sort un binding QT (qui est effectivement une tres bonne librairie) pour java, c'est qu'il doit y avoir une raison. C++ pour faire des applications "desktop", ca devient un poil trop complexe face a des langages de plus haut niveau je pense.
C'est déjà fait...Envoyé par lunatix
hello,
un exemple : IPHONE => "state of the art" du "C / C++ / Cocoa"
et c'est partit pour durer des années je pense
ce n'est pas parce que .NET existe qu'il faut tout "enterrer"
C/C++ ça reste utilisé pour des produits récents & de superbe qualité.
il n'y a pas que le monde windows non plus
imho : C & cie ne sera jamais vraiment remplacé.
ne faut pas oublier que pas mal de boulot de développeur = de la maintenance de code, faire évoluer des vieux dinosaures logiciels & leur rajouter des modules. Le language est "imposé" dans bcp de projet de toute façon.
Même si C.SuperNet 10.2 pointe le bout de son nez dans 5 ans et est vraiment génial , une majorité des gros logiciels (devs pour entreprise je parle) ne seront de toute façon pas "convertis" dans ce language, faute de temps / coûts & volonter de ne pas bugger un truc qui marche. C'est vraiment un processus très lent.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager