Aussterben von C++

Wird C++ in nächster Zeit aussterben

  • Wird C++ in nächster Zeit aussterben und durch C# ersetzt werden

    Abstimmungen: 0 0,0%
  • C# hat keine Zukunft

    Abstimmungen: 0 0,0%

  • Anzahl der Umfrageteilnehmer
    4
Hi

Ich sitz hier gerade in meiner Praktikumsfirma(IT-Technik) wo mir gerade ein Mitarbeiter geraten hat C# anstatt C++ zu lernen. Er hat gesagt, dass C++ aussterben würde und durch c# ersetzt werden würde, welches deutlich sicherer, schneller und besser zu programmieren sei und das ess genauso schnell ist. Ich habe mir auch gerade die Microsoft Visual C# 2008 Express Edition gedownloadet. Ich finde es echt verdammt einfach damit Programme zu erstellen, da man ja sozusagen das Programm nach dem Bau-Kasten-Prinzip zusammenbauen kann.
Ich habe aber im Internet gelesen, dass c++ schneller sein soll,weil direkt auf die Hardware zugegriffen wird und nicht erst auf die virtuelle Maschine.
Was meint ihr dazu? Denkt ihr auch, dass c++ zum Aussterben verurteilt ist? Und welche Sprache ist den jetzt schneller?

Ich freue mich auf eure Meinungen

Dany Sahne
 
Es wird weiterhin beide Sprachen geben. Das liegt zum einen daran, dass viel Software bereits in C++ umgesetzt ist und ein Rewrite zeitmäßig und finanziell viel zu aufwendig wäre und zum zweiten daran, dass C# nur bedingt zur Systemprogrammierung einsetzbar ist. C# mit C++ zu vergleichen halte ich aber auch nicht unbedingt für sinnvoll. Dazu folgt diese Sprache zu sehr den Prinzipien von Java und einer strengen Objektorientierung, während C++ auch prozedurale Ansätze zulässt. Und solange Betriebssystem weiterhin in C geschrieben werden, wird es auch C++ geben. Ein neues innovatives System mit Marktchancen, das auf einer streng objektorientierten Sprache aufgebaut ist, ist mir bisher nicht bekannt. C# ist schliesslich als Konkurrenzprodukt zu Java gemacht und nicht zu C++.
 
Ein neues innovatives System mit Marktchancen, das auf einer streng objektorientierten Sprache aufgebaut ist, ist mir bisher nicht bekannt. C# ist schliesslich als Konkurrenzprodukt zu Java gemacht und nicht zu C++.

Er meinte das der Windows 7 Nachfolger in C# programmiert werden soll.
 
Original von Dany Sahne
Ein neues innovatives System mit Marktchancen, das auf einer streng objektorientierten Sprache aufgebaut ist, ist mir bisher nicht bekannt. C# ist schliesslich als Konkurrenzprodukt zu Java gemacht und nicht zu C++.

Er meinte das der Windows 7 Nachfolger in C# programmiert werden soll.

kann ich mir beim kernel fast nicht vorstellen, und der rest ist doch eh nur schnickschnack ;)

@bit: zwei dumme, ....
 
Hallo,
C# läuft nicht in einer virtuellen Maschine und bringt damit nicht die Nachteile mit sich, die mich bei Java-Programme immer wieder mal zur Weissglut bringen.

C# nutzt einen Just-in-time-Compiler (JIT), das heißt, das C# Programm wird erst in die Common Intermediate Language (CIL) übersetzt, was doch schon stark dem Aussehen von x86 o.ä. Assembler ähnelt (Drei-Adress-Code mit ein paar netten Features).
Wenn der User dann den Code ausführt, wird der benötigte CIL Code in Maschinensprache übersetzt und ausgeführt und kann somit auch für die verschiedenen Plattformen (32 oder 64 Bit, AMD oder Intel?) optimiert werden, ohne dass der Programmierer verschiedene Versionen veröffentlichen muss.

