C ++ war viele Jahre lang der heilige Gral der missionskritischen Hochleistungsentwicklung. Es scheint jedoch, dass in den letzten 10 Jahren ein Großteil der Entwicklungswelt zu Java und C # gewechselt ist. Meine Frage ist dies, ist C ++ effektiv auf Embedded-Systeme, OS, Browser und andere spezielle Zweckentwicklung verwiesen? Soll ich dieses Skillset den Weg der VB 6 und anderer Skillsets gehen lassen, die nicht mehr das gleiche Niveau von Nachfrage und Wert auf dem Markt aufweisen? Ich liebe C ++ und würde gerne mein Wissen darin aktualisieren, aber ich würde nicht einmal wissen, wo ich anfangen soll, es heute auf allgemeine Geschäftsprobleme anzuwenden.
Grüße.
Erstens bezweifle ich, dass irgendjemand eine definitive Antwort geben kann - es gibt einfach keine Möglichkeit genau zu sagen, wie viel eine bestimmte Sprache wirklich verwendet wird. Fast alles, was Sie messen können, ist eine sekundäre Messung, z. B. wie viele Personen Werbung für diese Sprache anbieten. Das Problem ist, dass dies tendenziell dazu führt, dass relativ neue Sprachen viel stärker dominieren als real.
Das heißt, meine Überzeugung ist wie folgt. Zu einer Zeit war C ++ die heiße neue Sprache im Block, und es gab eine Blase, als es den Markt dominierte. Diese Blase hat sich vor einiger Zeit entleert. Seitdem ist der Einsatz von C ++ auf absoluter Basis gewachsen, aber der Markt ist (ein bisschen) schneller gewachsen, so dass er auf relativer Basis schrumpfte.
Es gibt eine Reihe von Gründen, warum dies in den meisten sekundären Maßnahmen wie Stellenanzeigen nicht auftaucht. Ein paar der offensichtlichen gehören:
Es gibt noch einen anderen Effekt, den ich fast nicht erwähnen möchte, aber es ist wahr, egal wie wenig viele Leute es mögen: Es gibt sowohl Programmierer als auch Manager, die mehr auf "Neues" als auf Effektives hören. Dies führt zu einer großen Gruppe von Möchtegerns, die ständig auf dem neuesten Stand der Technik sind (ob nun eine Sprache, ein Framework, eine Plattform oder was auch immer). Sie bekommen einen Job, laib (oder schlimmer noch, schreiben einen Code) und gehen dann zu ihrem nächsten Opfer ... äh ... Arbeitgeber. Sie verursachen eine Menge "Abwanderung" und erhöhen die Anzahl der Stellenanzeigen, produzieren aber wenig oder nichts von wirklichem Wert. Diese Gruppe wechselte vor langer Zeit von C ++ nach Java und ist seit langem von Java nach C # zu Ruby on Rails nach Hadoop umgezogen, was auch immer die Manager von dieser Woche erwarten.
Damit ich nicht übermäßig negativ klänge, sollte ich hinzufügen, dass einige von ihnen wirklich etwas finden, bei dem sie gut sind und (meistens) dazu neigen, dabei zu bleiben. Leider gibt es für jeden, der das tut, mindestens fünf neue Absolventen, die sich dem Gedränge anschließen.
C ++ wird immer noch häufig in vielen geschäftskritischen Finanzanwendungen eingesetzt. Zum Beispiel basieren die meisten Plattformen von Bloomberg auf C ++ mit sehr wenig Frontend in anderen Sprachen. Viele Investmentbanken und Hedgefonds verwenden algorithmische Handelssysteme, die vollständig in C ++ geschrieben sind (z. B. Tower Research Capital, Knight Capital, etc.).
Wenn Sie eine Weile nicht in C ++ waren, müssen Sie sich vielleicht an eine ganze Reihe von Standardbibliotheken gewöhnen. Als ich die meiste Zeit in C ++ verbracht habe, war STL ziemlich neu und Sie haben entweder die Microsoft-Bibliotheken übernommen oder nicht. Wenn ich jetzt zurück zu C ++ gehe, muss ich lernen, dass alle neuen Bibliotheken effektiv sind.
Ich denke, dass die meisten Bewegungen in andere Sprachen mit Web-Entwicklung und web-zentrischer Entwicklung zusammenhängen. Die wichtigste Ausnahme wäre Google, die hauptsächlich C ++ und Python verwendet.
C ++ ist immer noch wertvoll für viele Hochleistungs-Apps. Es gibt andere Technologien, und abhängig von der Situation sind verschiedene Sprachen besser für Ihre Bedürfnisse geeignet. Aber wenn Sie starke Leistung, gute Kontrolle über das, was Ihr Code tut, und flexible Netzwerk- und Programmier-Stack, ist C ++ immer noch eine gute Wahl.
Ein besserer Vorschlag ist: Lassen Sie die Probleme zu Ihnen kommen und finden Sie die Sprache, die der Situation am besten entspricht, anstatt eine Sprache zu nehmen und nach Problemen zu suchen.
Immer noch: Wenn Sie C ++ gut kennen, können Sie alles lernen / programmieren.
Bis heute ist C ++ die einzige Sprache, die sowohl objektorientiert als auch kompiliert ist (oder zumindest ein ausgereiftes Ökosystem zur Optimierung von Compilern hat). Damit bleibt es die einzige Wahl für die meisten rechenintensiven Großprojekte.
Das prominenteste Beispiel sind Spiele und Game Engines - das sind riesige Projekte, die Maschinen für Millisekundenbruchteile pressen. MS versucht, etwas an Traktion für XNA (ein verwaltetes Game-Dev-Framework - im Grunde ein DirectX-Wrapper) zu gewinnen, aber höchstwahrscheinlich würde es niemals für AAA-Spiele-Produktionen kommen.
Wenn ich mir die Anwendungen ansehe, die ich auf dem Laptop installiert habe, auf dem ich diese Nachricht schreibe, sehe ich eine Menge C / C ++ und wenige (wenn überhaupt) verwaltete Apps. Beispiele? Google Chrome, Firefox, iTunes, uTorrent, Spotify, Picasa, Google Earth, OpenOffice, Notepad ++, IrfanView ... diese Liste geht weiter und weiter. Ich schreibe Desktop-Anwendungen für den Lebensunterhalt, die auf Tausenden von PCs weltweit installiert sind, und C ++ ist immer noch meine Sprache der Wahl. Der Mangel an Abhängigkeiten (WTL ist dein Freund) ist ein riesiges Plus IMHO (und das meiner Kunden sollte ich hinzufügen !.) YMMV obwohl - als ein erfahrener Entwickler Ich denke, ich bin produktiv genug in C ++, aber ich kann nicht sprechen jeder.
Es ist nicht weggegangen, wenn Sie etwas wirklich, wirklich schnell machen müssen. Wenn "schnell genug" in Ordnung ist, dann sind C # und Java in Ordnung, aber wenn Sie eine Berechnung haben, die Stunden oder Tage benötigt, oder wenn Sie etwas auf der Mikrosekunden-Zeitskala (dh Hochfrequenzhandel) benötigen, ist C ++ immer noch die Sprache .
Meistens verlieren wir uns im Hype-Zyklus. Zuerst gab es Java, dann kam PHP, und derzeit ist Python. Aber die Tatsache der Angelegenheit ist die Entwicklung von Allzweck-Desktop-Anwendung erfordert immer noch die Verwendung von Bibliotheken wie Carbon / Cocoa für Mac, GTK / QT für Linux, MFC für Windows. Alle basieren auf C / C ++. So sind die meisten Anwendungen für diese Plattformen geschrieben. Es ist also nicht richtig, C ++ als Embedded-Embedded zu bezeichnen, obwohl es jetzt extensiv genutzt wird, im Gegensatz zu früher, als es nur Assembly oder C im Max-Modus war. Meiner Meinung nach, wenn Sie eine leistungsstarke Anwendung mit gut aussehenden GUI wollen, muss es immer noch in C / C ++ getan werden.
Verschiedene Sprachen sind in verschiedenen Bereichen vorherrschend. Es ist interessant, dass Sie glauben, dass es dadurch unwichtig wird, dass Sie auf eingebettete Systeme relegiert werden, obwohl dort tatsächlich die meiste Softwareentwicklung stattfindet; zumindest in Bezug auf die Anzahl der Projekte / Produkte.
Es gibt viele Arten zu messen, und einige von ihnen werden hier vorgestellt: Ссылка . Die Beweise legen nahe, dass C ++ wichtig bleibt.
Ich bin mir nicht sicher, ob die Gaming-Industrie unter die "Allzweck-Entwicklung" fällt, aber wenn Sie alles entwickeln wollen, was Sie an mehr als einer einzigen Konsole arbeiten wollen, ist C ++ das, was zum Mittagessen ist. Während viele Spiele und 3D-Bibliotheken Erweiterungen für andere Sprachen haben, haben sie alle Erweiterungen für C / C ++.
C ++ wird immer noch überall dort eingesetzt, wo Sie die beste Leistung wünschen. Sein Hauptvorteil ist, dass Sie buchstäblich für alles verwenden können. Zusätzlich zu dem, was andere Leute gesagt haben, können Sie es auch verwenden, um Webseiten anzutreiben, zum Beispiel OkCupid verwendet es fast ausschließlich.
Wie der aktuelle Hip Hop von Facebook zeigt, können Sie am Ende, wenn Sie es sich leisten können (dh Sie haben ein großes und kompetentes Team), immer etwas daraus gewinnen. Dann ist es auch eine Frage des Maßstabs, außer der Industrie.
C ++ wird normalerweise für die Systemarbeit verwendet, allgemein als Software definiert, bei der die UI nicht zentral ist, nicht als Anwendungsarbeit - wo die UI ist. Für den allgemeinen Geschäftsgebrauch ist es wahrscheinlich nicht sehr interessant und diese Probleme werden besser mit einer höheren Sprache gelöst. Es wird jedoch immer Systeme auf niedriger Ebene geben, die erledigt werden müssen, und C oder C ++ ist die praktische Antwort für diese Probleme gerade jetzt.
Als allgemeine Entwicklungssprache? Nun, es hängt von Ihrer Branche ab, aber ich habe in zwei verschiedenen Branchen gearbeitet und es gibt immer viel C ++ Arbeit:
Ich habe irgendwo gelesen, dass Nyse / Euronext Java benutzt, aber dass sie den Garbage Collector deaktivieren und auf Servern mit wahnsinnigen Mengen an Speicher laufen.
Tags und Links c++