C++ oder Java?



  • sarfuan schrieb:

    Helium schrieb:

    Ich sehe leider keinerlei Zusammenhang mit dem Thema. OOP soll sowieso irgendwann gelernt werden. Deswegen ist es total egal, ob OOP einfacher oder schwerer als irgend ein anderes Paradigma ist.

    Zeiger sollen auch irgendwann gelernt werden. Deswegen ist es total egal, ob Zeiger einfacher oder schwerer als irgendein anderes Sprachkonstrukt sind. 👍

    Nein, denn Zeiger sind in der C-Progammierung von Anfang an essenziell. Du kannst nichtmal scanf verwenden ohne Adressen.

    sarfuan schrieb:

    Den Anfang wirst du in C und in C++ rein prozedural machen. OOP ist also hier absolut nicht von belang.

    Bei dir vielleicht. Aber dann sag das auch dazu. Ich kann dir versichern, dass das nicht selbstverständlich ist. 🙄

    Wer bitte erklärt erstmal, wie man tolle OO-Modelle aufbaut, bevor er beigebracht hat, wie man ein "Hallo Welt" programmiert?

    sarfuan schrieb:

    Wenn man bei deinem C++ Beispiel "nicht wissen muss", was Klassen sind, warum muss man dann bei dem ohnehin gekünstelten C-Beispiel plötzlich Zeigerarithmetik beherrschen?

    Muss man nicht.

    sarfuan schrieb:

    Wenn du dich nur an strcpy und strcat störst - nicht dass man für sie Zeigerarithmetik betreiben müsste -, hindert dich keiner daran, diese Funktionen auch wegzulassen:

    char foo[] = "Hallo";
    char bar[] = ", Welt!";
    char zusammen[20];
    
    sprintf(zusammen,"%s%s", foo, bar);
    printf ("Zusammen ergibt das: %s\n", zusammen);
    

    Wenn printf kein Problem darstellt, sollte sprintf ebenfalls keins sein, nicht wahr? Und dass "zusammen" genug Platz braucht, damit man foo und bar hineinstecken kann, leuchtet auch jedem Anfänger ein.

    Das ausreichen Speicher dasein muss ja, aber ist das nicht in jeder Situation so einfach sicherzustellen, wie hier.
    Es ist einfach Erfahrung, dass Anfänger den Umgang mit std::string als deutlich einfacher empfinden, als den mit char *. Und um mit Strings vernümftig arbeiten zu können braucht man Zeigerarithmetik.

    sarfuan schrieb:

    Aber wie gesagt ist dein Beispiel eh gekünstelt. Den Anfängerkurs möchte ich sehen, der sofort beginnt Strings zusammenzuschachteln und nicht einfach erst

    printf ("Zusammen ergibt das: %s%s\n", foo, bar)
    

    schreibt. Denn genau das macht ein Anfänger und ein Anfängerkurs am Anfang. 🙄

    Warum macht der Anfänger das? Weil der Aufwand zum Aneinanderhängen in C viel zu groß ist. Was, wenn ein aneinandergehängter Text weiterverarbeitet werden muss?

    sarfuan schrieb:

    OOP ist irrelevant. Erklär mit in genau drei Sätzen Zeiger, so dass ich sie als Anfänger verstehe (inklusive Zeigerarythmetik, versteht sich).

    Ich kenne keine Zeigerarythmetik.

    1. Satz: Ein Computer hat einen Speicher, der durchnummeriert ist, damit die Kiste sich auch zurechtfindet und weiß, wo was steht.
    2. Satz: Diese Nummern nennt man Adressen und eine Variable, die keinen "normalen" Wert sondern so eine Adresse als Wert speichert, nennt man Zeiger.
    3. Satz: Mit dieser Adresse im Zeiger kann der Computer jetzt direkt Stellen im Speicher finden, ohne "den Namen" der Speicherstelle wissen zu müssen.

    Was genau ist da jetzt das unglaublich fiese und unverständliche Problem an Zeigern?

    [/quote]
    Das ist das Prinzip, das hinter Zeigern steht. Nach den Sätzen kann ich Zeiger nichtmal annähernd praktisch einsetzen.
    Was ist mit Null-Zeigern? Was ist mit Arithmetik.

    Das sind jetzt aber auch alles nur irgendwelche einzelfall-Beispiele.
    Wenn du die ersten Schritte in C als einfacher empfindest, als die in C++, dann ist das dein Ding. Ich empfinde es anders und meine Erfahrung mit Anfängern bestätigt mich.



  • Wieso macht ihr immer wieder bei diesen flamewars mit?



  • sarfuan schrieb:

    interpreter schrieb:

    Diese drei Sätze bringen dir nur was, wenn du eh schon längst weißt was Zeiger sind. Ein Anfänger kann damit nichts anfangen.

    Die Sätze sind alles, was man braucht, um Zeiger zu verstehen. Dass man sich das auch erst mal durchdenken muss, nun, dagegen kann ich nichts tun. Denken muss man noch immer selber.

    Imho völlig weltfremd. Um die ganze Zeigerarithmetik oder Funktionszeiger zu verstehen bedarf es schon ein bißchen mehr.



  • interpreter schrieb:

    Imho völlig weltfremd. Um die ganze Zeigerarithmetik oder Funktionszeiger zu verstehen bedarf es schon ein bißchen mehr.

    Natürlich bedarf es dafür (etwas, aber nicht viel) mehr. Hab ich irgendwo etwas anderes behauptet? 🙄

    Helium schrieb:

    (...) Zeiger sind in der C-Progammierung von Anfang an essenziell. du kannst nichtmal scanf verwenden ohne Adressen.

    Richtig. Und um scanf oder gets verwenden zu können, bedarf es Arrays - die bringst du deinem C++ Anfänger auch bei - und eben die drei Sätze zu Zeigern. Keine Zeigerarithmetik, keine Funktionszeiger.



  • sarfuan schrieb:

    interpreter schrieb:

    Imho völlig weltfremd. Um die ganze Zeigerarithmetik oder Funktionszeiger zu verstehen bedarf es schon ein bißchen mehr.

    Natürlich bedarf es dafür (etwas, aber nicht viel) mehr. Hab ich irgendwo etwas anderes behauptet? 🙄

    Helium schrieb:

    (...) Zeiger sind in der C-Progammierung von Anfang an essenziell. du kannst nichtmal scanf verwenden ohne Adressen.

    Richtig. Und um scanf oder gets verwenden zu können, bedarf es Arrays - die bringst du deinem C++ Anfänger auch bei - und eben die drei Sätze zu Zeigern. Keine Zeigerarithmetik, keine Funktionszeiger.

    Du willst ihnen Arrays beibringen ohne Zeigerarithmetik. Soso 😃


Anmelden zum Antworten