Somit können C# Programme auch eine sehr gute Performance vorweisen, die primär dadurch beschränkt ist, wie gut der JIT-Compiler CIL in Maschinensprache übersetzt und optimiert (man spiele mal an den Optimierungsstufen von gcc rum, das macht nen riesen Unterschied bzgl. Performance).

Allerdings wird C# nie so schnell sein wie C/C++, denn man erkauft durch Performanceverluste deutlich mehr Komfort für den Entwickler (Garbage-Collector, Typ-Überprüfung, Sicherheit usw.).


Deswegen wird C/C++ auch nicht wegen C# aussterben. C/C++ wird weiter dort genutzt, wo sehr gute Performance notwendig ist (z.B. physikalische Berechnungen). Ebenso arbeitet C/C++ deutlich näher an der Maschine und besitzt somit Funktionen, die in der Systemprogrammierung (Kernel) sehr wichtig sind.

Ein anderes Problem in meinen Augen ist, dass sich CIL zurück in C# übersetzen lässt und man somit das Reverse-Engineering sehr leicht macht. Ob es einen CIL -> Maschinencode Compiler schon gibt, weiß ich nicht, konnte aber keinen vor rund 1 Jahr finden. Wie gut die Obfuscatoren arbeiten kann ich nicht bewerten.


Ansonsten liebe ich C#. Wenn man "schneller" mit Effizienz des Programmiers übersetzt, so ist fast immer C# "schneller". In CPU Zeit gewinnt (leider) C++.
Aber für die meisten Anwendungen braucht man keine Top-Performance. Die CPU Zeit die dein Browser, Office-Packet, Mail-Prog. o.ä. braucht ist wirklich gering, da lässt sich C# super nutzen.

Ansonsten:
Mit C# hast du die richtige Gewahl getroffen und wirst du Sprache hoffentlich genauso lieben wie ich. Nicht nur der Designer von Visual Studio ist grandios (und Visual Studio an sich), auch die Features sind die Besten die ich kenne.

Bin immer ganz wehmütig, wenn ich mit Java & Eclipse arbeiten muss, da mir dort einfach extrem viele liebgewonnenen Features fehlen (Properties, Operandenüberladung, Events, benutzerfreundliches Erstellen von Benutzeroberflächen, verschiedene IDE Funktionen).
 
Er meinte das der Windows 7 Nachfolger in C# programmiert werden soll.
Das ist auch nur halb wahr: Es gibt Pläne für ein Windows mit dem Codenamen "Azure", welches einen Microkernel besitzen soll, der quasi nur die C# Programme ausführt und sehr grundlegende Aufgaben übernimmt.
Aber zumindest der Microkernel wird wohl in ASM/C/C++ geschrieben werden. Auch Linux wird C/C++ langfristig am Leben halten denke ich.

mfg
bad_alloc
 
Original von BasicAvid
Original von bitmuncher
DEN Kernel will ich sehen, der in C# zusammengemurkst wird. ;)

SharpOS

Singularity

Aber zum Thema:
Ich denke nicht, dass C++ aussterben wird - zumindest nicht in der hardwarenahen Entwicklung. Wer allerdings heute noch Desktopsoftware in C++ entwickelt, klammert sich zu sehr an die Vergangenheit. C#, Java und Konsorten besitzen deutlich größeren Funktionumfang und sprachliche Finessen, was die Programmentwicklung zum einen deutlich vereinfacht und zum anderen auch noch deutlich verkürzt. Da Zeit bekanntermaßen = Geld ist wird sich ein Softwareentwickler 2x überlegen, welche Gründe nun wirklich für C++ sprechen und ob man nicht besser eine andere Sprache verwenden sollte.
Der Punkt bei C++ ist, dass es die Grundlage für all das bietet und deswegen auch nicht vergessen werden kann: Libraries zur Hardwaresteuerung lassen sich auch in C# nutzen und bilden somit den Grundstein für die Entwicklung von Betriebssystemen und anderen Softwareprojekten.
Die Geschwindigkeit und Rechenkraft wird immer weiter wachsen, viele verstehen auch garnicht mehr, wie man auch 33Mhz noch arbeiten konnte, heute haben selbst Handys höhere Frequenzen. Und genau das ist wiederum ein Grund, warum C++ vom Softwaremarkt verschwinden wird: Dank dieser Power brauchen wir keine optimierten Programme, kein ASM, kein C++ in 80-90 von 100 Firmen in der heutigen Softwareentwicklung. Die Rechenpower merzt die schlechten Algorithmen, in welcher Sprache auch immer, einfach aus. Das Programmieren wird vereinfacht, die Qualität fällt jedoch leider damit ebenfalls.
 
@.doc
Du beziehst dich auf Anwendungssoftware. Sowohl im OS als auch der Software am Benutzer.

Um rechen-aufwendige technische Daten auszuwerten, z.B. eines Teilchenbeschleunigers, ist so viel Leistung wie möglich von Nöten.
Was meinst du, wozu es BOINC gibt? Meinst du, die Nasa wird Java auf den Rechnern im Shuttle einsetzen?

Das sind die restlichen 10-20 Firmen, die anspruchsvolle Software produzieren. Der Chefentwickler von Doom3 lies sich nur schwer überreden, C++ statt reinem C für das Spiel zu verwenden.

Deine Argumentation geht eher da hin, dass bald alle Leute mehr Geld für "bessere" Hardware ausgeben, um darauf "schlechtere" Software laufen zu lassen. Wahrscheinlich ein Trend, würde ich aber so nicht unterschreiben...
 
Was meinst du, wozu es BOINC gibt? Meinst du, die Nasa wird Java auf den Rechnern im Shuttle einsetzen?
BOINC ist bei weitem nicht optimiert, BOINC ist ein Masseprodukt, das auf so vielen Rechnern wie Möglich laufen soll. Das schliesst schon eine perfekte Optimierung von vorne herein aus. Also ob du es jetzt in Java laufen lässt oder in C++ macht mMn keinen Unterschied, da BOINC auch nicht direkt auf der Hardware arbeitet.
Übrigens reduziert die NASA ihre Software nicht aufgrund der Geschwindigkeit auf möglichst effektive Programme, sondern aufgrund des Stromverbrauchs. Java-Programme brauchen effektiv (d.h. auf kleine Größen bezogen) mehr Strom, als optmierte C/C++-Programme, daher ist Java im embedded Bereich auch noch nicht so stark verbreitet. Aber du kannst je gerne mal eine Java-VM auf wenigen Mhz laufen lassen, um es auszutesten ;)

Das sind die restlichen 10-20 Firmen, die anspruchsvolle Software produzieren. Der Chefentwickler von Doom3 lies sich nur schwer überreden, C++ statt reinem C für das Spiel zu verwenden.
Es gibt bereits Spiele in Java und in C#. Die Power von Grafikkarten wird oft nur unzureichend genutzt, ebenso die von Prozessoren. Es ist mMn nur eine Frage der Zeit, wann hier umgestellt wird, MS wird mit DX sicherlich seinen Teil dazu beisteuern.

Übrigens: Nein, ich sage nicht, dass C++ austerben wird. Ich sage, dass in Zukunft Sprachen wie C# und Java die Hauptsprachen in der Softwareentwicklung werden und C++ von seinem derzeitigen Standpunkt als Nummer 1 verschwinden wird. Dass es einige Sprachen immernoch geben wird, weil es geben Gebiete gibt, in denen sie unabdingbar sind, stand zu keiner Zeit in Frage.
 
Original von .doc
Aber du kannst je gerne mal eine Java-VM auf wenigen Mhz laufen lassen, um es auszutesten ;)
Ich erinnere mal an Java-fähige Handys. Die kommen auch zumeist nicht mit mehreren GHz daher. ;) Es gibt durchaus Java-VMs, die direkt für den Embedded-Bereich gedacht sind. Gerade in diesem Markt sehe ich auch gerade für Java eher die Zukunft.
 
Die neuesten Händys haben Mhz-Zahlen jenseits der 100Mhz Grenze. Das iPhone besitzt 625Mhz, ich hatte vor einigen Jahren schon einen PDA von Dell mit 400Mhz. Bei wenigen Mhz meine ich auch wenige Mhz. Einige Teile eines ESA-Satelliten besitzen Taktfrequenzen von unter 1Mhz, das sind nochmal ganz andere Dimensionen, auf denen Java bisher noch keine wirkliche Einsatzmöglichkeit bietet (auch wenn es schon einige wissenschaftliche Tests dazu gibt).
 
Original von Extinction
Das sind die restlichen 10-20 Firmen, die anspruchsvolle Software produzieren.

Also die Aussage kann ich so nicht stehen lassen. Nur weil eine Software nicht höchste mathematische Algorithmen benutzt muss sie nicht minder anspruchsvoll sein. Komplexe betriebswirtschaftliche Prozesse können durchaus auch sehr anspruchsvoll sein, halt auf einer anderen Ebene.

Ich bin im Moment nach wie vor der Meinung daß Java ein Stück die Nase vor C# hat. Das einfache Argument hierfür ist die Plattformunabhängigkeit. Besonders im Webbereich ist das meiner Meinung nach das ausschlaggebende Argument. Entwickeln tun die meisten doch ganz gerne unter Windows, aber laufen soll das ganze dann auf Applicationservern auf Unix-Kisten.

Gruß odigo
 
Original von bitmuncher
DEN Kernel will ich sehen, der in C# zusammengemurkst wird
Ne, ich denke den werden Sie Dir nicht, weil können Sie Dir nicht zeigen.
Selbst das .Net Framework, sprich die Basis von c# ist in Teilen in c programmiert, alles Weitere ist klar.
Kern der Strategie von MS war es ein Betriebsystem bereitzustellen, welches das .net framework als einzige, unumgängliche Applikationsschnittstelle darbeitet. Darunter läuft natürlich c, was auch sonst, und was auch in Zukunft immer an dieser Stelle laufen wird.
Ein Betriebsystem auf managed code:
Man sieht die Tendenzen von ms zu einem solchen Vorhaben sehr deutlich daran, das es auch schon gemanagte Bereiche gibt, die im Bereich der Betriebsystemnähe, in der eingentlich nur handfester c code sein zu Hause hatte, mittlerweile über c# abstrahiert wird. z.B. das Driver developement kit. Man wird niemanden einfach mehr an den, unter der .net api liegenden Betriebsystemkern heranlassen.

Original von elderan
Ein anderes Problem in meinen Augen ist, dass sich CIL zurück in C# übersetzen lässt und man somit das Reverse-Engineering sehr leicht macht. Ob es einen CIL -> Maschinencode Compiler schon gibt, weiß ich nicht, konnte aber keinen vor rund 1 Jahr finden. Wie gut die Obfuscatoren arbeiten kann ich nicht bewerten.

Zumindest unter mono benötigt man nicht unbedingt den Jitter sondern kann auch einen Ahead of time compiler nutzen, welcher die Zeilen schon vor der Ausführung voll übersetzt!

Original von odigo

Also die Aussage kann ich so nicht stehen lassen. Nur weil eine Software nicht höchste mathematische Algorithmen benutzt muss sie nicht minder anspruchsvoll sein.
Gruß odigo

Das Thema ist sehr interessant wie ich finde, auch komplexe physikalische und mathem. Berechnungen finden immer mehr Ihr zu Hause auf der GPU, und sollten bei Spielen sowieso, und auch bei wissenschaftlichen Anwendungen, nicht mehr auf der cpu berechnet werden. Apropos doom3: Wenn ein Spieleentwickler physik und shader auf der cpu mit der Sprache c berechnen würde, so würde das Spiel, nach heutigem graphischen Anspruch , nur so als Diashow über den Schirm ruckeln. Ein c# Programmierer kann auch heute schon hlsl nutzen um de gpu einzuspannen, und hier liegt auch die Zukunft.

Zum Schluss: Ich liebe c#, und werde, soweit es irgendwie geht c# für meine Projekte benutzen.
 
Original von .doc
Die neuesten Händys haben Mhz-Zahlen jenseits der 100Mhz Grenze. Das iPhone besitzt 625Mhz, ich hatte vor einigen Jahren schon einen PDA von Dell mit 400Mhz. Bei wenigen Mhz meine ich auch wenige Mhz. Einige Teile eines ESA-Satelliten besitzen Taktfrequenzen von unter 1Mhz, das sind nochmal ganz andere Dimensionen, auf denen Java bisher noch keine wirkliche Einsatzmöglichkeit bietet (auch wenn es schon einige wissenschaftliche Tests dazu gibt).

Nö.
Mein Nokia 3100 ist von 2003 und hat ganz sicher weit unter 33 Mhz Takt...
 
Original von csde_rats
Original von .doc
Die neuesten Händys haben Mhz-Zahlen jenseits der 100Mhz Grenze. Das iPhone besitzt 625Mhz, ich hatte vor einigen Jahren schon einen PDA von Dell mit 400Mhz. Bei wenigen Mhz meine ich auch wenige Mhz. Einige Teile eines ESA-Satelliten besitzen Taktfrequenzen von unter 1Mhz, das sind nochmal ganz andere Dimensionen, auf denen Java bisher noch keine wirkliche Einsatzmöglichkeit bietet (auch wenn es schon einige wissenschaftliche Tests dazu gibt).

Nö.
Mein Nokia 3100 ist von 2003 und hat ganz sicher weit unter 33 Mhz Takt...

1) "Nö"? Wie kann ich das verstehen? Gibt es keine ESA-Satellitenteile mit <1Mhz oder wie? Formuliere deine Antworten doch etwas mehr aus, als ständig (ist ja jetzt nicht deine einzige Antwort, welche einen Informationsgehalt gegen 0 aufweist) nur Brainfuck zu schreiben.
2) Dein Nokia baut afaik auf einem ASIC Typ 2 auf und nicht, wie heutzutage, auf universellen CPUs [1]. Vergleiche mit universellen CPUs sind hier zwar sehr schwer, allerdings habe ich zumindest einen Benchmark gefunden, welche eine vergleichbare Leistung mit der eines arm7-Prozessors mit ca 49Mhz ergeben hat [2] (zumindest interpretiere ich diese Ergebnisse so - sollte das nicht stimmen kann man mich hier gerne korrigieren).
Aus [2] kannst du auch sehr schön sehen, dass ab ca. 2005 arm9-Prozessoren mit >100Mhz eingesetzt wurden, z.b. beim Nokia 3230.

[1] http://www.jbenchmark.com/phonedetails.jsp?benchmark=ace&D=Nokia 3100
[2] http://fuuast.sinisterforums.com/ftopic15.php
 
Ich erinnere mal an Java-fähige Handys. Die kommen auch zumeist nicht mit mehreren GHz daher. Augenzwinkern Es gibt durchaus Java-VMs, die direkt für den Embedded-Bereich gedacht sind. Gerade in diesem Markt sehe ich auch gerade für Java eher die Zukunft.
Es gibt ja auch Java On A Chip, was Java fast unabhängig vom restlichen Gerät macht.
Eine Vermutung, die ich gerne mal Loswerden würde ist die, dass C++ C im UNIX Bereich langfristig verdrängen wird, da es durch OOP wesentlich einfacher zu handhaben ist als C; bei fast gleicher Geschwindigkeit. Was meint ihr dazu?
 
Zuerst mal vorweg, C++ wird meines Wissens nicht so schnell aussterben. Viele Firmen haben noch nichtmal den Umstieg von C auf C++ gewagt. (Ich spreche aus Erfahrung)

Zur Langsamkeit von Java: Java läuft natürlich zur Zeit grundsätzlich langsamer als C/C++ aber Sun hat die JavaVM in Software eigentlich nur geschaffen, weil sie glaubten bald Javaprozessoren zu entwickeln, die dann natürlich in Fullspeed den Bytecode direkt auf der Hardware ausführen. Die Software JVM ist sogesehen nur eine Zwischenkrüke. Aber die JavaCPUS werden vermutlich auch noch nicht so schnell kommen.
 
Zurück
Oben