C zu C++ - Einfacherer Übergang?



  • und wie erklärt man das Öffnen eines Files in C++ ohne auf C-Spezialitäten wie char* zurückzugreifen ?

    myIfstream.open(myFileName.c_str(),...)
    

    c_str() ist dann eine Methode, die einen string ... verzaubert 😕 😉



  • zum Beispiel schrieb:

    und wie erklärt man das Öffnen eines Files in C++ ohne auf C-Spezialitäten wie char* zurückzugreifen ?

    Warum sollte man das tun wollen?
    char* ist Teil von C++.

    Ich erklaere ja auch int, double, float,... warum dann nicht char*?

    Oder meinst du char* ist C und std::string ist C++? Weil dann hast du nicht viel verstanden...

    Die Frage ist doch eher:
    warum sollte ich
    fopen(file, "r")
    erklaeren um dann naechste Woche
    ifstream f(file);
    erklaere?

    Das verwirrt die Leute. Eine Erklaerung dass ein String in C++ nunmal ein char* ist, verwirrt dagegen nicht. Denn ein String in C++ ist nunmal ein char*. std::string ist ein Helferlein um den Umgang mit rohen char* zu vereinfachen.

    Bitte kommt von dieser Verirrung weg, dass alles was man in C macht in C++ nicht gemacht werden sollte. Das ist schwachsinn. Wenn man sagt C++ ist eine andere Sprache als C, dann meint man die Denkweise und die herangehensweise an Probleme. Aber einen int oder eine struct verwende ich in C++ immer noch gleich.

    Genauso wie ich einen int auch noch in Java verwenden darf... Die Syntax ist halt sehr aehnlich... Aber syntax ist syntax und nicht semantik. Ein char* wird in C++ semantisch etwas anders verwendet als in C.



  • namespace invader schrieb:

    bleibt folgendes übrig: "Ich glaube, dass es besser ist, vor C++ die Sprache C zu lernen, weil C++ auf C basiert und Sprachfeatures hinzufügt."

    Ja genau. Zumindest dann, wenn man vorhat, beides zu lernen; und erst recht, wenn man (wie der OP) noch gar nicht weiß, ob man überhaupt auch C++ lernen will.

    Wer C++ lernt, lernt C gleich mit. IMHO ist es für den C++-Lernwilligen unsinnig, zuerst C und dann C++ zu lernen.

    Wer aber C++ nicht lernen mag oder muß, der kann selbstverständlich nur C lernen.



  • veritySeeker schrieb:

    Wer C++ lernt, lernt C gleich mit.

    Falsch. Einfach nur falsch..



  • Janjan schrieb:

    veritySeeker schrieb:

    Wer C++ lernt, lernt C gleich mit.

    Falsch. Einfach nur falsch..

    Du meinst also, man sollte doch zuerst C lernen? 😕
    Etwas mehr solltest Du schon dazu schreiben.



  • Shade Of Mine schrieb:

    Denn ein String in C++ ist nunmal ein char*.

    über diesen Satz muß ich erst meditieren 🙂

    Bis dahin:

    Shade Of Mine schrieb:

    std::string ist ein Helferlein um den Umgang mit rohen char* zu vereinfachen.

    ja, und wie erklärt man das einem C++ noob, ohne auf C zurückzugreifen ?

    "das könnt Ihr jetzt mal nicht verstehen" oder wie 😃



  • Das Problem, wenn man zuerst C lernt, besteht vor allem auch darin, dass der Grossteil des Codes weiterhin funktioniert. Man ist nicht gezwungen, die C++-Äquivalente zu verwenden, weil die C-Mittel immer noch auszureichen scheinen.

    Man hat sich als C-Programmierer für viele Bereiche schon Techniken angeeignet, auf die man nicht ohne Weiteres verzichtet. Ich habe den Eindruck, vielen Programmierern fällt es schwer, alte Gewohnheiten abzulegen und sich aktiv mit Alternativen auseinanderzusetzen, da dazu kein zwingender Grund besteht. Doch auf diese Weise lernt man nichts Neues, C++-Spezifisches. Wenn man hingegen direkt mit C++ anfängt, besitzt man noch keine Herangehensweisen an Probleme und muss diese von Grund auf neu lernen, und zwar direkt in C++.

    Das ist auch kein C-spezifisches Problem. Im C++-Forum sieht man immer wieder, wie z.B. Java-Umsteiger Mühe haben, weil sie überall new verwenden und mit Wertsemantik nicht vertraut sind. Bei Sprachen, die sich oberflächlich so ähnlich sind, werden die Unterschiede meistens unterschätzt.



  • veritySeeker schrieb:

    Janjan schrieb:

    veritySeeker schrieb:

    Wer C++ lernt, lernt C gleich mit.

    Falsch. Einfach nur falsch..

    Du meinst also, man sollte doch zuerst C lernen? 😕
    Etwas mehr solltest Du schon dazu schreiben.

    Damit meine ich, dass man C nicht gleich mit lernt, wenn man C++ lernt. Ist auch gar nicht notwendig. printf, malloc und all den restlichen C müll kann man getrost weglassen.

    zum Beispiel schrieb:

    Shade Of Mine schrieb:

    std::string ist ein Helferlein um den Umgang mit rohen char* zu vereinfachen.

    ja, und wie erklärt man das einem C++ noob, ohne auf C zurückzugreifen ?

    "das könnt Ihr jetzt mal nicht verstehen" oder wie 😃

    Dann schneidet man das Thema C-Strings an, erklärt wie sie arbeiten (roher Speicher, \0-terminiert) und erzählt auch gleich was für eine Qual es ist damit zu arbeiten.



  • veritySeeker schrieb:

    Janjan schrieb:

    Falsch. Einfach nur falsch..

    Du meinst also, man sollte doch zuerst C lernen? 😕
    Etwas mehr solltest Du schon dazu schreiben.

    Janjan mag C nicht und ist wohl der Meinung, man solle C gar nicht lernen, weder einzeln noch mit C++ mit.



  • zum Beispiel schrieb:

    Shade Of Mine schrieb:

    std::string ist ein Helferlein um den Umgang mit rohen char* zu vereinfachen.

    ja, und wie erklärt man das einem C++ noob, ohne auf C zurückzugreifen ?

    Wer sagt denn, dass man nicht auf C zurückgreifen darf? Wie schon erwähnt finden sehr viele Dinge aus C weiterhin Anwendung in C++. Aber für sehr viele Dinge gibt es eben auch Alternativen.



  • namespace invader schrieb:

    veritySeeker schrieb:

    Janjan schrieb:

    Falsch. Einfach nur falsch..

    Du meinst also, man sollte doch zuerst C lernen? 😕
    Etwas mehr solltest Du schon dazu schreiben.

    Janjan mag C nicht und ist wohl der Meinung, man solle C gar nicht lernen, weder einzeln noch mit C++ mit.

    Stimmt nur zum Teil. Ich mag C in der Tat nicht, bin trotzdem der Auffassung man sollte es lernen. Ich bin auch der Meinung, man sollte Assembler lernen. Alleine um ein Gefühl und Wissen darüber zu kriegen, was im Hintergrund bei "höheren Sprachen" passiert.



  • zum Beispiel schrieb:

    Shade Of Mine schrieb:

    std::string ist ein Helferlein um den Umgang mit rohen char* zu vereinfachen.

    ja, und wie erklärt man das einem C++ noob, ohne auf C zurückzugreifen ?

    "das könnt Ihr jetzt mal nicht verstehen" oder wie 😃

    Wie erklaerst du jemanden in C++ was eine Funktion ist?

    Du sagst: das ist eine Funktion:

    void foo() {}
    

    Wie erklaerst du jemanden in C++ was ein string ist?
    Du sagst: das ist ein String:

    char const* str="hallo welt";
    

    Ist das echt so schwer zu verstehen?
    Da muss man kein C erwaehnen. "hallo welt" ist nunmal ein char const* .

    Ist es etwa kein C++ weil ich einen char* habe? Dann ist es unmoeglich C++ code zu schreiben denn jede C++ Anwendung hat char*.


  • Administrator

    zum Beispiel schrieb:

    Shade Of Mine schrieb:

    Denn ein String in C++ ist nunmal ein char*.

    über diesen Satz muß ich erst meditieren 🙂

    Bis dahin:

    Shade Of Mine schrieb:

    std::string ist ein Helferlein um den Umgang mit rohen char* zu vereinfachen.

    ja, und wie erklärt man das einem C++ noob, ohne auf C zurückzugreifen ?

    "das könnt Ihr jetzt mal nicht verstehen" oder wie 😃

    Nach dieser Logik müsste man einem Java Programmierer zuerst C erklären, weil er float, double, int, usw. in seinem Programm benutzt 🙄

    Es gibt nicht nur die Programmiersprache C, welche mit rohen Zeigern umgeht. Man muss doch jemandem nicht gleich ganz C erklären, nur weil man rohe Zeiger verwendet. Was ist denn das für eine seltsame und beschränkte Logik?

    @namespace invader,
    Eine Frage:
    Jemand, welcher C++ gut findet und C++ verteidigt, welcher aber durchaus kritische Dinge an C++ sieht, nur nicht die deinigen, ist für dich automatisch ein C++ Enthusiast und Fanboy, da man C++ schliesslich objektiv einfach nicht gut finden kann?

    @All,
    Geht es nur mir so, oder kommen immer nur Leute aus anderen Sprachen in dieses C++ Forum, um C++ an Stellen zu kritisieren, wo man nur merkt, dass sie C++ gar nicht richtig können? Ich bin auch in ein paar Java & C# Foren unterwegs, sehe dort aber eigentlich nie Leute aus der C++ Ecke vorbeikommen, um mit völligem Unwissen über diese Sprachen zu lästern. Ist das Neid, weil sie nicht in der Lage waren, C++ zu verstehen? 😕

    Grüssli



  • Dravere schrieb:

    @namespace invader,
    Eine Frage:
    Jemand, welcher C++ gut findet und C++ verteidigt, welcher aber durchaus kritische Dinge an C++ sieht, nur nicht die deinigen, ist für dich automatisch ein C++ Enthusiast und Fanboy, da man C++ schliesslich objektiv einfach nicht gut finden kann?

    Nein (bzw. allenfalls ein Enthusiast, was ja nichts schlechtes ist). Aber wenn Leute mit anderer Meinung als Trolle beschimpft oder ihnen Inkompetenz oder Unkenntnis von C++ vorgeworfen wird, hat das nichts mehr mit sachlicher Argumentation zu tun.

    Geht es nur mir so, oder kommen immer nur Leute aus anderen Sprachen in dieses C++ Forum

    Das hier ist kein C++-Forum, sondern ein Forum über C und C++ (und noch einiges anderes). Das C++-Unterforum befindet sich hier.



  • Assalamu Alaikum Wa Rahmatullahi Wa Barakatuh,

    Janjan schrieb:

    veritySeeker schrieb:

    Janjan schrieb:

    veritySeeker schrieb:

    Wer C++ lernt, lernt C gleich mit.

    Falsch. Einfach nur falsch..

    Du meinst also, man sollte doch zuerst C lernen? 😕
    Etwas mehr solltest Du schon dazu schreiben.

    Damit meine ich, dass man C nicht gleich mit lernt, wenn man C++ lernt. Ist auch gar nicht notwendig. printf, malloc und all den restlichen C müll kann man getrost weglassen.

    Masha'Allah ist C Bestandteil von C++, denn sonst würde viel fehlen.
    Du lernst ganz automatisch C, wenn Du C++ lernst. printf und malloc sind nur Funktionen, kein Bestandteil der Programmiersprache.

    Barakallah Feek



  • veritySeeker schrieb:

    Masha'Allah

    Gesundheit.

    veritySeeker schrieb:

    printf und malloc sind nur Funktionen, kein Bestandteil der Programmiersprache.

    Die Standardbibliothek ist Teil der Sprache.



  • Dravere schrieb:

    @All,
    Geht es nur mir so, oder kommen immer nur Leute aus anderen Sprachen in dieses C++ Forum, um C++ an Stellen zu kritisieren, wo man nur merkt, dass sie C++ gar nicht richtig können? Ich bin auch in ein paar Java & C# Foren unterwegs, sehe dort aber eigentlich nie Leute aus der C++ Ecke vorbeikommen, um mit völligem Unwissen über diese Sprachen zu lästern. Ist das Neid, weil sie nicht in der Lage waren, C++ zu verstehen? 😕

    Was auch immer "Leute aus anderen Sprachen" sind. Es gibt auch genügent Leute mit Ahnung, die über C++ Lästern, auch wenn es hier keiner wahr haben will.



  • Assalamu Alaikum Janjan,

    Janjan schrieb:

    veritySeeker schrieb:

    printf und malloc sind nur Funktionen, kein Bestandteil der Programmiersprache.

    Die Standardbibliothek ist Teil der Sprache.

    Das ist ein weit verbreiteter Irrtum! Sprachdefinition und mitgelieferte Libraries sind verschiedene Dinge, Subhanallah!

    Möge Allah Dich rechtleiten und Dir deinen Hochmut vergeben.





  • http://tiny url.com/569v54

    Leerzeichen entfernen.


Anmelden zum Antworten