Der Name "C++"



  • icwiener schrieb:

    normal schrieb:

    Also AFAIK ist gcc/g++ der compiler, der am Standardtreusten ist.
    Die compiler von MS sind weniger Standardgetreu.
    Man beachte bestimmte Sprachelemente, die nur bim VSC++ vorhanden sind.
    Über den Borland compielr kann ich nix sagen, da ich ihn nie genutzt habe.

    (Jaja, ich erinner mich noch daran, als ich mich durch die MSDN gewühlt hab udn da iese bemerkungen standen ala Nur auf VSC++ verfügbar)

    Der gcc kompiliert voreingestellt gnu++98, also mit den GNU-Erweiterungen.

    MfG

    Hoppla.

    Naja, einer muss hier ja im Thread Unwissen vertreiben! 😃

    That's me!



  • Standardkonform heißt sicherlich nicht, das es keine Erweiterungen geben darf. Wichtig ist nur, das _mindestens_ der Standard unterstützt wird. Wenn MSVC noch Erweiterungen anbietet, kann sie jeder auf eigene Entscheidung benutzen.



  • Artchi schrieb:

    Standardkonform heißt sicherlich nicht, das es keine Erweiterungen geben darf. Wichtig ist nur, das _mindestens_ der Standard unterstützt wird. Wenn MSVC noch Erweiterungen anbietet, kann sie jeder auf eigene Entscheidung benutzen.

    Dann ist der code aber im Endeffekt doch NICHT standardkonform^^



  • 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..



  • 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_Mascitti

    Das 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 ... etc

    Dann 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

    @Artchi:

    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.


Anmelden zum Antworten