Hi,
Objektorientierung ist aber per se anspruchsvoller, weil es von der alltäglichen Denkweise stark abweicht
Garage garage = new Garage();
Rasenmäher mäher = garage.getRasenmäher();
mäher.start();
mäher.mäh(Grundstück.getRasen());
zusammenrechen();
putzen(mäher);
aufräumen();
Was ist daran jetzt nicht Schritt für Schritt?
dein Pseudocode ist aber auch nicht gerade ein typisches Beispiel für Objektorientierung - ich wüsste auch nicht, wie man das besser verdeutlichen könnte. Außerdem hast du vergessen, den Mäher abzustellen. Das kann beim Putzen gefährlich sein! ;-)
Nein, es sind schon zwei Sprachen. Aber C++ ist im Wesentlichen zu C abwärtskompatibel - vor allem, wenn man die Schlampereien, die C++ zulässt, nicht ausnutzt, sondern weiterhin Disziplin walten lässt (z.B. alle Bezeichner ordentlich am Anfang eines Blocks deklariert). Wegen der Verwandtschaft nenne ich die beiden Sprachen daher normalerweise in einem Atemzug.
Variablen dann zu deklarieren wenn man sie braucht ist IMHO keine Schlamperei sondern der einzig richtige Weg.
Findest du? Ich nicht. Wenn ich in der Küche anfange zu kochen oder zu backen, suche ich mir ja auch erst alle Utensilien und Zutaten zusammen, bevor ich überhaupt anfange - und nicht "just in time" wenn ich sie brauche.
Wer C++ lernt, hat meiner Ansicht nach automatisch C mitgelernt.
Und meiner Meinung nach hat nur derjenige der C-artiges C++ lernt C automatisch mitgelernt. Ich behaupte man kann in C++ zwar wie in C programmieren, aber wer sich auf die Denkweise von C++ einlässt der arbeitet grundsätzlich anders als ein C-Programmierer.
Das mag sein, klingt sogar überzeugend. Aber genau diese Denkweise behagt mir nicht, weil sie vom Programmierer verlangt, in weiten Bereichen die Kontrolle abzugeben. Besonders ausgeprägt ist das im Bereich der Speicherverwaltung.
Das gilt nun speziell für C++, nicht für C.
Ich dachte hier ginge es ums C++-Lernen?
Sicher, aber für mich gehört C als Untermenge unbedingt dazu. Sagte ich ja schon.
Ja das ist durchaus Ansichtssache und ich halte es ebenfalls für wichtig die interne Logik kennenzulernen. Aber die meißten Anfänger wollen doch erstmal schnell Ergebnisse sehen, oder nicht?
Weiß ich nicht, ich kann da nur für mich sprechen. Und ich will ein System (Werkzeug, Software, Hifi-Anlage, Auto) erstmal bis ins kleinste Detail kennen, bevor ich es wirklich einsetze.
Ich kenne keine Boost-Bibliotheken, und es interessiert mich auch nicht so brennend, weil ich normalerweise einen Bogen um C++ mache (wenn ich nicht zur Verwendung gezwungen bin) und lieber traditionelles C benutze.
Wenn du dich noch nicht wirklich mit C++ beschäftigt hast dann macht eine Diskussion C vs. C++ in meinen Augen an dieser Stelle wenig Sinn.
Eine solche Diskussion könnte ich auch nur sehr einseitig führen. Ich habe nie behauptet, dass ich C++ mit all seinen Möglichkeiten aus dem FF (oder dezimal 255) beherrsche. Und ich habe mich auch tatsächlich noch nicht so intensiv damit beschäftigt, dass mir all diese Features wirklich vertraut sind. Aber zumindest so weit, dass ich erkannt habe: Ich könnte es anwenden, wenn's denn unbedingt sein muss, aber es liegt mir nicht. Manche Programmierer empfinden es vielleicht als Pluspunkt, wenn ihnen gewisse Denkarbeiten und Routineschritte abgenommen werden; ich will das nicht. Ich will noch jedem Bit bei der Arbeit zusehen können, und dafür ist "echtes" C++ zu undurchsichtig. Da läuft für meinen Geschmack zuviel automatisch hinter den Kulissen ab, was ich als Programmierer nicht mehr im einzelnen mitbekomme und auch nicht beeinflussen kann.
So long,
Martin
Kopflosigkeit schützt nicht vor Migräne.