Ist C++ noch aktuell?

04/16/2012 19:06 V8II#1
Hi,
Zahlt es sich noch aus mit C++ anzufangen? Habe lange gezögert, zwei meiner Programmierprofessoren meinten es ist mittlerweile veraltet und haben mir in richtung C#, java geraten. Wie seht ihr das?
04/16/2012 19:11 Tyrar#2
natürlich ist c++ aktuell, mit c++ kannst du u.a. die schnellsten programme schreiben und grundsätzlich auch cross kompatiblen code!
c# lässt sich nur auf windows ausführen (oder mindestens einem emulator), java hat auch nur eine vm die (bei aufwändigen sachen) auch extrem leistung benötigt (siehe minecraft)
04/16/2012 19:42 jacky919#3
Wenn man sich an aktuelle C++ Standards hält ist C++ keineswegs veraltet.
Java und C# sind, meiner Meinung nach, pefekt für Anwendungssoftware geeignet. Sie bieten schon im Standardumfang Möglichkeiten für GUI- und Datenbankprogrammierung an. Im Falle von C++ müsste man hierbei schon auf Bibliotheken von dritten zurückgreifen.
04/16/2012 20:17 MrSm!th#4
C++ > C# >>>>>>> Java (> C @Coxxy :P)


C++ ist nicht veraltet, es bekommt andauernd Aktualisierungen und versuch mal mit C# oder Java Treiber zu schreiben.
Finds jedes Mal lustig, wenn irgendwelche Pseudo-Wahrsager meinen, C++ würde langsam aber sicher verschwinden und Platz für virtuelle Sprachen wie C# oder Java machen :rolleyes:

Quote:
c# lässt sich nur auf windows ausführen (oder mindestens einem emulator), java hat auch nur eine vm die (bei aufwändigen sachen) auch extrem leistung benötigt (siehe minecraft)
C# und Java sind dafür aber crossplattform, C++ Code musst du jedes mal neukompilieren und das klappt auch nur, wenn du standardkonform programmierst.
04/16/2012 21:58 Tyrar#5
Quote:
Originally Posted by MrSm!th View Post
C++ > C# >>>>>>> Java (> C @Coxxy :P)


C++ ist nicht veraltet, es bekommt andauernd Aktualisierungen und versuch mal mit C# oder Java Treiber zu schreiben.
Finds jedes Mal lustig, wenn irgendwelche Pseudo-Wahrsager meinen, C++ würde langsam aber sicher verschwinden und Platz für virtuelle Sprachen wie C# oder Java machen :rolleyes:

C# und Java sind dafür aber crossplattform, C++ Code musst du jedes mal neukompilieren und das klappt auch nur, wenn du standardkonform programmierst.
C# is crossplatform? kein windoof emu?
und java ist klar, nur da wären wir wieder beim thema, was ist wirklich crossplattform? darauf hätte ich jetzt keine lust, passt ausserdem nicht hier rein!

wie du schon sagst, wenn man c++ nach dem standard coded hat man zwischendrin nur einige extra zeilen, die man per ifdef oder ifndef je nach platform verwenden kann! allerdings ist es diese extra arbeit für das endergebnis wert :)
04/16/2012 22:38 Dr. Coxxy#6
wurde praktisch schon alles gesagt, nur dass mrsmith wohl versehentlich c ans ende verschoben hat...
__asm shl c, 3;

für geschwindigkeit-/platzoptimiertes programmieren ist C/C++ immer "noch" die sprache(n) der wahl.
[Only registered and activated users can see links. Click Here To Register...]
kürzlich hat C auch wieder java im tiobe sprachindex überholt ;)
(C++ dümpelt da eh "nur" auf platz 3 rum ;))

