# C / C++ Entwicklung



## Globetrotter (5. Mrz 2017)

Wird irgendwo noch ernsthaft in diesen Sprachen entwickelt?
Neben Java habe ich ca 15 Jahr C / C++ Erfahrung 
Brauchen Firmen überhaupt noch solche Entwickler für bestehende Altprogramme? 

Gruss G.


----------



## Thallius (5. Mrz 2017)

Naja im Embedded und Automotive Bereich und alllem was sonst noch Hardware nah ist ist C++ immer noch die Sprache der Wahl. Und in Bereichen wo es auf Performance ankommt, wie etwa video / Audio Bearbeitung.

Gruß

Claus


----------



## daybyter (11. Mrz 2017)

Im ganzen Mikrocontroller Bereich wird viel C++ verwendet.


----------



## looparda (11. Mrz 2017)

Vor allem in zeitkritischen Anwendungen - das sind meist Embedded Anwendungen. Wenn der Garbage-Collector erstmal verbeikommt bevor der Airbag auslöst .. ist doof.


----------



## Tobse (12. Mrz 2017)

Ich verstehe nicht, warum Leute diese Frage immer wieder stellen. Natürlich wird das eingesetzt!


alles was embedded ist; deine Fernbedienung, deine Tastatur (eigentlich *alle Peripherie*), *die Chips in deinem Handy für UMTS, die Kamera, GPS, WLAN*
Alles, was Hardwarenah sein muss: *Sensoren, Motorensteuerungen, Betreibssysteme, Hardware-Treiber* (deine Samsung *SSD* läuft mit C, darauf kannst du einen lasssen).
Wie schon gesagt, läuft *jede Maschine in einer Fabrik* mit diesen Technologien; entweder, weil Java nicht schnell genug ist oder weil der Garbage-Collector ein zu großes, nicht kalkulierbares Risiko ist. Eine *CNC-Fräße* oder ein *3D-Drucker* mit Sub-Millimeter Genauigkeit muss innerhalb von hunderten Mikrosekunden reagieren. Andernfalls bekommst du diese Präzision nicht hin oder der Druck-/Fräßvorgang dauert ewig.
*Die Börse*. An der Börse gehen Transaktionen ebenfalls im Mikrosekunden-Bereich vonstatten. Wenn deine Software im Schnitt auch nur 2-3 Millisekunden langsamer ist, als die Konkurrenz, verdienst du damit an der Börse kein Geld.
*Alle PC- und Konsolenspiele* sind in C++ geschrieben. Ganz einfach deshalb, weil aktuell keine ernstzunehmende Alternative dazu existiert: Sämtliche *Playstations, Nintendo Konsolen, XBOX, ...*
Fast jede der fancy, highlevel Sprachen, die wir benutzen, ist in C oder C++ implementiert: *Interpreter für PHP, Ruby, Python, Lua und so ziemlich jede andere Skriptsprache*, die verbreitet ist. Der *Java-Compiler* und die *JVM *laufen ebenfalls auf diesen Technologien
*Dein Browser*. Wenn du meinst, dass dein Browser mit Java so schnell und angenehm zu bedienen wäre, irrst du dich. Die *HTML-Parser und JavaScript Engines* einiger Browser sind sogar teilweise in Assembler geschrieben, der Performance wegen.
Anwendungen, welche einst in einer der Sprachen verfasst wurden und heute noch gepflegt werden erfordern Fachleute, die jeden Tag 8 damit arbeiten. So alten Kram auf die JVM zu porten ist viel teurer, als die Fachkräfte für C/C++ auszubilden, die sich darum kümmern


----------



## Wirago (17. Mrz 2017)

Platz 3 auf dem Tiobe Index ist jetzt nicht unbedingt schlecht ^^
http://www.tiobe.com/tiobe-index/


----------



## Jardcore (17. Mrz 2017)

Tobse hat gesagt.:


> *Alle PC- und Konsolenspiele* sind in C++ geschrieben


Das stimmt so nicht. A+++ Titel vielleicht aber nicht ALLE. Es gibt genug Games die in Java, C#, Java Script, Flash, Ruby oder Python geschrieben sind. Durch das Aufkommen des Trends alte Retroklassiker neu aufleben zu lassen.
Um deine Frage zu beantworten, schau einfach mal bei Stepstone nach "Softwareentwickler/in C/C++". Gibt zu mindestens noch 56 Stellen XD ... gibt lieber nicht Java ein, das erschreckt nur... 721


----------



## Tobse (17. Mrz 2017)

Jardcore hat gesagt.:


> Das stimmt so nicht. A+++ Titel vielleicht aber nicht ALLE. Es gibt genug Games die in Java, C#, Java Script, Flash, Ruby oder Python geschrieben sind. Durch das Aufkommen des Trends alte Retroklassiker neu aufleben zu lassen.


Da hast du in der Tat Recht; es gibt einige Ausnahmen. Sowie die Grafik anspruchsvoll ist haben die Spiele aber mindestens einen C/C++ Anteil um mit dem Grafikkarten-Treiber interagieren zu können; bei Frameworks wie Unity ist der C/C++ nicht teil des Spiels selbst, aber unweigerlich existent.



Jardcore hat gesagt.:


> Um deine Frage zu beantworten, schau einfach mal bei Stepstone nach "Softwareentwickler/in C/C++". Gibt zu mindestens noch 56 Stellen XD ... gibt lieber nicht Java ein, das erschreckt nur... 721


Ja, aber 56 sind 56...  Klaro, andere Sprachen werden viel mehr verwendet. IMHO ist der Großteil der Software, an der aktuell gearbeitet wird, zum Großteil fachlicher Natur und nicht auf die Low-Level und Performance Features von C/C++ angewiesen. Ich sehe aber nicht, dass wir uns in den nächsten Jahrzehnten von C und C++ weg bewegen. Mit Glück festigt sich Rust für solche Dinge und C / C++ werden irgendwann nurnoch in Legacy-Code genutzt. Das wird aber noch ne ziemliche Weile dauern...


----------



## Jardcore (17. Mrz 2017)

Wo du es gerade sagst, selbst Libgdx, DAS immer wieder empfohlene Framework wenn es um Java und Spieleentwicklung geht, benutzt intern in einigen Bereichen auch C/C++


----------



## Tobse (17. Mrz 2017)

Mich würde übrigens auch mal interessieren, wie das in der Forschung / Wissenschaft ist. Ich kann mir zum einen gut Vorstellen, dass dort Sprachen wie Python sehr beliebt sind, weil sie viele Freiheiten erlauben; das ist vmtl gerade dann sehr wichtig, wenn man komplexe Konzepte mit einer akzeptablen Syntax abbilden will. TensorFlow (Library für Neuronale Netzwerke von Google) ist z.B. in Python geschrieben.
Auf der anderen Seite frage ich mich aber auch, ob Sprachen wie Python oder Java schnell genug sind, im damit aufwändige physikalische Simulationen effizient zu rechnen :/


----------



## stg (17. Mrz 2017)

Tobse hat gesagt.:


> Auf der anderen Seite frage ich mich aber auch, ob Sprachen wie Python oder Java schnell genug sind, im damit aufwändige physikalische Simulationen effizient zu rechnen :/


Java ist mir da noch nie begegnet. Viele Probleme reduzieren sich darauf, dass man (riesige und/aber oft sehr "gutartige") Lineare Gleichungssysteme löst. Die passenden Solver hierzu werden basierend auf der verwendeten Hardware optmiert. Es wird tatsächlich intensiv darauf geachtet die verschiedenen Memory Level (RAM, Cache, Register) möglichst effizient zu nutzen und unnötiges Datengeschaufel zu vermeiden. Ich wüsste jetzt nicht, wie man das mit Java gescheit angehen könnte


----------



## Tobse (17. Mrz 2017)

stg hat gesagt.:


> Java ist mir da noch nie begegnet. Viele Probleme reduzieren sich darauf, dass man (riesige und/aber oft sehr "gutartige") Lineare Gleichungssysteme löst. Die passenden Solver hierzu werden basierend auf der verwendeten Hardware optmiert. Es wird tatsächlich intensiv darauf geachtet die verschiedenen Memory Level (RAM, Cache, Register) möglichst effizient zu nutzen und unnötiges Datengeschaufel zu vermeiden.


Interessant  danke für den Einblick 



stg hat gesagt.:


> Ich wüsste jetzt nicht, wie man das mit Java gescheit angehen könnte


Meines Wissens nach garnicht... in Java gibt es den Stack und den Heap, Ende der Geschichte. Alles weitere ist Runtime-Spezifisch


----------



## lordofdonuts (31. Aug 2017)

Tobse hat gesagt.:


> Mich würde übrigens auch mal interessieren, wie das in der Forschung / Wissenschaft ist.



In der medizinischen Informatik oder Bio-Informatik erfreut sich im Bereich Statistik R grosser Beliebtheit.

Fuer kuenstliche Intelligenz (Machine Learning, Deep Learning) ist Python sehr gefragt. Stichwort Rapid Prototyping.


----------

