2010-03-03 9 views
7

Mögliche Duplizieren:
Which sector of software industry uses C++?Wird C++ noch aktiv für die allgemeine Entwicklung verwendet?

C++ seit vielen Jahren war der heilige Gral der unternehmenskritischen 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 an 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.

+2

Sehr ähnliche Frage zu http://stackoverflow.com/questions/537595/which-sector-of-software-industry-uses-c – chrism1

+0

Diese wurde ursprünglich mit dem Titel "Ist C++ tot?": Http: // stackoverflow .com/questions/309776/dauerhafter Einfluss-of-c – bk1e

+1

Wie in den Himmeln hat noch niemand dieses "subjektive und argumentative" markiert? – zaratustra

Antwort

12

Zunächst einmal, bezweifle ich, jemand 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 in viel stärkerem Maße dominieren als real.

Das heißt, ist mein Glaube, 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++ absolut angestiegen, aber der Markt ist (ein bisschen) schneller gewachsen, so dass er auf relativer Basis schrumpfte.

Es gibt ein paar Gründe, dies nicht, obwohl in den meisten sekundären Maßnahmen wie Stellenanzeigen nicht angezeigt. Ein paar der offensichtlichen sind:

  1. Viele Teams, die C++ produzieren, hatten jetzt Jahre, um sich "einzuleben", so dass die Fluktuationsrate relativ niedrig ist.
  2. Es ist inzwischen gut etabliert, wo es verwendet wird, so Positionen durch interne Beförderungen gefüllt werden neigen.

Es gibt einen weiteren Effekt, den ich zu erwähnen fast zögern, aber es ist wahr, egal wie wenig viele Leute mögen es: es gibt sowohl Programmierer und Manager, die mehr aufgeregt über „neue“ sind als wirksam. 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 schon seit langem von Java nach C# zu Ruby on Rails zu Hadoop gewechselt, was auch immer die Manager von dieser Woche erwarten.

Um nicht übermäßig negativ zu klingen, sollte ich hinzufügen, dass auf dem Weg einige von ihnen wirklich etwas finden, wozu sie gut sind, und (meistens) dazu neigen, dabei zu bleiben. Leider gibt es für jeden, der dies tut, mindestens fünf neue Absolventen, die sich dem Gedränge anschließen ...

+0

Sehr aufschlussreiche Antwort, die eine klare Perspektive auf das Problem nimmt.Ich werde die C++ Erfahrung machen lassen, dass ich auf die Seite gefallen bin und mich mehr auf C# und F # konzentrieren muss. –

10

"C++ auf eingebettete Systeme effektiv verbannt, Betriebssystem, Browser"

"sonstige bestimmte Entwicklung"

Sie meinen 99% des Codes Menschen auf einer täglichen Basis laufen?

+8

Ich würde durch den Wortlaut in seiner Frage erraten, dass "Allzweckentwicklung" Branchenanwendungen bedeutet. Aber es ist dir anscheinend gelungen, eine nette Rep-Farm zu erstellen. Schön für dich. –

+0

Und nur ein winziger Teil der Entwickler entwickelt diese Browser/Office-Suiten/Betriebssysteme. – nos

+0

buchstäblich jede einzelne Anwendung, die ich verwende, ist C oder C++. Schau dir KDE, GNOME, alles C++ an. Ich weiß genau, in welchen Sprachen alle meine Programme sind, weil ich alle von ihnen kompiliere. Ich benutze Gentoo. Ich sehe nichts anderes durch. Und ich gehe davon aus, dass diese Anwendungen von etwas herkommen, also nehme ich an, dass es viele Entwickler gibt, die C++ verwenden. Der einzige Ort, wo ich C oder C++ nicht sehe, ist in Schulen. –

7

C++ wird immer noch häufig in vielen unternehmenskritischen Finanzanwendungen verwendet. 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 usw.).

Wenn Sie für eine Weile nicht in C++ waren, müssen Sie sich möglicherweise 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 alle neuen Bibliotheken lernen, um effektiv zu sein.

Ich denke, die meisten der Bewegung in andere Sprachen ist mit Web-Entwicklung und Web-zentrische Entwicklung verbunden. Die wichtigste Ausnahme wäre Google, die hauptsächlich C++ und Python verwendet.

+1

Ja. C++ ist die Wahl für hochperformante Anwendungen, insbesondere Server-seitig, vernetzt und Multithread. Ich sehe eine Verschiebung zu C# /. NET für GUI-Anwendungen, aber Server und Algorithmen, wo ich arbeite (auch Finanzen), sind alle C++/Linux. Auf Ihren Punkt über die Gewöhnung an eine ganze Reihe von jetzt-Standard-Bibliotheken - fügen Sie Boost zu dieser Liste. Es ist fast unerlässlich, wenn Sie jetzt C++ programmieren. – Anne

+1

Auch für Finanzanwendungen gehen einige Investmentfonds mit gutem Erfolg auf C# zu. –

+2

Für wissenschaftliche Anwendungen, insbesondere große Cluster, ist es immer noch meist C++ oder Fortran. – KeithB

0

C++ ist immer noch sehr beliebt. Zum Beispiel wird es oft mit Qt kombiniert.

2

Es ist nicht weg, wenn Sie etwas wirklich sehr 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 .

+1

"aber wenn Sie eine Berechnung haben, die Stunden oder Tage dauert". Wenn es richtig geschrieben wird, wird eine Java-Anwendung aufgrund der JIT-Kompilierung in einer vergleichbaren Zeit wie die C++ - Lösung ausgeführt. –