Stimme aber smith zu, Sprachen wie C/C++ werden nie verschwinden, da man immer geschwindigkeitsoptimierte programmierung brauchen wird.
asm ist ja auch noch nicht weg und wird auch nie vollständig verschwinden.
C wird sich aufgrund der einfachheit (von der sprache her, nicht unbedingt vom code) gegenüber C++ halten.
Merken die Leute jetzt zu zeiten der Cloud wieder, dass laufzeit auch noch zählt^^
04/17/2012 16:52 Nightblizard#7
Quote:
Originally Posted by HeavyHacker View Post
C# is crossplatform? kein windoof emu?
und java ist klar, nur da wären wir wieder beim thema, was ist wirklich crossplattform? darauf hätte ich jetzt keine lust, passt ausserdem nicht hier rein!
C# ist zumindest theoretisch Plattformunabhängig. Es muss nur eine CLR für das entsprechende System erstellt werden.


@TE:
C++ ist aktueller denn jeh! Auf Channel9 wird sogar von einer C++ Revolution gesprochen, die zur Zeit stattfindet! Du bist also nicht alleine und darfst davon ausgehen, dass auch noch in 20 Jahren C++ eine der aktuellen Sprachen ist!
04/18/2012 21:22 MrSm!th#8
Quote:
C# is crossplatform? kein windoof emu?
Für Mac und Linux gibts Mono.
Quote:
und java ist klar, nur da wären wir wieder beim thema, was ist wirklich crossplattform? darauf hätte ich jetzt keine lust, passt ausserdem nicht hier rein!
Ähm ja. Nach meiner Definition theoretisch nicht, da es nur auf der JVM läuft, aber nach der allgemein gültigen Definition selbst verständlich. Java läuft überall, wo Java installiert ist. C++ kannste immer neukompilieren, du brauchst natürlich auch einen entsprechenden Compiler und nebenbei können APIs sich unterscheiden.
Quote:
wie du schon sagst, wenn man c++ nach dem standard coded hat man zwischendrin nur einige extra zeilen, die man per ifdef oder ifndef je nach platform verwenden kann! allerdings ist es diese extra arbeit für das endergebnis wert
Wenn man standardkonform programmiert, braucht man gar keine #ifdefs.
Die brauchst du erst, wenn du systemabhängige APIs nutzt und die sich halt unterscheiden.
04/26/2012 19:46 -Chin-#9
C++ ist alt , aber nicht veraltet!

Das meiste wurde ja gesagt, für Treiber, leistungsintesieve Anwendunge, vile Game Engines usw. ist C++ unerlässlich.

Auserdem finde ich ganz nebenebei erwähnt, dass man mit einem guten C++ Buch einen richtig Tiefen Einblick in die Methoden bekommt, wie ein computer überhaupt Arbeitet, was bei "neueren" Sprachen oftmals verloren geht...
04/26/2012 20:03 Dr. Coxxy#10
wenn einen interessiert wie ein computer arbeitet -> ASM -> C.
04/26/2012 20:17 Tyrar#11
Quote:
Originally Posted by Dr. Coxxy View Post
wenn einen interessiert wie ein computer arbeitet -> ASM -> C.
was willst du mit c?
in dem fall nur asm :)
04/26/2012 20:25 MrSm!th#12
Quote:
Originally Posted by -Chin- View Post
C++ ist alt , aber nicht veraltet!

Das meiste wurde ja gesagt, für Treiber, leistungsintesieve Anwendunge, vile Game Engines usw. ist C++ unerlässlich.

Auserdem finde ich ganz nebenebei erwähnt, dass man mit einem guten C++ Buch einen richtig Tiefen Einblick in die Methoden bekommt, wie ein computer überhaupt Arbeitet, was bei "neueren" Sprachen oftmals verloren geht...
Das liegt daran, dass man mit ihnen ohnehin nicht auf die Hardware zugreifen kann und sie ja auch genau dafür entwickelt wurden, den PC zu abstrahieren.

Was Coxy sagt is Blödsinn :> Wer wissen will, wie ein PC funktioniert, lernt, wie ein PC funktioniert und ggf. ASM. C hat damit wenig (in Worten: gar nichts) zu tun.
Wenn man das ganze in einer Hochsprache verpacken möchte, kann man dafür genau so gut C++ nehmen.
04/26/2012 20:25 zero5#13
Quote:
Originally Posted by HeavyHacker View Post
was willst du mit c?
in dem fall nur asm :)
Ich persönlich bevorzuge eigentlich Flat Assembler und wenn es etwas mehr in Richtung High(er)-Level gehen soll C. Finde C++ in sich nicht ganz so konsistent, auch wenn es einem in sehr vielen Bereichen die Arbeit (im Gegensatz zu älteren C Standards) stark erleichtert. Fängt schon bei den Vektoren an. Hab mich allerdings nie wirklich mit C++ anfreunden können.

Der extreme Vorteil von C# u.ä. ist der, dass sich ein Programm immer an die modernen CPU Flags und Hardwareeigenschaften anpassen wird, da der Code ja zur Laufzeit an deine Hardware angepasst wird (JIT-Debugger). Um dies bei C++ (oder aber auch Assembler) Projekten zu erreichen, musst du stets den Code neu kompilieren, da ein früher kompiliertes Programm nicht für die aktuelle Hardware angepasst ist. Vergleichst du also zum Beispiel heute ein C++ Programm, welches vor 10 Jahren kompiliert wurde, mit einem äquivalenten C# Programm, wirst du vermutlich bemerken, dass das C# Programm schneller ausgeführt wird als das C++ Programm.

Ich programmiere auch beruflich sehr viel zeitkritische Anwendungen. Wenn ich alles aus meiner aktuellen Hardware rausholen möchte, nehme ich selbstverständlich Assembler (wenn ich mir aktuelle GCC Versionen ankucke bauen die teilweise doch noch ne Menge Scheiße). C# hingegen mag heutzutage zwar noch einige Bottlenecks haben, wird aber in Zukunft definitiv noch um einiges schneller werden.
04/26/2012 20:53 MrSm!th#14
Nur eine kleine Korrektur:

Quote:
(JIT-Debugger)
JIT-Compiler wenn schon ;O

[/klugscheiß]

Ansonsten sehe ich das so ziemlich genau so, wobei ich die Inkonsistenz bei C++ nicht wirklich sehe bzw. sie mich nicht stört, aber das ist ja Ansichtssache.
04/26/2012 20:59 マルコ#15
Quote:
Originally Posted by zero5 View Post
Der extreme Vorteil von C# u.ä. ist der, dass sich ein Programm immer an die modernen CPU Flags und Hardwareeigenschaften anpassen wird, da der Code ja zur Laufzeit an deine Hardware angepasst wird (JIT-Debugger). Um dies bei C++ (oder aber auch Assembler) Projekten zu erreichen, musst du stets den Code neu kompilieren, da ein früher kompiliertes Programm nicht für die aktuelle Hardware angepasst ist.
JIT DEBUGGER = Just In Time DEBUGGER, ist, wie der Name schon sagt, ein Debugger, hat also mit dem Programm an sich nix zu tun. JIT Debugger ist das Kästchen, das dir sagt, wenn deine .NET Anwendung abgeschmiert ist, wo es passiert ist, und was du falsch gemacht hast.
[Only registered and activated users can see links. Click Here To Register...]

Es gibt nicht wirklich viele Programme, die so alt sind, dass man einen großen Unterschied in der (verhältnismäßigen) Geschwindigkeit merken würde. Alte Programme sind meist veraltet, und es gibt neuere Versionen, mit schönerer Oberfläche, mehr Funktionen etc. Und swelbst als Programmierer schaut man doch danach, dass man seine Programme der Zeit anpasst und weiter entwickelt. Hört man auf, ein Programm zu entwickeln, dann gibt es wahrscheinlich ein anderes Programm, das das gleiche macht und weiter entwickelt wird.
Firmen etc. werden also auf das andere Programm umsteigen. Zwar mit Verzögerung (Einarbeitung, Anpassung der aktuellen Umgebung etc.), aber es wird so passieren.

Oder nutzt hier noch jemand Adobe Photoshop 4.0? Oder Office 98?

EDIT: Smith war schneller....