Dupliquer possible:
Que signifie la dernière dernière "C++ Renaissance"?
Dernièrement, j'entends beaucoup sur C++ Renaissance. Qu'est-ce que c'est?
C++ subit actuellement une Renaissance. Cela signifie que, par définition, la langue, les compilateurs et l'outillage de composition évoluent et la coalescence dans un état qui optimise l'efficacité, la productivité et la créativité des développeurs indigènes sur des domaines matériels et logiciels.
Je conviens que C++ a besoin de nombreuses améliorations, principalement parce qu'il a été mis à jour à l'âge néolithique (98,03). Qu'est-ce qui me bugs est la construire Conf. Ils ont montré quelques applications de style de métro écrites en C++ et XAML - comme RSS Reader ou Piano.
J'ai le sentiment que C++ est une overcilleuse pour ce type d'applications et que le cas où je vois que l'avantage est la puissance de la batterie, mais est-ce vrai? C # ainsi que les appels C++ Winrt, qui est natif et c # n'a que de minuscules au-dessus de l'heure d'exécution.
Quelqu'un peut-il fournir une étude de cas ou des données difficiles où utilisez C++ dans Windows 8?
Je pense que ce sera le statu quo (jeux, serveurs, systèmes d'OSE, bases de données, apps tels que Photoshop sera C++ et d'autres applications clientes exécutées) et la Renaissance est juste un slogan marketing.
Je crois que chaque programmeur/architecte principal devrait regarder présentation de Herb Sutter à C++ et au-delà de 2011 .
Fondamentalement, il affirme que .NET et Java offrent en effet une meilleure productivité. Cependant, la productivité n'est pas toutes. La puissance et les performances de la batterie sont de plus en plus importantes pour les appareils à main. Pour les appareils à main. Pour Big-Data Server-Farms. , Si vous pouvez serrer votre traitement à 1000 cœurs au lieu de 2000 cœurs - vous économiserez plus d'argent sur l'énergie et la maintenance que l'argent que vous perdrez sur les heures de programmation supplémentaires.
Ainsi, pour les petits et grands systèmes - la productivité n'est pas tout, et même pas le facteur le plus important. En cas de traitement de la puissance et de la batterie de la batterie - C++ gagne.
La nouvelle norme C++ offre une productivité supplémentaire, sans sacrifier la performance. Il déplace encore plus l'équilibre.
Je conviens que C++ a besoin de nombreuses améliorations, principalement parce qu'il a été mis à jour dans l'âge néolithique (99).
C++ n'a jamais été mis à jour en 99. La première norme C++ était de 98. Et un autre en 2003. Et un nouveau vient de sortir cette année. Ce n'est pas exactement néolithique. Plus important encore, il convient de noter que les techniques de programmation que c ++ avaient depuis bien avant 98 ans, relativement parlant, ne viennent que des langues .Net, comme des génériques et des API fonctionnelles. C++ a eu des modèles très longs que des génériques existaient dans C # - et les génériques ne sont même pas aussi puissants que des modèles. Sans doute, c'est C # qui joue une rattrapage, des décennies plus tard.
J'ai le sentiment que C++ est une overcilleuse pour ce type d'applications
Overkill comment? En dehors de l'idée que certaines personnes pourraient préférer c ++ pour des raisons subjectives (que je pourrais donner une douzaine de si vous êtes intéressé), plus le fait qu'il ne nécessite pas d'installation de 100 Mo d'être exécuté sur un ordinateur de consommateur, par exemple ou fonctionne sur beaucoup plus de plates-formes que c #.
Et les frais de runtime de C # ne sont pas minuscules. Du tout. En fait, plus l'application est petite, le plus grand La proportion de temps est passée de charger le CLR.
Pour autant que je sache, le problème fondamental est que Microsoft dispose de deux divisions - WindIV et DevdiV, je crois.
WindiV ne peut pas être dérangé et se sent obligé de mentir C++ avec une autre langue, ce fut d'abord c'était C avec l'API Win32, et c'est maintenant C # avec les API de métro, qui sont des API C++ uniquement dans le sens que techniquement, ils sont compilés par un compilateur C++ et ont en réalité une très peu en commun avec une conception C++. De plus, Windiv n'apprend pas de leurs erreurs - par exemple, même dans les nouvelles API de métro, vous ne pouvez pas mélanger les contrôles du métro et le rendu DirectX. Semble être le genre de chose que vous auriez corrigé après les problèmes d'espace aérien avec la génération précédente de contrôles natifs.
Devdiv, d'autre part, semble connaître WTF, par exemple, voir l'exécution de la concurrence dans Visual Studio 2010 et C++ ampli à VNext, qui sont génial. Ils produisent également des outils assez sucrés - le IDE Les améliorations pour C++ en VNEXT sont assez bonnes et AMP est une grosse affaire, même si malheureusement, cela signifie peu de fonctionnalités de nouvelle C++ 11.
Le problème est que WindIV produit un lot plus de contenu que DEVDIV, par exemple, les sockets et les bibliothèques d'interface utilisateur. Donc, il y a une Renaissance C++ - elle ne s'applique que sur les choses que la bibliothèque de bibliothèque malheureusement infligée a réussi à coller sur les trucs WindIV.
C++ commence à voir une plus grande importance aux applications côté serveur. L'utilisation efficace du processeur enregistre des millions de coûts de serveur. Si votre application fonctionne 7 fois plus lente, vous devez acheter 7 fois les serveurs 7 fois les coûts de refroidissement, 7 fois l'espace de plancher, etc. Facebook a commencé à utiliser certains C++ pour cette raison. Google utilise de nombreuses langues, mais leur noyau est C++. Si vous vous attendez à une charge massive, votre vie peut être beaucoup plus facile si vous utilisez une implémentation native dès le début.
Les gens semblent penser que la collecte des ordures est ce qui facilite le développement. Dans mon expérience, ce n'est pas, surtout lorsque votre code détient des ressources externes. Le modèle C++ du nettoyage destructeurs est plus propre et plus moderne que le Java modèle.
Considérez ceci Java code PSEDEO:
public void someMethod()
{
FileObj f = null;
try
{
f = new File("/somePath/myFile.txt");
String str = f.read();
System.out.println(str);
}
catch(CustomException ce) { /*la */ throw ce; }
catch(PathNotFoundException pe) { /*la */ throw pe; }
catch(Exception e) { /*la */ throw e; }
finally
{
try { if(f !=null) f.close(); }
catch(Exception e) { /*la */ throw e; }
}
}
En C++, vous pourriez alors quelque chose comme sûr, sans trop de blague. Une seule ligne de code avec toute la Saftey du Code pseudo ci-dessus.
void someFunction()
{
FileObj f("/somePath/myFile.txt");
string str = f.read();
cout << str;
//the file is magically closed even if an exception occurs during f.read();
}
EDIT: Changer les méthodes de code Pusedo de "Main" à "Somemethod".
[.____] Edit: Re-lancer une exception en Java pseudo code pour le rendre équivalent au C++.
Modifier: Le fichier de reproduction à FileObj afin que le code PSEDEDO n'est pas confondu avec Real Java bibliothèques.
Bien sûr, il s'agit d'un slogan marketing, mais cela montre que Microsoft est (à nouveau) engagé à soutenir le code natif comme un citoyen de première classe sur la nouvelle plate-forme.
Qu'il s'agisse de tout intérêt personnellement, c'est une autre question - si vous préférez une autre langue et que vous le souhaitez pour vous, n'hésitez pas à ignorer la "Renaissance C++".
C'est aussi C++ est portable. Vous pouvez écrire une application C++ dans Windows, déplacez-la sur Mac/Linux/Android/iOS, bien que certains tripes. Bien que cela ne soit probablement pas un angle d'angle qui s'intéresse.
Lorsque Windows était le seul jeu en ville, alors C # était en sécurité à utiliser.
Il y a d'autres alternatives Java/Python, etc. Ils viennent tous avec une heure d'exécution et prennent donc du temps pour passer du temps au nouvel environnement et que toutes ces nouvelles plateformes arrivent, le native est plus sûr.
Aussi C++ (et C) sont les seuls à avoir plusieurs compilateurs de plusieurs fournisseurs - vous êtes donc en sécurité que personne ne changera les règles - Oracle avec Java, MS avec C #, etc.
Donc, si vous écrivez une application et que vous souhaitez le déplacer sur différentes plates-formes, alors C++ est un choix très sûr.
Quelqu'un peut-il fournir une étude de cas ou des données difficiles où utilisez C++ dans Windows 8?
Eh bien, le système d'exploitation est écrit en C++.
La réponse rapide est que personne avec un demi-cerveau ne veut concevoir une application commerciale qui fonctionne 10 fois plus lent et draine plus de batterie que les applications concurrentes.