PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wo ist C++ heutzutage noch sinnvoll?



totycro
30-06-2008, 19:47
Ich hab vor ner Weile mich intensiv mit C++ und Objektorientierung auseinandergesetzt, auch kleine bis mittelgroße Programme geschrieben. Jetzt habe ich Python gelernt, und bin draufgekommen, dass ich alle C++-Programme damit in viel kürzerer Zeit hätte umsetzen können, und mit Psyco würden diese auch ziemlich flott laufen.

Wozu also C++?
Es ist wohl meistens schneller als Python, aber C gilt als noch performanter, weswegen u.a. sicher Linux in C geschrieben ist.

KDE ist bekanntlich auch C++, aber ist das wirklich sinnvoll? Vieles könnte sicherlich auch in Sprachen umgesetzt werden, die schnellere Entwicklung erlauben.


Das sind praktisch alle Argumente, die ich gegen C++ kenne. Wo wird die Sprache aber wiklich sinnvoll und zeitgemäß eingesetzt? Ist sie deprecated?

mehlvogel
30-06-2008, 19:59
Skriptsprachen wie Python werden nie auch nur ansatzweise an die Performance von Hochsprachen kommen. Das mag für kleinere Dinge, wie simple Parser o.ä., nicht sehr spürbar sein, allerdings sobald dort viele, viele Klassen und Objekte existieren, denke ich nicht, dass es da noch sehr flott voran geht. Erst recht nicht gehts, wenn du Algorithmen brauchst, die wirklich ordentlich was rechnen müssen. Da kann man in Python zwar schnell ne Demo hinballern, aber wenn es dann an die realistischen Probleme sind, kackt das halt einfach ab. Gerade in Python kommen noch andere Probleme wie die global interpreter lock hinzu.

Zusätzlich finde ich, ist die Freiheit die man in Python genießt (und sie ist auch meine absolute Lieblingsskriptsprache) gerade bei größeren Projekten auch schnell mal ein Crux, weil man eben nicht mehr weiß, welchen Typ diese Membervariable hat, etc.

Berufspenner
30-06-2008, 20:10
Zu den genannten Punkten, dass Interpretersprachen nie an Hochsprachen bzw. darauß produzierten Maschienencode in Sachen Performance herankommen, gilt auch einfach die Faustregel, dass jede Sprache ihre Daseinsberechtigung hat. Ich z.B. bin ein totaler Fan von C und C++, weil ich mich in beiden Sprachen einfach sehr wohl fühle. Hingegen gefällt mir z.B. Java vom Aufbau her gar nicht und trotzdem kommt es darauf an, welche Sprache sich für welches Projekt am besten eignet und die bekommt dann den Vortritt.

Aber um auf deine Diskrepanz zurück zu kommen. Hast du schonmal versucht ein Datenbanksystem in Python zu schreiben? ;)

peschmae
30-06-2008, 23:12
Also Hochsprache oder nicht hat gar nix mit ob kompiliert, interpretiert oder in eine andere Sprache übersetzt zu tun...

Die Frage nach der Performance kann man auch nicht soo allgemein beantworten - zumindest nicht mehr sobald sich die Interpretersprachen eines JITs bedienen...

Ist wohl für Desktopumgebungen, wenn man jetzt mal von ein paar Performancekritischen Teilen absieht, vor allem eine Frage bezüglich was die Programmierer bevorzugen, was die Programmierumgebung ist, Bibliotheken (und die sind natürlich in C), etc...

Ich persönlich mag C++ gut, die STL nicht so, aber die muss man auch nicht benutzen. Je mehr Lowlevel die Sachen sind die du machst desto mehr C/C++ brauchst du halt. Gerade auch in Richtung Embedded systeme...

MfG Peschmä

P.S. ein cooler Vorteil von C++ ist, dass man zumindest bzgl. der Sprache kein Versionschaos hat ;)

anda_skoa
01-07-2008, 17:11
KDE ist bekanntlich auch C++, aber ist das wirklich sinnvoll? Vieles könnte sicherlich auch in Sprachen umgesetzt werden, die schnellere Entwicklung erlauben.

Darum gibt es auch Sprach-Bindings zu den KDE Bibliotheken. Allerdings wurden die, abesgehen von ein paar kleineren Tools in PyQt/PyKDE, bisher noch sehr wenig eingesetzt. Vermutlich weil C++ mit Qt schon selbst ziemlich fein ist.

Für die Bibliotheken selbst und perfomance-kritische Runtimeinfrastruktur (z.B. WindowManager) dürfte man schwer an C++ vorbeikommen. Vala vielleicht.

Ciao,
_

totycro
02-07-2008, 22:51
Also zusammenfassend: C++ braucht man für embedded-Sachen, Bibliotheken und performancekritische Teile eines Programmes.

Sind in der Realität nicht sehr viele Programme auch C++, bei denen diese Anwendungsgebiete nicht so stark zutreffen?
Vor allem hinsichtlich Performance, denn oft ist ja nur ein kleiner Teil einer Anwendung wirklich kritisch (Algorithmen, oder ähnliches Rechenintensives)..

jan61
03-07-2008, 19:24
Moin,


Also zusammenfassend: C++ braucht man für embedded-Sachen, Bibliotheken und performancekritische Teile eines Programmes...

das ist nur ein Teil der Wahrheit. So sind in C++ realisierte Programme oft ressourcenschonender als z. B. Java-Programme, was bei Services eine Rolle spielen kann, in C++ bin ich als Programmierer Herr der Garbage Collection, in Java macht das die VM (kann Vor- und Nachteil sein ;-)

Dazu kommen etliche nicht-technische Gründe: Welche Spezialisten habe ich für die konkrete Anwendung parat (d. h., welche Sprachen beherrschen die Leute, die die Anwendung implementieren können), welche Frameworks gibt es für mein Anwendungsgebiet, welche APIs bietet der Hersteller einer einzubindenden Komponente an, welche Umgebung bietet der Kunde (vielleicht ist ja keine Java-VM erlaubt?), ist das ein Werksauftrag, der entspr. den Kundenvorgaben realisiert werden muss ...

Jan