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

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

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

Beitrag von fat-lobyte » Do Jan 14, 2016 1:52 pm

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.
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

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

Beitrag von cloidnerux » Do Jan 14, 2016 2:13 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

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

Beitrag von Xin » Do Jan 14, 2016 4:22 pm

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?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten