C++ Warum ist C++ oft eine 'gehasste' Programmiersprache?

LastChosenOne

Lt. Junior Grade
Registriert
Mai 2014
Beiträge
353
Hey Community,

ich bins mal wieder. ^^ (Dass ich euch noch nicht nerve, wundert mich schon fast) ^^
Und zwar hör ich dauernd (immernoch) von vielen Leuten aus meiner Arbeit, dass C++ eine 'nicht schöne', 'blöde', 'dumm konzipierte', 'halbe' ... Programmiersprache ist. (Durch die Doppelpunkte, dass nicht alles OO ist, und und und...)

Warum wird C++ aber so gehasst und C so "vergöttert"?


Und wenn es heißt, dass man lieber C++ verwenden sollte, warum werden dann relativ viele (auch neuere) Programme noch in C statt C++ programmiert..?


Freue mich auf eine Diskussion. :-)
Danke.
 
Hm... C++ war schon in Version 7 als ich 18 war, und das ist schon 22 Jahre her.
Schon damals war C halt alt.
:)

C ist halt näher an der Maschine dran als C++, unterhalb von C gibts halt nur noch Assembler.
Von daher könnt ich mir vorstellen, daß C "vergöttert" und C++ mit den vorgefertigten Librarys "gehasst" wird, von echten Handwerkern am Gerät.
 
Wäre mir jetzt nicht bekannt, dass so viele C-Programmierer C++ nicht leiden können. Ich kenne diese Meinung nur von Leuten, die mit C viel in die Richtung Systemprogrammierung machen, und mit Objektorientierung und Anwendungsentwicklung nicht so viel zu tun haben. Das geht dann in die Richtung "Schuster bleib bei Deinen Leisten" :-) (und deshalb sag ich jetzt nix über C ;-) )

Ich könnte mir vorstellen, dass Objektorientierung halt eher ein Paradigma ist, während C so Maschinen-nah ist, dass sich die Sprache selbst nicht auf ein abstraktes Paradigma konzentrieren kann. Man hat halt immernoch Pointer, mallocs, delete im Code, was sich sehr darum kümmert, "wie" man etwas tut, während Objekte eine Abstrahierung darstellen (so dass man sich darauf konzentrieren kann, "was" man tut). Einige "Puristen" stört sowas sicherlich, daher auch die Standard-Aussage "Objekte sind nur Overhead", etc.

Ich könnte natürlich total daneben liegen...
 
Zuletzt bearbeitet:
Es könnte auch noch daran liegen, dass man C Programme, wenn sie richtig geschrieben wurden, auch auf Mikrocontroller oder FPGAs zum Laufen bekommt. Sowas ist zB in der Bildverarbeitung wichtig. Testen am PC, dann Portierung auf FPGA.
 
Welche Programmiersprache wäre denn schneller und eleganter?
Mir fällt keine ein.
 
kaan80 schrieb:
Welche Programmiersprache wäre denn schneller und eleganter?
Mir fällt keine ein.
Eleganz ist sehr subjektiv, und keinesfalls gleichzusetzen mit "Purismus" oder "Minimalismus" :-)
Es gibt Bereiche, da ist C alles andere als elegant.

Oder sagen wir so: wenn Du ein Paradigma brauchst, das C nicht kann, kann C auch nicht elegant in diesem Paradigma sein.
 
Zuletzt bearbeitet:
Da gab es neulich einen tollen Vortrag auf der GPN14.
Ist etwas lang, aber lohnt sich, wenn du dich für Details interessierst, und beantwortet vielleicht einen Teil deiner Fragen.

Ab 1:07:00 gibt es von ihm auch eine kleine Beurteilung über Probleme und Stärken der Sprache.
 
DjNDB schrieb:
Da gab es neulich einen tollen Vortrag auf der GPN14.
Ist etwas lang, aber lohnt sich, wenn du dich für Details interessierst, und beantwortet vielleicht einen Teil deiner Fragen.

Ab 1:07:00 gibt es von ihm auch eine kleine Beurteilung über Probleme und Stärken der Sprache.
Zitat Bjarne Stroustrup (aus dem Video): "Pointers are poison for optimizers" - Performance-Optimierung mit Zeigerarithmetik ist schlecht.

Dem stimme ich voll und ganz zu, aber genau damit bringst Du sehr viele C-Programmierer gegen Dich auf ;-)
 
Ich habe mich damit auch lange, lange Zeit auseinandergesetzt, welche Programmiersprache es sein soll.

Letzenendlich ist es wie beim Fußball: Eine Glaubenssache.

Nimm die, mit der DU glücklich wirst!

C ist mE. höchstens deswegen so unbeliebt, weil es eine tiefe, maschinennahe Sprache ist --> maschinenah = kompliziert und für Kleinigkeiten braucht man 100e Zeilen an Code.

Der gravierenste Unterschied zwischen C und C++: Objektorientierung. Ich selbst kann damit auch nicht anfangen bzw. programme mir mit prozeduralen Sprachen (wie C) unter Einhaltung selbst erstellter Richtlininen ähnlich wie objektorientiert (unabhängige Funktionen etc.)
 
Leider spielt ja Delphi eine immer kleinere Rolle. Aber Delphi hat kleineren Zielcode, kleinere speicherauslastung und vergleichbare Geschwindigkeit mit C++.

Leider gibt es keine Freeware Version mehr.

Aber eine Programmiersprache zu wählen, hängt vom Verwendungszweck ab.

In Windows sollte es eine native .Net Sprache sein. Bei großen, betriebswirtschaftlichen Projekten kommt man um SAPs ABAP eigentlich nicht herum und für Treiber usw. ist es einfach C oder C++.

In C und C++ können sich halt viele Egomanen austoben. Das führt dazu, das, ähnlich wie mit Javascript, Code nach einiger Zeit unlesbar wird.

Eine Sprache ist eben nur so gut, wie de Bibliotheken, die dahinter stecken. Somit ist auch der Satz "C, C++ Programme sind portable und einfach auf andere Betriebssysteme umzuziehen" einfach falsch.
 
miac schrieb:
In C und C++ können sich halt viele Egomanen austoben. Das führt dazu, das, ähnlich wie mit Javascript, Code nach einiger Zeit unlesbar wird.

Das ist in jeder, aber wirklich jeder Sprache der Fall. Wo Deppen am Werk sind, entsteht mieser Code; da ist die Sprache völlig Wurscht.
Ergänzung ()

Marius schrieb:
Hm... C++ war schon in Version 7 als ich 18 war, und das ist schon 22 Jahre her.

Version 7? Bist du sicher, daß du nicht von irgend einem spezifischen Compiler bzw. IDE redest? Ich wüßte nicht, was "Version 7" von C++ überhaupt ein sollte.
 
miac schrieb:
In C und C++ können sich halt viele Egomanen austoben. Das führt dazu, das, ähnlich wie mit Javascript, Code nach einiger Zeit unlesbar wird.

Eine Sprache ist eben nur so gut, wie de Bibliotheken, die dahinter stecken. Somit ist auch der Satz "C, C++ Programme sind portable und einfach auf andere Betriebssysteme umzuziehen" einfach falsch.

Dafür gibt's ja Java ^^
 
Ja nee, C, C++ hat schon ziemliche viele Möglichkeiten, unlesbaren Code zu schreiben bzw. unsauberen Code in vielen Variationen zu hinterlassen.

Beispielsweise die Definition von Variablen im Schleifenkopf.
Obwohl das unsauber ist - es ist eben möglich bzw. gang und gäbe.

Das ist in Pascal oder Basic schon deutlich entschärfter.
 
LastChosenOne schrieb:
Hey Community,

ich bins mal wieder. ^^ (Dass ich euch noch nicht nerve, wundert mich schon fast) ^^
Und zwar hör ich dauernd (immernoch) von vielen Leuten aus meiner Arbeit, dass C++ eine 'nicht schöne', 'blöde', 'dumm konzipierte', 'halbe' ... Programmiersprache ist. (Durch die Doppelpunkte, dass nicht alles OO ist, und und und...)

Warum wird C++ aber so gehasst und C so "vergöttert"?

Gleich vorweg, ich arbeite sehr viel mit C++ und tue das in der Regel auch sehr gern. Meiner Meinung nach ist C++ eine sehr vielseitige Sprache, die eine ganze Menge bietet - Typsicherheit, Unterstützung für verschiedene Paradigmen (OOP, funktionale Programmierung, stinknormale prozedurale Programmierung), Unterstützung für generische Programmierung, RAII, die Möglichkeit, sowohl sehr maschinennah als auch relativ high-level zu arbeiten, und und und ...

Mir fällt eigentlich nur ein Grund ein, weshalb selbst ich C++ manchmal ein klein bißchen hasse: der enorm hohe Komplexitätsgrad. Selbst mit mittlerweise fast 15 Jahren Erfahrung in C++ stolpere ich zwar selten doch ab und an mal über eine der obskureren Ecken der Sprache, und derer gibt es doch schon so einige. Vor den meisten dieser fiesen Stolperfallen bleibt man in der Regel verschont, es sei denn man befaßt sich mit fortschrittlicheren Aspekten der Sprache (z.B. ausgeflipptere Template-Sachen), aber so alle paar Monate kann es schon mal passieren, daß man ein paar Stunden Zeit investiert, um einem von so einem Sonderfall verursachten Problem auf die Schliche zu kommen.

In einer idealen Welt würde das C++ Standard-Kommittee die Sprache mal so richtig schön aufräumen und zumindest die eigentlich unnötigen, aber meist historisch bedingten Unreinheiten beseitigen, aber davor schreckt man zurück, da es in vielen Fällen einen Kompatibilitätsbruch mit der Vergangenheit darstellen würde.
 
Zuletzt bearbeitet:
captmcneil schrieb:
Zitat Bjarne Stroustrup (aus dem Video): "Pointers are poison for optimizers" - Performance-Optimierung mit Zeigerarithmetik ist schlecht.

Dem stimme ich voll und ganz zu, aber genau damit bringst Du sehr viele C-Programmierer gegen Dich auf ;-)

Weil mir dazu gerade was einfällt:
Jemand aus meiner Arbeit hasst Pointer (da du dadurch schnell und (zu) leicht Fehler verursachen kannst), aber C++ mag er noch weniger. ^^

@captmcneil: Ja doch, ist zumindest bei sehr vielen in meiner Arbeit so.

@Hellsfoul: Man kann auch C++ Programme auf Mikrocontrollern laufen lassen (da reichen meist auch ~200kB Speicher aus)

@DjNDB: Danke für den Link, werds mir demnächst mal anschauen. :)

@miac: Ja klar gibt es viele Möglichkeiten, unlesbaren/unsauberen Code zu schreiben - das ist aber in jeder Programmiersprache leicht.
 
miac schrieb:
Ja nee, C, C++ hat schon ziemliche viele Möglichkeiten, unlesbaren Code zu schreiben bzw. unsauberen Code in vielen Variationen zu hinterlassen.

Beispielsweise die Definition von Variablen im Schleifenkopf.
Obwohl das unsauber ist - es ist eben möglich bzw. gang und gäbe.

Was ist daran unsauber? In einer for-Schleife ist es z.B. meistens völlig korrekt, die Zählervariable im Schleifenkopf zu definieren. Es ist immer gut, Variablen auf den kleinst möglichen Gültigkeitsbereich zu beschränken.
Ergänzung ()

LastChosenOne schrieb:
Weil mir dazu gerade was einfällt:
Jemand aus meiner Arbeit hasst Pointer (da du dadurch schnell und (zu) leicht Fehler verursachen kannst), aber C++ mag er noch weniger. ^^

Häufig sind Pointer in der Tat vollkommen vermeidbar. Aber manchmal bracht man sie eben doch, und da wäre es Mist, in einer Sprache zu arbeiten, die sie (oder etwas vergleichbares) nicht hat.
 
@antred
Siehst du, daß ist genau was ich meine.
Variablendefinitionen gehören an den Anfang eines Blockes, besser noch einer Methode/Funktion. Das erhöht nicht nur die Lesbarkeit, das verhindert auch Verdeckung.

Aber es gibt viele weitere Beispiele. C, C++ ist gewachsen und man hat viele alte Konstrukte die man bis heute durchschleppt.
Um die Sprache wieder lesbar zu machen, müßte man tatsächlich mal Aufräumen viel mehr Regularien einführen.
 
@TS
Woran machst du diese Aussage eigentlich fest? Ich halte C++ nicht für oft verhasst. "Programmierer" kann jeder sein, der einen Rechner besitzt. Es gibt unzählige Programmierer und davon sind die meisten schlechte und faule Programmierer. Die meisten, die C++ also nicht mögen, sind unerfahrenen und faul.

Ich stelle auch mal eine Behauptrung auf:

Echte Profis lieben C++.
Beim Lesen dieser logischen Aussage bitte die Regeln für Logik beachten.

Grüße. ;)
 
Warum wird C++ aber so gehasst und C so "vergöttert"?

Ich vermute, es liegt an der Komplexität der Sprache und die Frustration durch die eigenen Grenzen. C++ bietet quasi alle Programmierparadigmen und Datenabstraktionen. Dazu kommt noch eine brauchbare Standardbibliothek, welche man als 'guter' C++ Programmierer von den Konzepten und Anwendung beherrschen sollte. Imo enthält C++ den C-Anteil fast vollständig. Durch Beschränkung auf den C-Anteil sollte man also quasi C in C++ programmieren können. Ich weiß, es gibt gewisse aber imo geringe Unterschiede.
 
Zurück
Oben