Der Name "C++"
-
Artchi schrieb:
Was hat der Code mit dem Compiler zu tun??? Wenn ich Code schreiben will, der zwischen Compilern portierbar ist, kann ich das trotzdem mit dem MSVC oder GCC machen. Dann benutze ich halt nicht spezielle COmpiler-Erweiterungen! Die (wie du auch festgestellt hast) sogar dokumentiert sind, das sie nicht portabel sind. Wer diese dann immer noch benutzt und portabilität erwartet, hat selber schuld.
Der Compiler kann nichts dafür wenn jemand absichtlich Erweiterungen benutzt.
Du stellst es aber so hin, das der Compiler schuld ist..
Der compiler ist nicht schuld.
Bloß wenn der compiler zu viel erlaubt (nicht standardkonformes), dann schreiben unwissende Personen nicht standard konformen code, wenn sie die dokus nicht lesen.Darum gehts doch.
Im Endeffekt haste aber auch recht.
In dem Sinne noch: Happy coding.
-
Spracherweiterungen kann man aber abschalten, schlampige Implementierung nicht. Insofern kann man sich bei ersterem drauf einstellen, zweiteres zu verhindern (wenn man nicht grad den Sprachstandard aus dem Effeff beherrscht) kann nur die neuere (konformere) Compilerversion sicherstellen

