Ich höre etwas über die Popularität von C ++ in der heutigen Zeit und einige Gespräche über die Migration von C # oder anderen C-ähnlichen Sprachen nach C ++.
Ich kenne C ++ 11-Funktionen, würde aber gerne Ihre Erfahrungen hören, insbesondere von Entwicklern, die von C # auf C ++ migriert sind.
Vor allem drängt Microsoft die Entwickler, C ++ zu verwenden? Wenn ja warum
Antworten:
Ja, dein Verdacht ist richtig. Microsoft drängt auf C ++, um wieder populärer zu werden.
Ich kann es jetzt nicht finden, aber vor einiger Zeit habe ich eine Präsentation von einem großen Microsoft-Team gesehen, die sich an Entwickler richtete und sich mit der Einführung von Windows 8 und insbesondere WinRT (dem Ersatz für .NET Framework) befasste als Win32 API).
Er hatte eine Zeitleiste, in der er erklärte, wie sich der Druck auf die zu bestimmten Zeiten beliebte Technologie auswirkte. Zuerst wollten die Leute also Geschwindigkeit, also haben sie alle in C / C ++ (zwei getrennte Sprachen) codiert. Je schneller die Hardware wurde, desto mehr verlagerte sich der Fokus von der Ausführungsgeschwindigkeit auf die Entwicklungsgeschwindigkeit, so dass höhere Sprachen immer beliebter wurden.
Jetzt liegt der Fokus jedoch mehr auf mobilen und ARM-basierten Computern (Windows 8 ist die erste Windows-Version, die für ARM kompiliert wird). Viele glauben, dass sie sehr viel beliebter werden und für einige den Desktop vollständig ersetzen werden. Daher liegt der Fokus (zumindest in den Augen von Microsoft) wieder auf C ++, da wir uns jetzt um die Akkulaufzeit kümmern. Code auf höherer Ebene = mehr Anweisungen = mehr Saft erforderlich.
Um diesen Übergang zurück zu C ++ zu unterstützen, haben sie eine komplett neue Windows 8-Programmierschnittstelle namens WinRT eingeführt (zuletzt habe ich überprüft, dass dies der Name war). Diese API folgt in ihrem Funktionsumfang dem Thema .NET Framework, steht jedoch allen zur Verfügung, die in C ++ (über COM-Schnittstellen), in C # oder sogar in Javascript programmieren und HTML 5 / Javascript-Apps schreiben möchten. Sie bringen auch XAML (Technologie, die in WPF, ihrem neuesten UI-Framework, verwendet wird) mit, um auch in C ++ verfügbar zu sein.
Für mich bedeutet dies, dass Microsoft definitiv mehr Wert auf C ++ legt als in der Vergangenheit.
UPDATE 1:
Da ich gerade eine 'nette Antwort'-Plakette dafür bekam, dachte ich, ich sollte vielleicht zurückkommen und a) ein paar Dinge klären und b) die faktenüberprüfende Polizei glücklich machen, weil, wie wir alle in Technologieforen wissen, alles Ungenaue zu Kriegen führen kann das dauert Jahre.
WinRT ist kein Ersatz für .NET Framework, aber es ist eine weitere Alternative, die MS Windows-Entwickler jetzt haben, und MS drängt die Leute nachdrücklich, in diese Richtung zu gehen. Es scheint, dass WinRT in erster Linie für moderne UI-Apps gedacht ist (bitte halten Sie Ihre Flammen in Schach, wenn dies nicht 100% genau ist), obwohl auch normale Desktop-Apps davon profitieren sollten. MS drängt jedoch nachdrücklich darauf, dass Benutzer zum Schreiben von a) modernen UI-Apps wechseln und b) WinRT verwenden, da sich der Prozentsatz der Benutzer, die .NET Framework verwenden, wahrscheinlich verringert.
C ++ ersetzt NIEMALS höhere Sprachen wie C # oder Python. Genauso wie diese Sprachen C ++ NIE ersetzen. Dies war wahrscheinlich der umstrittenste Teil der Frage von OP. Aber es geht nur um das Gleichgewicht und die Fakten sind:
Fazit: Ja, MS drängt darauf, dass C ++ wieder verfügbar wird, damit seine Popularität höchstwahrscheinlich zunimmt. Nein, C ++ ersetzt niemals C #.
Update Nr. 2:
Ich weiß nicht warum, aber die technische Gemeinschaft neigt dazu, die Dinge in absoluten Schwarz / Weiß-Begriffen zu sehen, wenn die Realität voller Grautöne ist. Dies ist eine Antwort auf mehrere neue Kommentare, die zu diesem Beitrag hinzugefügt wurden:
.NET Framework wird in Kürze (oder jemals) nicht mehr verfügbar sein. Fast jede Technologie, die Fenster seit den 90er Jahren hatten, gibt es immer noch in irgendeiner Form oder Art und Weise. Also für diejenigen, die so an .NET Framework gebunden sind: a) Mach dir keine Sorgen, dass es verschwindet, und b) hör auf, für es zu argumentieren, als ob dein Leben davon abhängen würde, deine API ist sicher.
WinRT implementiert viele Funktionen neu, die in der Vergangenheit von Win32- und .NET Framework-APIs bereitgestellt wurden. Benutzer, die diese Funktionalität wünschen, haben die Wahl, ob sie WinRT oder .NET Framework verwenden oder mit der Win32-API fortfahren möchten (auch das ist nicht tot). Wenn WinRT die einfache Erstellung von Webanwendungen heute nicht unterstützt, besteht eine sehr gute Chance, dass es sie in Zukunft unterstützt.
Microsoft kündigte an, dass WinRT ein umfangreiches Framework ist, das Microsoft die Möglichkeit gab, mit einer sauberen Version zu beginnen und eine API zu erstellen, die die in Win32 API und .NET Framework selbst gewonnenen Erkenntnisse verwendet. Ich habe versucht, nach diesem Video zu suchen, und kann es immer noch nicht finden, aber der Redner erwähnte unter anderem, dass es bestimmte Bereiche von .NET Framework gibt, die besser / einfacher / sauberer definiert werden könnten, und WinRT dieselbe Funktionalität bietet in dieser neuen saubereren Schnittstelle.
quelle
Full
.NET-Profil und dem 'WinRT'-.NET-Profil. Die Hauptunterschiede sind viele Dinge, die vor 10-15 Jahren schlecht implementiert wurden, wurden entfernt und durch besser gestalteten Code ersetzt. Bis sie Win32-Bibliothek alle zusammen loswerden .NET ist hier zu bleiben. Ihr Kommentar zeigt einen KOMPLETTEN und GESAMTEN Mangel an Kenntnissen in Bezug auf .NET und C # -Sprache.Nein, in Windows 8 dreht sich alles um die Verwendung der Sprache, die Sie benötigen (oder kennen), um die Arbeit zu erledigen. JavaScript, .NET-Sprachen (C #) und C / C ++ werden alle gleichermaßen unterstützt.
Nichts wird ersetzt und am Ende liegt es sowieso an den Entwicklern. Es gibt jedoch ein Bestreben nach einer längeren Akkulaufzeit, das WinRT erleichtert.
Die Ausnahme bilden Spiele, in denen C ++ mehr Unterstützung erhält, insbesondere unter Windows Phone 8, während die verwalteten Sprachen keine native Unterstützung (auch bekannt als no xna) haben.
quelle
Der Gedanke, dass die Leute C ++ gegenüber C # (oder so ziemlich jeder anderen Alternative nach 1990 [ohne PHP]) für allgemeine Zwecke vorziehen würden, ist lächerlich . C ++ 11 fügt einige gute fehlende Teile hinzu, aber es nagelt immer noch Beine an einen Hund .
C ++ hat einige gute Nischen und ist auf einigen Plattformen mit eingeschränkter Compilerunterstützung immer noch die beste Option. Aber nein, modernes C ++ kann nichts ersetzen, außer vielleicht veraltetes, kaputtes C ++.
quelle
DXM schrieb:
Nach diesen Worten war die Wahl von Java als primäre Sprache / Framework für Googles Android ein Fehler. Es war nicht. Höhere Sprachniveaus bedeuten normalerweise, dass Dinge schneller erledigt werden, und ich denke, dies ist das Wichtigste für Microsoft und Google. Je mehr und bessere Anwendungen für die Plattform erstellt werden, desto höher ist der Gewinn des Betriebssystemherstellers.
Auf der anderen Seite gibt es eine Menge Software für Windows, die immer noch in C ++ geschrieben ist. Es wäre also verrückt, diese Entwickler dazu zu bewegen, auf C # / JavaScript / alles andere zu wechseln. Microsoft konzentriert sich darauf, möglichst vielen Entwicklern die Möglichkeit zu geben, Win8-Apps zu entwickeln. Aus diesem Grund haben sie sich meiner Meinung nach dafür entschieden, C ++ und JavaScript im Win8-Entwicklungsstack zu unterstützen.
quelle
In C ++ gibt es immer noch Header-Dateien, flexible Präprozessoren (#define) usw. Einige Leute hielten diese Funktionen für "böse" oder "schwierig zu verwalten".
C # verwendet hingegen Metadaten, sodass keine Header-Dateien geschrieben und verwaltet werden müssen.
Informationen zu Microsoft, das C ++ weitere Funktionen hinzufügt: Keine Frage.
Jeder C ++ - Compiler fügt weitere Funktionen hinzu, einschließlich C ++ 11-Funktionen. gcc ist auch.
quelle
Es könnte nur ich sein, aber ich sehe viel mehr einfache C-Nutzung als C ++.
Die Tatsache, dass C ++ C als Ganzes verschluckt hat, macht es schwierig zu schließen, wer was verwendet.
Es gibt aber weitaus mehr C-Open-Source-Projekte als C ++.
Meiner Ansicht nach sollten Sie C nahe an der Metallgeschwindigkeit verwenden. Wenn Sie Flexibilität und Verwaltbarkeit bei angemessener Leistung benötigen, sollten Sie C # oder Java verwenden. Wenn Sie ein klares Design wünschen, verwenden Sie schnell Python, Scala, Groovy oder eine der zahlreichen voll ausgestatteten Sprachen.
quelle
c ++ ersetzt nicht c #. Lassen Sie uns untersuchen, wo die C ++ - Sprache verwendet wird. Es wird verwendet, wenn eine hohe Leistung, das Schreiben von Middleware-Bibliotheken, der Zugriff auf niedriger Ebene und das Schreiben von Code für Geräte mit eingeschränkten Ressourcen erforderlich sind. Obwohl Sie c # für einige dieser Anwendungen verwenden können, ist c ++ für diese Anwendungen besser geeignet. Microsofts Vorstoß für C ++ hängt eng mit seinem großen Vorstoß in den mobilen Bereich zusammen. Niemand wird Sie bitten, Ihre nächste Web-App in c ++ zu schreiben. Aber mit Qt kann das Produktivitätsargument nicht gegen c ++ gestellt werden. Aber ich denke, viele Leute sind mit Qt nicht vertraut.
quelle
Nein, C ++ kann C # nicht ersetzen, da alle Nicht-Direct3D-Windows Phone 8-Apps mit C # entwickelt werden müssen . Sie können Anwendungen nicht einfach mit C ++ oder HTML5 / Javascript im wp8 App Store entwickeln und veröffentlichen. Und solange Microsoft diese Einschränkung nicht aufhebt, ersetzt C ++ nichts. Daher bin ich sicher, dass sich nur sehr wenige Leute für WP8 entwickeln werden. Armes Nokia, noch einmal verloren.
Hier ist der Auszug aus Microsoft Dev Center :
noch ein anderer:
Selbst Microsoft MVPs behaupten, dass dieses Gerücht eine absichtliche Fehlinformation von Microsoft selbst ist:
Und dieses absichtliche falsche Marketing verschwendet die Monate der Menschen :
quelle