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#.
Envoyé par jorix
euh petite rectification C# et java ne sont pas des langage sans pointeur !!!!
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![]()
On optimise pas du code comme ca parce que l'on trouve qu'il n'est pas assez rapide. C'est vant qu'il faut se poser la question de si il faut l'optimiser ou non. AMILIN a lu mon code optimisé en asm, et l'a trouvé tout a fait lisible. Je ne programme rarement que pour moi.
Un truc dont on n'a pas parlé et qui rejoins un peu l'avis de SebA, c que les compilateurs sont aussi des optimiseurs, et effectuent cette tâche de mieux en mieux.
Par exemple, tout le monde sait qu'il ne fo pas écrire :
mais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 for (i=0; i<10000; i++) { if (a > 0) { /* code qui ne modifie pas a */ } else { /* code qui ne modifie pas a */ } }
Or, cette optimisation, qui rend le code un peu moins lisible, n'est pas utile pour peu que vous utilisiez un bon compilateur optimiseur, et que vous sachiez régler les options d'optimisation, puisque le compilateur n'hésitera pas à faire lui-même cette optimisation...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 if (a > 0) { for (i=0; i<10000; i++) { /* code qui ne modifie pas a */ } } else { for (i=0; i<10000; i++) { /* code qui ne modifie pas a */ } }
ca c'est maintenant un sujet d'optimisation. Pour continuer cette discution, lire le post-it du forum C++ à ce sujet. Il y en 5 pages pleine. Il y est notement dit que les compilateurs ne font pas tout. Et l'exemple si dessous pourra être optimisé si sa structure est suffisement simple. Moi je préfère ne pas compter dessus, mais si cela n'en vaut pas la peine, autant laisser la plus lisible effectivement.
Je ne suis pas capable malheureusement de donner un avis tres technique sur la question, mais dans mon cas je entre java et c++, c'est le c++!! c'est tellement plus rapide!
En tout dans mon domaine (systeme), c'est c et c++ regneront encore longtemps! (et sous unix c'est encore mieux)
le c# jamais essaye!
de plus, si on considère le schéma donné par Epictète
http://www.usethesource.com/cgi-bin/index.pl?section=Software
C et C++ représentent des milliards de lignes de code de matière grise,
réutilisables pour beaucoup
qui va renoncer à cet investissement intellectuel ?
Partager