-
Java = C++ + Handicaps + Buzzwords = C++ - praktische Dinge + Marketinggeblubber.
-
1983 prägte Rick Mascitti den Begriff C++. "++" ist bekanntlich der Inkrementoperator von C. Der Begriff D wurde abgelehnt, da C im wesentlichen eine Teilmenge von C++ werden sollte und dies in der Bezeichnung ausgedrückt werden sollte.
http://en.wikipedia.org/wiki/Rick_MascittiDas sind die Gründe, warum man den "Kontakt" zu C nicht abkoppelt:
# Es gibt Millionen von Codezeilen in C, die Nutzen aus C++ ziehen können, sofern ein vollständiges Umschreiben in C++ nicht notwendig ist.
# Es gibt hunderttausende von Programmzeilen in Bibliotheksfunktionen und Dienstprogrammen, die man von C++ aus verwenden kann, sofern C++ vollständig link-kompatibel zu C bleibt und syntaktisch sehr ähnlich zu C.
# Es gibt zehntausende von Programmierern, die C kennen, und daher nur die Erweiterungen von C++ gegenüber C neu lernen müssen.
# Da C und C++ über viele Jahre auf denselben Maschinen verwendet werden würden, sollten die Unterschiede entweder sehr groß oder sehr klein sein, um die Wahrscheinlichkeit von Fehlern und Verwechslungen gering zu halten.
http://www.gia.rwth-aachen.de/Lehre/Cpp/script/online/node5.html
Es geht hier also um handfeste wirtschaftliche Interessen, weniger um puristische Betrachtungen. Wer C++ aus diesem Grunde nicht sonderlich mag, kann als Alternative C# oder Java verwenden (Diskussionen über Vor- und Nachteile gibt es hier zuhauf).
http://www.haw-hamburg.de/rzbt/dankert/ccppjava.html/ (leider nicht mehr aktualisiert)
-
Hallo
Kann bitte mal einer von denjenigen Diskussionsteilnehmern, die die Meinung
vertreten, C++ sei eine eigenständige Sprache und keine Erweiterung von C,
mal was dazu sagen, ob man ein größeres C++ -Programm schreiben kann, und zwar
unter völligem Verzicht auf alle "C-Erblasten" ?Kann man z.B. in C++ völlig auf Zeiger verzichten, wenn man will ?
Was ist mit den zahlreichen Bibliotheksfunktionen von C++, die char* als Argumente
haben wollen (und keine Objekte der Klasse String) ? Kann man die in C++ umgehen
und sich ganz auf string beschränken ?
Kann man in C++ in jedem Fall C-artige Arrays durch vector<...> o.ä. ersetzen?Grüße
-
Hobbyprogrammierer schrieb:
Hallo
Kann bitte mal einer von denjenigen Diskussionsteilnehmern, die die Meinung
vertreten, C++ sei eine eigenständige Sprache und keine Erweiterung von C,
mal was dazu sagen, ob man ein größeres C++ -Programm schreiben kann, und zwar
unter völligem Verzicht auf alle "C-Erblasten" ?Kann man z.B. in C++ völlig auf Zeiger verzichten, wenn man will ?
Was ist mit den zahlreichen Bibliotheksfunktionen von C++, die char* als Argumente
haben wollen (und keine Objekte der Klasse String) ? Kann man die in C++ umgehen
und sich ganz auf string beschränken ?
Kann man in C++ in jedem Fall C-artige Arrays durch vector<...> o.ä. ersetzen?Grüße
Soso. Wenn man ALLES aus C++ rausnimmt was in C bereits vorhanden war, dann muss man ALLES rausnehmen, was hier drinsteht:
http://www.galileocomputing.de/openbook/c_von_a_bis_z/
Im Endeffekt würde fast nix von der Sprach übrigbleiben.Das ist so, als wenn du dir ein Spiel Kaufst. Danach kaufst du dir das AddOn un wirfst das Spiel weg. Dann haste im Endeffekt nur das AddOn welches ohen das eigentliche Spiel nicht lauffähig ist.
Verhält es sich bei C und C++.
Oder Schaffst du es ein komplexes programm zu schrieben OHNE zB die folgenden Sprachelemente zu benutzen:
if else switch while for do continue default case break ... etcDann wären da noch sämtliche Operatoren.
Achja, ohne C dürfte im C++ programm gar keine main fuktion sein!
Viel Spaß!
-
Also ist C++ ja nur eine Erweiterung von BASIC (*)! Da gab's Variablen und wenn man sich mal Variablen aus C++ rausnimmt, dann kann man mit dem Rest ja garnicht mehr viel machen.
(*) wer Freude dran hat bitte ne beliebige andere Programmiersprache einsetzen
-
Da es irgendwie in diesen Thread passt: Kann mir einer mal erklären, seit wann (in etwa) und v.a. warum sizeof('x') in C gleich sizeof(int), in C++ aber sizeof(char) ist?
Würde mich schon interessieren.
-
@Hobbyprogrammierer! Pointer sind keine C-Eigenheit, Pointer sind normale Variablen. Und Variablen gibts in jeder Sprache. char ist einfach nur ein Datentyp, und Datentypen gibt es in jeder Sprache... char gibts sogar in Java.
C zeichnet sich also nicht durch diese Eigenheiten aus. Man kann also schlecht sagen, das C++ C ist, weil es zufällig Pointer (Variablen) und char (primitiver Datentyp) hat. Das sind Basics die jede Sprache hat.
-
Hallo
das C++ C ist, weil es zufällig Pointer und char hat. Das sind Basics die jede Sprache hat.<<
Aber ich finde, die spezielle Pointer-Syntax mit den Operatoren * und & ist schon eine C-Eigenheit.
Sprachen ohne Zeigerkonzept gibt es übrigens viele, vermutlich weit mehr als Sprachen mit Zeigerkonzept. Unter den zeigerlosen sind u.a. die meisten funktionalen Sprachen
(Lisp, Scheme, Haskell,Logo, ... ), etliche Websprachen (Javascript, ...), zahlreiche Skriptsprachen (Python, Ruby), sonstige OOP-Sprachen (Smalltalk, Io, Self,...), deklarative Sprachen (Prolog,...) und weitere.An Sprachen mit Zeiger-Konzept fallen mir gar nicht so viele ein: Basic (sofern
man Peek&Poke als Zeigerkonzept zählen will), Forth, Fortran, Assembler und
sicherlich noch ein paar mehr.Grüße
-
Jester schrieb:
Also ist C++ ja nur eine Erweiterung von BASIC (*)! Da gab's Variablen und wenn man sich mal Variablen aus C++ rausnimmt, dann kann man mit dem Rest ja garnicht mehr viel machen.
(*) wer Freude dran hat bitte ne beliebige andere Programmiersprache einsetzen

BASIC? Was hat Basic mit C zu tun?
Vergleiche mal die Syntax wie man unter BASIC variablen deklariert udn wie unter C. Na?Und jetzt mal ehrlich:
Der Entwickler (!!!) der Sprache C++ hat persönlich gesagt, dass es C++ eine erweiterung zu C ist / ein besseres C.Und jetzt kommen irgendwelche Schlaumaier und behaupten was anders.
Entschuldigung, aber der Entwickler der Sprache dürfte es am BESTEN wissen.
Der Bjarne ist nun mal der Entwickler der Sprache.
(Da kann ja jeder kommen und sagen was C++ in echt ist
)
ende.
-
Hobbyprogrammierer schrieb:
Aber ich finde, die spezielle Pointer-Syntax mit den Operatoren * und & ist schon eine C-Eigenheit.
Willst Du's wirklich an so Äußerlichkeiten wie der Syntax festmachen? Ist es nicht viel interessanter sich die Art und Weise anzuschauen, wie programmiert wird?
-
Jester schrieb:
Hobbyprogrammierer schrieb:
Aber ich finde, die spezielle Pointer-Syntax mit den Operatoren * und & ist schon eine C-Eigenheit.
Willst Du's wirklich an so Äußerlichkeiten wie der Syntax festmachen? Ist es nicht viel interessanter sich die Art und Weise anzuschauen, wie programmiert wird?
AFAIK kann man mit C auch Objecktorientiert programmieren. Naja, amn müsste auf einige Keywords verzichten. Ich glaube sogar, dass das mal Volkard oder jemand in der art gesagt hätte. bin mir aber nicht sicher.
-
... kann man mit C auch objektorientiert programmieren.
Das ist ein interessantes Thema. Die Möglichkeiten von C zeigt Marcus Bäckmann in seinem immer wieder lesenswerten Buch "OOP für Dummies" in Kapitel 10.
Dort äußert er sich übrigens in der Einleitung auch zum Zusammenhang zwischen C und C++: "... so wissen wir doch, dass unser C++ seine Wurzeln in ... C hat. Logo - ein Nachfolger von C konnte nur C++ heißen!"

siehe auch: http://de.wikipedia.org/wiki/Bild:Historie.png
-
Hallo
das stimmt, man braucht nicht zwingend eine Sprache mit Objektmodell,
um objektorientiert zu programmieren.Als Minimalausstattung zur OOP reicht es, daß eine Sprache
1. Hashes
2. Funktionszeiger (oder ein anderes Konzept zum Verweis auf benannte Funktionen)
hat.
Mit dem Hash bildet man die Attributnamen eines Objektes auf seine Werte ab
und mit Funktionszeigern verweist man auf seine Methoden.Das Javascript-Objektmodell besteht beispielsweise im Wesentlichen aus
Hashes mit "function". Damit hat man dann allerdings zunächst prototypenbasierte
Vererbung und noch keine Klassen.Grüße
-
normal schrieb:
BASIC? Was hat Basic mit C zu tun?
sehr gut, Du hast es verstanden.

Vergleiche mal die Syntax wie man unter BASIC variablen deklariert udn wie unter C. Na?
Nochmal: Machst Du das an Äußerlichkeiten wie der Syntax fest? Willst Du Dir nicht lieber anschauen, wie Probleme in C++ gelöst werden? Du wirst zugeben müssen, daß man in C++ Probleme nicht so löst, wie man sie in C gelöst hat und weils ne Erweiterung ist gelegentlich mal ein neues Super-Keyword aus der C++-Erweiterung benutzt um's toller zu machen.
Und jetzt mal ehrlich:
Der Entwickler (!!!) der Sprache C++ hat persönlich gesagt, dass es C++ eine erweiterung zu C ist / ein besseres C.Das mit dem besseren C habe ich auch schon gehört. Gibt's für das andere nen Link?
Und ja, man kann mit C OO programmieren, geht auch mit Assembler. Der große Unterschied ist doch die Sprachunterstützung.
-
Jester schrieb:
normal schrieb:
BASIC? Was hat Basic mit C zu tun?
sehr gut, Du hast es verstanden.

Vergleiche mal die Syntax wie man unter BASIC variablen deklariert udn wie unter C. Na?
Nochmal: Machst Du das an Äußerlichkeiten wie der Syntax fest? Willst Du Dir nicht lieber anschauen, wie Probleme in C++ gelöst werden? Du wirst zugeben müssen, daß man in C++ Probleme nicht so löst, wie man sie in C gelöst hat und weils ne Erweiterung ist gelegentlich mal ein neues Super-Keyword aus der C++-Erweiterung benutzt um's toller zu machen.
Und jetzt mal ehrlich:
Der Entwickler (!!!) der Sprache C++ hat persönlich gesagt, dass es C++ eine erweiterung zu C ist / ein besseres C.Das mit dem besseren C habe ich auch schon gehört. Gibt's für das andere nen Link?
Und ja, man kann mit C OO programmieren, geht auch mit Assembler. Der große Unterschied ist doch die Sprachunterstützung.
Ich kenne den link leider nicht (mehr).
Aber ich meine:
Bjarne hat doch C um wichtige Bestandteile erweitert und dadurch. C++ kreirt.
Mir gefält es bloß nicht, dass manche Leute versuchen die Wurzeln von C++ zu
leugnen. C++ ist nunmal besseres/erweitertes C. JA, es ist auch eine eigentständige Sprache.Ich programmiere selber liebend gerne objektorientiert in C++ aber man sollte dessen Wurzeln nun mal nicht leugnen.
MfG, total normal
-
richtig, C++ hat seine Wurzeln in C, hat sich darüber hinaus aber zu einer komplett eigenständigen Sprache entwickelt. Genauso, wie sich C in der Zeit verändert hat. Da diese veränderungen der Sprachen aber unabhängig voneinander erfolgt sind, ist C++ keine erweiterung zu C (mehr).
-
otze schrieb:
richtig, C++ hat seine Wurzeln in C, hat sich darüber hinaus aber zu einer komplett eigenständigen Sprache entwickelt. Genauso, wie sich C in der Zeit verändert hat. Da diese veränderungen der Sprachen aber unabhängig voneinander erfolgt sind, ist C++ keine erweiterung zu C (mehr).
Amen.
-
normal schrieb:
Jester schrieb:
normal schrieb:
BASIC? Was hat Basic mit C zu tun?
sehr gut, Du hast es verstanden.

Vergleiche mal die Syntax wie man unter BASIC variablen deklariert udn wie unter C. Na?
Nochmal: Machst Du das an Äußerlichkeiten wie der Syntax fest? Willst Du Dir nicht lieber anschauen, wie Probleme in C++ gelöst werden? Du wirst zugeben müssen, daß man in C++ Probleme nicht so löst, wie man sie in C gelöst hat und weils ne Erweiterung ist gelegentlich mal ein neues Super-Keyword aus der C++-Erweiterung benutzt um's toller zu machen.
Und jetzt mal ehrlich:
Der Entwickler (!!!) der Sprache C++ hat persönlich gesagt, dass es C++ eine erweiterung zu C ist / ein besseres C.Das mit dem besseren C habe ich auch schon gehört. Gibt's für das andere nen Link?
Und ja, man kann mit C OO programmieren, geht auch mit Assembler. Der große Unterschied ist doch die Sprachunterstützung.
Ich kenne den link leider nicht (mehr).
Aber ich meine:
Bjarne hat doch C um wichtige Bestandteile erweitert und dadurch. C++ kreirt.
Mir gefält es bloß nicht, dass manche Leute versuchen die Wurzeln von C++ zu
leugnen. C++ ist nunmal besseres/erweitertes C. JA, es ist auch eine eigentständige Sprache.Ich programmiere selber liebend gerne objektorientiert in C++ aber man sollte dessen Wurzeln nun mal nicht leugnen.
MfG, total normal
Amen.