Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Was bringt einem C++ noch? (https://www.delphipraxis.net/39644-bringt-einem-c-noch.html)

malo 5. Feb 2005 18:33


Was bringt einem C++ noch?
 
Überall sieht man sie: Die C++ler. Viele Leute programmieren C++, viele (aktuelle) Programme werden in C++ geschrieben. Erst neulich hab ich in "Herr der Ringe - Schlacht um Mittelerde" eine Visual C++ Exception ausgelöst. Nur, was ist so toll an C++?

Zitat:

Zitat von www.galileocomputing.de
In Kombination mit der .NET Common Language Runtime kann diese Sprache [C#] für die Entwicklung komponentenorientierter Software eingesetzt werden, ohne dass die Programmierer ihr Potenzial im Hinblick auf C-, C++- oder COM-Code ungenutzt lassen müssen.

C# wurde für die Entwicklung robuster, langlebiger Komponenten konzipiert, mit denen Situationen des wirklichen Lebens bewältigt werden können.

C# ist ja dann scheinbar die ".NET-Version" von C++. Warum lernt man dann nicht einfach auf C# um, das ja soviel robuster als C++ ist? Die Syntax ist ja bei C++ und C# soweit gleich, da fällt der Umstieg ja relativ leicht. Außerdem wird ja auch noch an Visual C++ weiterentwickelt, nur warum sollte man denn eine uralte Sprache (c++) am Leben halten, wenn ein Nachfolger (C#) bereits existiert (bzw. eine "erweiterte Form" der alten Sprache)? Oder hab ich da was falsch verstanden?

Oder hat C++ noch irgendwelche grundlegenden Vorteile gegenüber C#? Lohnt es sich eventuell sogar noch, C++ zu lernen?



Wenn ich irgendwo Mist erzählt haben sollte, bitte nicht hauen. Ich hab alles nur so geschildert, wie ich es verstanden hab ;)

tommie-lie 5. Feb 2005 18:45

Re: Was bringt einem C++ noch?
 
Zitat:

Zitat von malo
Oder hat C++ noch irgendwelche grundlegenden Vorteile gegenüber C#?

Nativer Code, Ausgereiftheit und ausgereifte, etablierte Bibliotheken für alles und jeden.

CalganX 5. Feb 2005 18:49

Re: Was bringt einem C++ noch?
 
Hi,
C# ist nicht direkt die .NET-Version von C++. Das wäre Managed C++, was aber kaum jemand verwendet, aus den von dir genannten Gründen.
Der wesentliche Unterschied ist halt, dass C# .NET ist und C++ Win32. Denn mit C# kannst du kein Spiel programmieren, das wäre viel zu langsam, weil .NET einfach nicht für DirectX/OpenGL ausgelegt ist und somit nicht die nötige Performance aufbringen kann. Und wenn man das schaffen würde, wäre das ein erheblich hoher Ressourcenverbrauch. Also verwendet man C++, weil dass die Sprache ist, die von Microsoft gewählt wurde, um Dinge wie DirectX oder OpenGL zu entwickeln. Das "Schöne" daran ist, dass es sowohl auf UNIX-Basis als auch auf Windows-Basis läuft, da beide Betriebssysteme mit C entwickelt wurden und C++ eigentlich nichts Anderes, als die Weiterentwicklung von Ersterem ist.
Und eine Übersetzung der Bibliotheken wäre zu unsicher, zu teuer und zu zeitaufwändig. Also einfach das nehmen, was da ist. Denn C++ ist eigentlich die Programmiersprache gewesen, mit der alle Welt programmiert. Selbst Delphi kann keine Konkurrenz mit C++ aufnehmen. Zumindest in seiner ursprünglichen Form, da Delphi für die Datenbank-Entwicklung geschaffen wurde und somit versucht ein ganz anderes Feld abzudecken. Außerdem ist Delphi für OOP ausgelegt und mit C++ ist das relativ schlecht möglich. Das ist zwar ein großer Vorteil, dennoch ist die Entwicklung von aufwändigen Grafik-Anwendung nicht sehr verbreitet, weil Delphi einfach nicht die nötige Performance bringen kann, die C++ bringt.

Soweit von dem, was ich in den Tiefen meines Hirnes finden konnte. Ich bin mir aber nicht zu 100% sicher, ob das alles schlüssig und vorallem richtig ist. Lasse mich gerne korrigieren. :)

Chris

mr47 5. Feb 2005 19:00

Re: Was bringt einem C++ noch?
 
Ja kann man denn mit C ++/# irgendwas machen, was man mit Delphi (bzw. Object Pascal) nicht kann?