+6

Ich werde dem nicht zustimmen müssen. Die Optimierungen, die mit C++ - Code durchgeführt werden können (siehe Vektorisierung des Intel-Compilers), werden zusätzlich zu der sehr niedrigen Speicherverwaltung den Boden mit Java/C# verwischen. Ich habe den Vergleich über Fließkomma-Mathematik in engen Schleifen mit C# vs. C++ gemacht, und es ist kein Wettbewerb, C++ ist eine Größenordnung schneller für meine Anwendungen. Das ist nicht schlecht von verwalteten Sprachen, ich bevorzuge es, sie zu schreiben, es ist nur wichtig zu wissen, welches Werkzeug in welchem ​​Fall zu verwenden ist. – Steve

+5

Java kann genauso schnell wie C++ sein, wenn es richtig geschrieben wird. Korollar: Niemand schreibt Java richtig. – zaratustra

5

C++ ist immer noch wertvoll für viele leistungsstarke Anwendungen. 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.

+0

+1 für den letzten Punkt. Wenn Sie Programmiermechaniken (Zeiger, Referenzen, virtuelle Funktionen, Vererbung usw.) kennenlernen wollen, ist C++ der richtige Weg. – chester89

0

C++ wird normalerweise für Systemarbeit verwendet, allgemein als Software definiert, wo die UI nicht zentral ist, nicht Anwendungsarbeit - wo die UI Zentrale 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.

+2

C++ wird immer noch sehr stark in der Entwicklung kommerzieller Desktop-Anwendungen verwendet. Vielleicht keine Web-Anwendungen oder In-House-Tools, sondern für die Produktentwicklung absolut. –

3

Bis heute ist C++ die einzige Sprache, die sowohl objektorientiert als auch kompiliert (oder zumindest, die ein ausgereiftes Ökosystem zur Optimierung von Compilern hat). Das macht es zur einzigen Wahl für die meisten großen, rechenintensiven Projekte.

Für mich ist das prominente Beispiel ist Spiele und Game-Engines - das sind huuuuuge Projekte, die Maschinen für milisecond-Fraktionen quetschen. MS versucht, einige Traktion für XNA (ein verwaltetes Spiel-dev Rahmen - im Grunde ein DirectX-Wrapper) zu bekommen, aber wahrscheinlich würde nie für AAA-Spiel-Produktionen bekommen.

0

Als allgemeine Entwicklungssprache?Nun, es hängt von Ihrer Branche, aber ich habe in zwei verschiedenen Branchen gearbeitet und es gibt immer viel C++ Arbeit:

  1. Telecoms
    • Embedded-Geräte verwenden häufig C und C++ für Kerndienste
    • Netzwerkausrüstungen, oft sehr komplex, schwer verwenden C++
    • Software-Anwendungen, die mit Hardware arbeiten oft in C++ geschrieben werden
  2. Finanz Servi ces
    • Trade Execution Systeme sind oft in C++. Sie können Ihre Garbage Collection nicht veranlassen, wenn Sie eine Bestellung für einen Kunden ausführen.
    • Algorithmische und Hochfrequenz-Handelssysteme sind in der Regel C++
    • Allgemeine Handelssysteme, die keine strengen Geschwindigkeitsanforderungen haben, scheinen in C++ und Java zu sein, mit C# beginnt auch zu zeigen.
    • Administrative Anwendungen werden in Java, VB oder C# geschrieben
    • Kürzlich gibt es einen Trend in Richtung funktionale Sprachen für die quantitative Analyse, so F # und Haskell erscheinen, und SAS und Matlab sind auch immer üblich

ich habe irgendwo gelesen, dass Nyse/Euronext verwendet Java, sondern dass sie den Garbage Collector deaktivieren und auf Servern mit wahnsinnigen Mengen an Speicher laufen.

1

Verschiedene Sprachen sind in verschiedenen Domänen vorherrschend. Es ist interessant, dass Sie denken, dass es unwichtig gemacht werden könnte, indem Sie relegated zu eingebetteten Systemen, wenn in der Tat das ist, wo die meisten Software-Entwicklung auftritt; zumindest in Bezug auf die Anzahl der Projekte/Produkte.

Es gibt viele Arten zu messen, und einige von ihnen sind hier dargestellt: http://langpop.com/. Die Beweise deuten darauf hin, dass C++ wichtig bleibt.

2

In den meisten Fällen 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.

1

Ich bin mir nicht sicher, ob die Gaming-Industrie unter "Allzweck-Entwicklung" fällt, aber wenn Sie alles entwickeln wollen, dass Sie an mehr als einer einzigen Konsole arbeiten wollen, ist C++, 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++.

1

C++ wird immer noch überall dort verwendet, 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 Websites zu betreiben, zum Beispiel OkCupid verwendet es fast ausschließlich.

Wie der aktuelle Hip Hop von Facebook zeigt, kann man am Ende, wenn man es sich leisten kann (dh man hat ein großes und kompetentes Team), immer etwas daraus gewinnen. Dann ist es auch eine Frage des Maßstabs, außer der Industrie.

3

Wenn ich mir die Anwendungen anschaue, die ich auf dem Laptop installiert habe, auf dem ich diese Nachricht schreibe, sehe ich eine Menge C/C++ und einige (wenn überhaupt) verwaltete Anwendungen. 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.

Verwandte Themen