Seite 1 von 1

Muss ich C können, bevor ich C++ lernen kann?

Verfasst: Do Jan 14, 2016 1:52 pm
von fat-lobyte
Bjarne Stroustrup sagt, nicht unbedingt:
heise Developer: C++ gilt als eine der schwerer zu erlernenden Sprachen. Was könnte man Ihrer Meinung nach verbessern, um Anfängern den Einstieg zu erleichtern?

Stroustrup: Wenn man es mit anderen Sprachen vergleicht, ist C++ tatsächlich schwer gut zu erlernen. Es gibt viel mehr zu lernen, weil C++ so viel mehr ausdrücken kann und sich zu einem viel breiteren Spektrum von Anwendungen einsetzen lässt als die meisten anderen Sprachen. Trotzdem kann sie zu lernen sehr lohnend sein, weil sie letztlich eine unübertroffene Vielzahl von Kombinationsmöglichkeiten von Flexibilität und Leistungsfähigkeit ermöglicht. C++ legt grundlegende Mechanismen frei, die andere Sprachen eher verstecken – wodurch ihre Nutzer an "Magie" glauben.

Es geht hier aber nicht um Sprachdesign, sondern um das Lernen. C++11 und C++14 sind wesentlich einfacher beizubringen und zu lernen als C++98, und auch das ist viel einfacher zu erlernen, als der Ruf impliziert. Das Problem ist, dass viele Neulinge mit dem Kopf zuerst in die dunkelsten Abgründe der Sprache abtauchen und einfache Lösungen ignorieren. Gleichzeitig bestehen viele Lehrer darauf, ihre unschuldigen Studenten jedem obskuren Detail von C auszusetzen, bevor sie ihnen die C++-Möglichkeiten demonstrieren, die dafür sorgen, dass sie sich mit diesen Komplexitäten nicht auseinandersetzen müssen, bis sie sie wirklich brauchen (wenn das jemals der Fall sein sollte). C++-Elemente wie vector und string vereinfachen vielen Code, der mit Arrays, Zeigern, Makros und expliziter Speicherverwaltung umgesetzt wird.
http://www.heise.de/developer/artikel/I ... kelseite=2

Ist es wirklich so sinnvoll Schüler ganz am Anfang mit char-arrays und malloc()s zu quälen, wenn sie im praktischen leben viel eher std::string brauchen werden? Sicher sollte man mit "Arrays, Zeigern, Makros und expliziter Speicherverwaltung" umgehen können. Aber ich finde, das sollte eher zu einem späteren Zeitpunkt erfolgen, und nicht als "Grundlage" für String-Operationen gesehen werden.

Re: Muss ich C können, bevor ich C++ lernen kann?

Verfasst: Do Jan 14, 2016 2:13 pm
von cloidnerux
Ist es wirklich so sinnvoll Schüler ganz am Anfang mit char-arrays und malloc()s zu quälen, wenn sie im praktischen leben viel eher std::string brauchen werden? Sicher sollte man mit "Arrays, Zeigern, Makros und expliziter Speicherverwaltung" umgehen können. Aber ich finde, das sollte eher zu einem späteren Zeitpunkt erfolgen, und nicht als "Grundlage" für String-Operationen gesehen werden.
Es würde schon unheimlich viel Helfen, wenn die Leute die Programmieren unterrichten, auch tatsächlich programmieren könnten und die Sprache kennen(habe ich mehrfach anders erlebt).
Zudem würde es den Wert eines solchen Unterrichtes steigern, wenn man den Schülern das Lösen von Problem mit einer Programmiersprache näher bringt, anstatt darauf rum zu reiten, was die Farbe eines Pfeils in einem Klassendiagramm von Doxygen zu bedeuten hat.

Schülern, die noch nie Programmiert haben, muss man nicht den Unterschied von C zu C++ erklären. Schüler die Programmieren können wollen, werden das auch alleine lernen.

Re: Muss ich C können, bevor ich C++ lernen kann?

Verfasst: Do Jan 14, 2016 4:22 pm
von Xin
fat-lobyte hat geschrieben:Ist es wirklich so sinnvoll Schüler ganz am Anfang mit char-arrays und malloc()s zu quälen, wenn sie im praktischen leben viel eher std::string brauchen werden? Sicher sollte man mit "Arrays, Zeigern, Makros und expliziter Speicherverwaltung" umgehen können. Aber ich finde, das sollte eher zu einem späteren Zeitpunkt erfolgen, und nicht als "Grundlage" für String-Operationen gesehen werden.
Die Antwort auf Deine Frage gibst Du schon selbst. Sie sollen damit umgehen können, also werden sie es lernen müssen.
Und wie sollen sie verstehen, was std::string tut, wenn man ihnen nicht erklären kann, was ein std::string wirklich tut?