Robert_G 5. Feb 2005 19:14

Re: Was bringt einem C++ noch?
 
Zitat:

Zitat von mr47
Ja kann man denn mit C ++/# irgendwas machen, was man mit Delphi (bzw. Object Pascal) nicht kann?

C++ kann Mehrfachvererbung. C++ kann man zu allen möglichen Plattformen kompilieren.
Es gibt eine ganze Reihe von "perversen Features" in C++, die es (zum Glück) nie zu Delphi oder C# geschafft haben.

Mehrfachvererbung hätte der CLR schon ganz gut gestanden, aber es geht ja auch mit Interfaces... :?

Delphi32 und C# zu vergleichen wäre unfair, da C# eine .Net-Sprache ist und man somit auf Tausende Basisklassen der FCL zurückgreifen kann.

Wenn du jetzt fragen würdest was man mit C# machen kann, dass Delphi.Net nicht kann:
Mit C# kann man wunderbar .Net programmieren. Mit Delphi.Net kann man versuchen .Net zu programmieren. :P

Zitat:

Zitat von Chakotay1308
Der wesentliche Unterschied ist halt, dass C# .NET ist und C++ Win32. Denn mit C# kannst du kein Spiel programmieren, das wäre viel zu langsam, weil .NET einfach nicht für DirectX/OpenGL ausgelegt ist und somit nicht die nötige Performance aufbringen kann. Und wenn man das schaffen würde, wäre das ein erheblich hoher Ressourcenverbrauch.

Das ist Käse. Es gibt zum Beispiel Managed DirectX. Das ist eine komplette Portierung von DirectX, die in C# geschrieben wurde.
Auf die Art kann man DirectX verwenden OHNE .Net verlassen zu müssen.
Das ganze verliert etwa 1-2% der Performance gegenüber hochoptimierten DX-Zugriffen aus nativem C++.

Es gibt aber immer noch "krasse Chegga", die aus irgendeinem masochistischem Trieb lieber OpenGL in C# benutzen. :mrgreen:

Phoenix 5. Feb 2005 19:15

Re: Was bringt einem C++ noch?
 
Mit C++ ja. Zum Beispiel Treiber programmieren. Das ist in Delphi ein nahezu unmögliches Unterfangen. Aber C# steht da genauso schlecht da.

@Chakotay: Das mit den Spielen ist eine glatte Lüge.
Quake II wurde komplett nach managed C++ portiert und läuft ohne Performance-Einbussen 100% auf .NET: Quake II .NET.

Soviel zum Thema .NET sei langsam.

Robert_G 5. Feb 2005 19:21

Re: Was bringt einem C++ noch?
 
Zitat:

Zitat von Phoenix
@Chakotay: Das mit den Spielen ist eine glatte Lüge.
Quake II wurde komplett nach managed C++ portiert und läuft ohne Performance-Einbussen 100% auf .NET: Quake II .NET.

Es ist einen Tick langsamer, da sie das originale Memorymanagement nicht entfernt haben. Auf die Art konkuriert die Instanzverwaltung des Spiels mit der Garbage Collection. (Ist aber nur minimal langsamer ;) )

Zitat:

Zitat von Phoenix
Soviel zum Thema .NET sei langsam.

Das könnte ich so auch nie stehen lassen. Fast jeder wohlüberlegte Code dürfte in .Net mindestens gleichschnell sein. Aufgrund des genialen JIT ist vielles schneller. Multithreading ist zum Beispiel massiv schneller, da man 90% aller Synchronisierungen umgehen kann.

malo 5. Feb 2005 19:38

Re: Was bringt einem C++ noch?
 
Also heißt das, C++ ist für alles überflüssig, außer für direkte Systemeingriffe (z.B. Treiber) und für DirectX / OpenGL-Programme, die nicht auf 1-2% Performence verzichten können? Und warum wird immer noch soviel in C++ gemacht? :gruebel:

Weil es kommt mir vor, als sei C# für alles andere einfach besser geeignet als C++ :gruebel:

Tubos 5. Feb 2005 22:23

Re: Was bringt einem C++ noch?
 
Ich für meinen Teil programmiere deshalb in C++ und nicht in C#, weil ich im Moment noch mit Win32 arbeite. Wenn ich dann auf .NET umsteigen, wird C# drankommen.

rgernha 6. Feb 2005 09:30

Re: Was bringt einem C++ noch?
 
Zitat:

Zitat von malo
Also heißt das, C++ ist für alles überflüssig, außer für direkte Systemeingriffe (z.B. Treiber) und für DirectX / OpenGL-Programme, die nicht auf 1-2% Performence verzichten können? Und warum wird immer noch soviel in C++ gemacht? :gruebel:

Weil es kommt mir vor, als sei C# für alles andere einfach besser geeignet als C++ :gruebel:

Das noch soviel in C++ gemacht wird hat sicher viele Gründe:
z.B. sind viele bestehende Systeme / Prorgamme in C++ geschrieben und nicht jede Firma hat das Geld alle neu zu codieren.
Außerdem haben viele Entwickler C++ müsahm gelernet und es gibt für sie eigentlich keinen Grund eine andere Sprache zu benutzen , da C++ sogut wie alles kann.
Eine viel berechtigtere Frage wäre , wer braucht Delphi , wenn es C++(oder C# für Delphi.net) gibt?
Außerdem kann nicht jeder das .net Framework benutzen (z.b. unter Linux auch wenn es Mono gibt).

Ein anderer Grund ist, dass C++ die eine Sprache für kleine Geräte ist. Z.B. der Ti89 lässt sich mit C programmieren.

Sowieso werden Betriebssysteme usw. in C/C++ geschrieben (und natürlich assembler :-) ).

Aber die C++ werden wohl doch zurückgehen, weil viel, wofür früher C++ mit z.B. den MFC genutzt wird, wird in naher Zukunft wohl mehr auf .net gesetzt.

So klein ist der Perfomance Unterschied zwischen C/C++ und C# gar nicht, wenn man sich mal Benchmarks ansieht.

Man kann aber durchaus Spiele in C# schreiben , siehe Arena Wars.(http://www.gameports.net/gp/artikel_1598.html)

pajofego 6. Feb 2005 10:45

Re: Was bringt einem C++ noch?
 
Die Sache, dass man mit C# kein Game programmieren kann ist wie schon o.g. absoluter Schwachsinn, dass bischen Performanceeverlust durch den GC ist absolut zu vernachlässigen! Natürlich würde man eine Physikengine nicht in C# schreiben, da ist reiner nativer Code schneller! Am besten in Delphi oder für Masochisten in C/C++!

Ich weiss zwar immer noch nicht, warum viele glauben oder der Meinung sind, dass C/C++ die Killersprache ist, wenn man schnelle Programme schreiben möchte! Bei mir war's immer so, dass wenn ich rechenintensive Anwendungen geschrieben habe, Delphi gut und gerne 10-15% schneller war als mein C++ Version! :shock:

Gut ich könnte den Compiler von Intel nehmen, aber für's Geld hole ich mir gleich einen neuen Prozessor, der bringt deutlich mehr Vorteile!

Gruss pajofego

tommie-lie 6. Feb 2005 10:58

Re: Was bringt einem C++ noch?
 
Zitat:

Zitat von pajofego
Natürlich würde man eine Physikengine nicht in C# schreiben, da ist reiner nativer Code schneller!

Sehr schön, gerade bei einer Physikengine, wo keine großen Speicherblöcke allokiert oder von a nach b geschaufelt werden, sondern ausschließlich Formeln runtergerechnet werden, ist es sowas von egal, ob man managed Code schreibt, oder nicht...
Im Gegenteil, die Schnittstelle von managed Code auf die unmanaged DLLs der Physikengine werden wohl langsamer sein, als eine Physikengine in C#.

Zitat:

Zitat von pajofego
Am besten in Delphi oder für Masochisten in C/C++!

Sind C#ler dann auch Masochisten? Dann sollte ich mir wohl mal 'ne Peitsche anlegen...
Und wenn ich den Rest meines Programmes in einer C-Sprache schreibe und alle meine Kollegen nur mit C++ und C# arbeiten, werde ich doch nicht aus irgendwelchen Sympathiegefühlen eine Sprache nehmen, die außer mir keiner in der Firma lesen kann.

Zitat:

Zitat von pajofego
Bei mir war's immer so, dass wenn ich rechenintensive Anwendungen geschrieben habe, Delphi gut und gerne 10-15% schneller war als mein C++ Version! :shock:

Das kann verschiedene Gründe haben, neben dem verwendeten Compiler auch die Art und Weise, wie programmiert wurde.

rgernha 6. Feb 2005 11:10

Re: Was bringt einem C++ noch?
 
Zitat:

Zitat von pajofego

Ich weiss zwar immer noch nicht, warum viele glauben oder der Meinung sind, dass C/C++ die Killersprache ist, wenn man schnelle Programme schreiben möchte! Bei mir war's immer so, dass wenn ich rechenintensive Anwendungen geschrieben habe, Delphi gut und gerne 10-15% schneller war als mein C++ Version! :shock:
Gruss pajofego

Dann musst du was falsch gemacht haben. Die C++ Compiler sind sehr ausgereift und optimierend.

rgernha 6. Feb 2005 11:15

Re: Was bringt einem C++ noch?
 
Zitat:

Zitat von pajofego
Die Sache, dass man mit C# kein Game programmieren kann ist wie schon o.g. absoluter Schwachsinn, dass bischen Performanceeverlust durch den GC ist absolut zu vernachlässigen! Natürlich würde man eine Physikengine nicht in C# schreiben, da ist reiner nativer Code schneller! Am besten in Delphi oder für Masochisten in C/C++!

Gruss pajofego

Ich glaube (weiß aber nicht genau) das Physik Engines mit C++ geschrieben werden, weil Delphi in der Indutstrie und überhaupt keine große Bedeutung hat.

pajofego 6. Feb 2005 11:15

Re: Was bringt einem C++ noch?
 
Zitat:

Zitat von tommie-lie
Zitat:

Zitat von pajofego
Natürlich würde man eine Physikengine nicht in C# schreiben, da ist reiner nativer Code schneller!

Sehr schön, gerade bei einer Physikengine, wo keine großen Speicherblöcke allokiert oder von a nach b geschaufelt werden, sondern ausschließlich Formeln runtergerechnet werden, ist es sowas von egal, ob man managed Code schreibt, oder nicht...
Im Gegenteil, die Schnittstelle von managed Code auf die unmanaged DLLs der Physikengine werden wohl langsamer sein, als eine Physikengine in C#.

Zitat:

Zitat von pajofego
Am besten in Delphi oder für Masochisten in C/C++!

Sind C#ler dann auch Masochisten? Dann sollte ich mir wohl mal 'ne Peitsche anlegen...
Und wenn ich den Rest meines Programmes in einer C-Sprache schreibe und alle meine Kollegen nur mit C++ und C# arbeiten, werde ich doch nicht aus irgendwelchen Sympathiegefühlen eine Sprache nehmen, die außer mir keiner in der Firma lesen kann.

Zitat:

Zitat von pajofego
Bei mir war's immer so, dass wenn ich rechenintensive Anwendungen geschrieben habe, Delphi gut und gerne 10-15% schneller war als mein C++ Version! :shock:

Das kann verschiedene Gründe haben, neben dem verwendeten Compiler auch die Art und Weise, wie programmiert wurde.

Keine Panik, ich hab auch eine Peitsche zu Hause! Programmiere auschließlich nur in C#/C/C++! :???: Mit C# habe ich keine Probleme! Besser- ich liebe es! Nur C/C++ boah ey, da kriege ich das Kotzen!

Wie in Physikengines werden keine großen Speicherblöcke allokiert und...häää?!? Schon mal überlegt wie du Rauch simulieren kannst? Da musst du ganz schön mit großen Matrizen rechnen, na wenn das nicht mit Speicher allokieren zu tun hat und mit dem ständigen hin her schieben von Daten, dann sollte ich wohl nochmals studieren gehen! :gruebel:

Das C/C++ Programm wurde eins zu eins nach Delphi portiert! Es bestand zu 90% aus Schleifen und Speicher allokieren! Es wurden keine besonderen Eigenschaften von Programmiersprache A oder B benutzt, damit der Vergleich auch Gerecht ist! Der Compiler war übrigens der MS C++ aus VS2003!

smart 6. Feb 2005 11:22

Re: Was bringt einem C++ noch?
 
In diesen Zusammenhang mal eine Frage. Was würdet Ihr den empfehlen wenn man die freie Wahl hätte, zwischen Delphi und C++?

tommie-lie 6. Feb 2005 11:27

Re: Was bringt einem C++ noch?
 
Zitat:

Zitat von pajofego
Mit C# habe ich keine Probleme! Besser- ich liebe es! Nur C/C++ boah ey, da kriege ich das Kotzen!

So verschieden finde ich die Syntax von C# und C++ gar nicht, oder ist mir was entgangen? :gruebel: Gut, C++ erlaubt mehr Freiheiten als C#, aber C++ war ja auch nicht für etwas so gut strukturiertes wie das .NET-Framework geschrieben ;-)

Zitat:

Zitat von pajofego
Wie in Physikengines werden keine großen Speicherblöcke allokiert und...häää?!? Schon mal überlegt wie du Rauch simulieren kannst? Da musst du ganz schön mit großen Matrizen rechnen, na wenn das nicht mit Speicher allokieren zu tun hat und mit dem ständigen hin her schieben von Daten, dann sollte ich wohl nochmals studieren gehen! :gruebel:

Bei Matrizenrechnungen bleiben die Matrizen aber alle gleich groß. Wenn ich A * B rechnen will, kann ich die Abmessungen von C aus beiden bestimmen und allokiere sie einmal. Die einzelnen Werte bleiben ständig an ihrer Position, werden also nicht großartig hin- und hergeschubst.

Zitat:

Zitat von smart
Was würdet Ihr den empfehlen wenn man die freie Wahl hätte, zwischen Delphi und C++?

Das kommt drauf an, was man für IDEs zur Verfügung hat, was man für Vorkenntnisse hat, und was man machen will. eine sehr GUI-lastige Anwendung will ich nich in C++ entwickeln müssen, es sei denn ich habe den BCB zur Verfügung.

malo 6. Feb 2005 11:31

Re: Was bringt einem C++ noch?
 
Zitat:

Zitat von smart
In diesen Zusammenhang mal eine Frage. Was würdet Ihr den empfehlen wenn man die freie Wahl hätte, zwischen Delphi und C++?

Delphi, da:

1. Die Syntax ist, meiner Meinung nach, leichter zu verstehen und übersichtlicher

2. Ab D2005 hat man neben Delphi auch C# in einer IDE (also 2 Fliegen mit einer Klappe)

3. Delphi (und auch C#) sind objektorientierter als C++

4. Es fällt einem leichter, fremden Delphicode zu lesen, statt fremdem C++ Code, da in Delphi alles "einheitlich" bleibt, in C++ gibt es jedoch extrem viele Möglichkeiten, dasselbe auszudrücken.

pajofego 6. Feb 2005 11:43

Re: Was bringt einem C++ noch?
 
Zitat:

Dann musst du was falsch gemacht haben. Die C++ Compiler sind sehr ausgereift und optimierend.
Das ist der Delphi Compiler auch!

Zitat:

Ich glaube (weiß aber nicht genau) das Physik Engines mit C++ geschrieben werden, weil Delphi in der Indutstrie und überhaupt keine große Bedeutung hat.
Ja ich weiss, das nervt mich sowieso, dass man selbst an der UNI belächelt wird, wenn man Delphi benutzen möchte!

Um endlich mal auch ein Ende über die Einsatzfähigkeit von Delphi für Spiele zu setzen, dem seie gesagt, dass die Konvertierung Quake2Delphi in Sachen Performance keine Wünsche offen lässt!

Zitat:

Bei Matrizenrechnungen bleiben die Matrizen aber alle gleich groß. Wenn ich A * B rechnen will, kann ich die Abmessungen von C aus beiden bestimmen und allokiere sie einmal. Die einzelnen Werte bleiben ständig an ihrer Position, werden also nicht großartig hin- und hergeschubst.
Das trifft aber nicht für dünnbesetzten Matrizen zu!

Zitat:

So verschieden finde ich die Syntax von C# und C++ gar nicht, oder ist mir was entgangen? Grübelnd... Gut, C++ erlaubt mehr Freiheiten als C#, aber C++ war ja auch nicht für etwas so gut strukturiertes wie das .NET-Framework geschrieben Wink
Die Syntax ist ja auch nicht das Problem! Es sind diese Sche*ß Pointer die mir ständig auf den Sack gehen! In C# kanns ich wenigsten aussuchen ob ich es haben will oder nicht!

tommie-lie 6. Feb 2005 11:49

Re: Was bringt einem C++ noch?
 
Zitat:

Zitat von pajofego
Die Syntax ist ja auch nicht das Problem! Es sind diese Sche*ß Pointer die mir ständig auf den Sack gehen! In C# kanns ich wenigsten aussuchen ob ich es haben will oder nicht!

Das kann ich mir in Delphi und C++ auch. Wenn ich unbedingt so programmieren will, daß ich keine Pointer brauche, kann ich das mit Delphi und C++ genauso machen, indem ich einfach genauso programmiere wie in C#. Aber wenn du mit Pointern nicht zurechtkommst, hast du IMHO sowieso was verpasst, denn intern kommst du um Pointer nicht drumrum, weil jedes Objekt nur ein Pointer ist. Da ist es manchmal von Vorteil, wenn man auch versteht, womit man da überhaupt arbeitet.

rgernha 6. Feb 2005 12:06

Re: Was bringt einem C++ noch?
 
Zitat:

Zitat von smart
In diesen Zusammenhang mal eine Frage. Was würdet Ihr den empfehlen wenn man die freie Wahl hätte, zwischen Delphi und C++?

Wenns geht würd ich C# nehmen :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz