Der Name "C++"



  • Herrlich wenn Unregs hier ungeniert ihre Unwissen posten dürfen. 😃 👍

    TobiasW! Im Prinzip setzen alle neueren C++ Compiler den Standard sehr gut um. Die 99% sind auch gut gedacht, da dies auch MS z.B. sagt. Denn du kannst davon ausgehen das hauptsächlich nur das Schlüsselwort export bisher nicht nutzbar ist. Das C++ Komitee hat sogar mal in Betracht gezogen, das export aus dem nächsten Standard zu rauszunehmen. Wurde aber wieder verworfen, da dann jemand anderes wieder kommen könnte, um was anderes streichen zu wollen.

    Folgende Compiler sind so ziemlich 99% ISO-C++ Standardkonform:

    MS VC++: ab Version 7.1 (2003), v8.0 (2005) ist hier endgültig top.
    GCC: soweit ich informiert bin, seit der 4.0 Version? Wissen die GCC Fans bestimmt besser bescheid.
    Intel C++ Compiler: definitiv ab Version 9. Ob schon 8er Version weiß ich nicht.

    Ansonst machen leider z.B. Borlands Compiler, Suns Compiler u.a. viel Ärger. Sun ist deshalb selbst mittlerweile auf den GCC umgestiegen.



  • 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



  • 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


Anmelden zum Antworten