Une "fonctionnalité" qui n'a pas été beaucoup mentionnée (mais que je trouve notable) est que la communauté des compilateurs C++ semble être prête à consentir beaucoup plus d'efforts pour produire des implémentations conformes. À l'époque où la norme qui est devenue finalement C89/90 était en cours de développement, presque chaque vendeur de compilateurs travaillait à se conformer aux derniers projets de la norme, et (surtout lorsque la norme était proche d'être complète) mettait vraiment beaucoup d'efforts pour se conformer le plus étroitement possible.
Ce n'est plus le cas. La norme C99 a été (assez évidemment) finalisée il y a plus d'une décennie, mais il y a encore essentiellement une seule implémentation qui fait sérieusement un effort pour se conformer à la norme entière (Comeau). Quelques autres (par exemple, gcc) ont ajouté quelques fonctionnalités C99, mais en manquent encore un bon nombre d'autres. Un (pcc) se trouve dans la position plutôt paradoxale d'avoir ajouté presque toutes les fonctionnalités spécifiques à C99, mais ne parvient pas très près à satisfaire aux exigences de C89/90.
Compte tenu de la complexité de C++, produire une implémentation conforme est une tâche beaucoup plus difficile. Malgré cela, je suppose qu'il y a déjà plus d'implémentations qui sont au moins très proches de se conformer à C++0x (qui devrait être ratifié d'ici un an ou deux) qu'avec C99 (ratifié il y a environ une décennie). Juste pour choisir un nombre arbitraire, je m'attends à voir 3 implémentations conformes1 de C++0x plus tôt que 3 implémentations conformes de C99 (en fait, je m'attendrais presque à autant le jour où elle sera ratifiée).
- Bien sûr, "conforme" dans ce cas signifie "dans une certaine mesure" -- je suis assez sûr que chaque implémentation de C et C++ a au moins quelques défauts qui empêchent une conformité parfaite. Il en va de même pour la plupart des autres langages, les seules exceptions évidentes étant les langages définis en fonction d'une implémentation particulière.
3 votes
La syntaxe de C++ est-elle vraiment plus difficile que celle de C ? Et depuis quand est-il facile de maîtriser C ? :)
24 votes
@George, +1. Qui dit que C++ est meilleur que C, de toute façon?
2 votes
Et pourquoi "sauf OOP"? Tout langage pourrait être considéré comme inférieur à un autre si vous imposez des restrictions arbitraires sur l'ensemble des fonctionnalités ou l'utilisation normale.
2 votes
OOP n'est qu'une idée ; elle peut être réalisée avec C (pointeurs vers des fonctions enveloppés dans des macros réalisant ces pointeurs comme des méthodes, pointeurs vers d'autres structures comme de l'héritage, cas pour le polymorphisme), mais bénéficie d'un support linguistique limité là-bas.
0 votes
@Carl, +1 car tu as été assez courageux pour ouvrir cette boîte de Pandore.
7 votes
Ce serait mieux de demander ce que C++ a que C n'a pas. De cette façon, si quelqu'un veut le lire comme "qu'est-ce qu'un château a qu'une cabane en paille n'a pas" et un autre le lit comme "qu'est-ce qu'un bateau avec des bernacles a qu'un bateau sans bernacles n'a pas", ils peuvent tous les deux répondre à votre question.
0 votes
Si les liaisons ogre3d sont en c++, gardez-les, la "syntaxe" C++ n'est pas si compliquée. pour le reste, je n'aime tout simplement pas la POO (du moins, dans certains langages), donc le C est de toute façon mieux... mais c'est discutable
0 votes
Pourquoi l'erreur grammaticale semble-t-elle aussi courante dans le titre pour les locuteurs non natifs de l'anglais? "qu'est-ce qui rend C++ meilleur que C"
1 votes
@ChaosPandion - Dans différentes langues, les temps sont utilisés différemment. Certaines langues ont des temps que d'autres langues n'ont pas. L'anglais a plusieurs temps présents où beaucoup de langues se contentent de moins, ne distinguant pas vraiment entre les cas de "ce qui fait" et "ce qui est en train de faire". De même, les locuteurs anglais apprenant l'espagnol ont souvent des problèmes pour choisir entre les deux verbes "être", "ser" et "estar" - nous n'avons pas ce sens intuitif de quand chacun devrait être utilisé.
0 votes
@Steve314 - Cela a du sens. Je vous remercie de votre réponse.
1 votes
Eh bien, pour répondre simplement à la question dans le titre, je ne pense pas que quoi que ce soit rende le C++ meilleur que le C car le C++ n'est tout simplement pas meilleur que le C. Quel est le problème encore? Un désavantage du C pourrait être que le C compilé a tendance à produire une taille de code beaucoup plus petite que celle du C++ et si vous êtes payé en fonction de la taille de votre binaire, vous ne pourrez peut-être pas vous permettre autant de cornets de crème glacée. :)
1 votes
C++ a une plus grande flexibilité - vous pouvez presque tout en faire. C est plus simple et plus facile à implémenter. C++ est de l'argile, C est plutôt comme un marteau. Les deux ont leurs utilisations.