C++ lernen anhand von C?
-
Mitleid, hast du meine Argumentation nur überlesen oder bewusst ignoriert? :p
P.S.:
Mitleid schrieb:
Selbst einige der Top-Poster hier sind mit grundlegenden Konzepten noch nicht so recht vertraut. Siehe deine Behauptung zum Platzierungsoperator delete() ein paar Threads tiefer. :p :p
OK, war jetzt etwas böse. 
Ich sehe mich hier nicht als Top-Poster, da gibt es einige, die weitaus mehr Erfahrung besitzen. Mir ist bewusst, dass ich noch viel lernen kann. Jedoch glaube ich, kann ich von mir schon behaupten, dass mir die Grundkonzepte von C++ einigermassen vertraut sind. Aber selbst da kann es ab und zu wieder passieren, dass man mal falsch liegt, sollte eigentlich auch okay sein (zumal mein Fehler nur in der falschen Begrifflichkeit lag).
-
Ich würde hier eigentlich zuerst mal Nexus unterstützen. Man sollte schon sehen, dass man auch C in C++ programmieren kann. Jemand der C lernt und gleichzeitig oder danach C++, fängt somit schnell an die Sprachen zu mischen, wenn er nicht gehörig aufpasst.
Wer dagegen nur C++ lernt, der macht es in C++, da er nichts anderes kennt. Wenn er danach C lernt, dann kann er in C nicht die C++ Möglichkeiten einsetzen und muss somit C lernen. Die Trennung der Sprachen passiert automatisch.@Mitleid,
Meiner Meinung nach gehst du von einem idealen Menschen aus, was der Fehler in deiner Argumentation ist. Klar, wenn der Programmierer sich wirklich daran hält beim Lernen C und C++ auseinander zu halten, sich nicht immer wieder mal mit C Lösungen in C++ aushilft, diese Sachen ganz klar trennt, nicht faul ist, halt der perfekte Mensch ist, dann schadet es nicht

Nur sind die meisten Anfänger halt anders und viele erkennen den Fehler auch gar nicht, den sie dabei machen. Solche Fehler erkennt man erst deutlich später. Eine Programmiersprache erlernt man auch nicht unter Aufsicht, sondern für sich. Also ist auch niemand da, der auf den Fehler hinweisen könnte, welcher meistens äusserst unbewusst passiert.Grüssli
-
Nexus schrieb:
Mitleid, hast du meine Argumentation nur überlesen oder bewusst ignoriert? :p
Weder, noch. Du bringst nur nichts Neues in die Diskussion ein, sondern nennst nur weitere Möglichkeiten sich nicht mit c++ zu befassen. Es bleibt dabei, wenn man sich weigert sich mit c++ und OOP zu beschäftigen, aus welchen Gründen auch immer, dann kann man es halt nicht. Ob man vorher C gelernt hat oder nicht.
@Dravere
Ganz im Gegenteil. Ich dramatisiere nur nicht so wild. Und auf Fehler wird man schon hingewiesen, wenn man sich mit den entsprechenden Themen beschäftigt.Nebenbei: Der Fragesteller hat Ruby gelernt. Sollte er sich jetzt wirklich diese reine OOP-Welt durch c++ versauen?! Hoffentlich beeinflusst der c++-Wirrwarr nicht seine Fähigkeiten und sprengt seine Birne.

Also, Spaß beiseite, ich sage: Bringt den Anfängern mehr Zutrauen entgegen. Das wird schon ...

-
Mitleid schrieb:
Weder, noch. Du bringst nur nichts Neues in die Diskussion ein, sondern nennst nur weitere Möglichkeiten sich nicht mit c++ zu befassen. Es bleibt dabei, wenn man sich weigert sich mit c++ und OOP zu beschäftigen, aus welchen Gründen auch immer, dann kann man es halt nicht. Ob man vorher C gelernt hat oder nicht.
Du hast nicht verstanden, was ich sagen wollte. Es ging nicht darum, sich vor C++ zu drücken.
Dravere hat Recht, du idealisierst zu stark. Kein Programmierer wird sich zuerst über den ganzen Sprachumfang informieren, bevor er etwas implementiert. Wenn er bereits Möglichkeiten kennt, ist die Tendenz noch grösser, das nicht zu tun. Glaubst du das etwa nicht?
Mitleid schrieb:
Und auf Fehler wird man schon hingewiesen, wenn man sich mit den entsprechenden Themen beschäftigt.
Denkst du. Wie sollte man zum Beispiel einfach so merken, dass
memcpy()auf Klassen angewandt schief gehen kann? Das erfährt man meistens erst, wenn man nachfragt. Ich würde nicht davon ausgehen, dass in modernen C++-Büchern viele C-Mechanismen erklärt werden, von daher könnte man vergebens auf so einen Hinweis warten. Beginnt man hingegen mit C++, hat man dieses Problem gar nicht erst.Mitleid schrieb:
Nebenbei: Der Fragesteller hat Ruby gelernt. Sollte er sich jetzt wirklich diese reine OOP-Welt durch c++ versauen?!
Stimmt. Lieber gleich C nehmen.

-
Mitleid schrieb:
Ganz im Gegenteil. Ich dramatisiere nur nicht so wild. Und auf Fehler wird man schon hingewiesen, wenn man sich mit den entsprechenden Themen beschäftigt.
Ich dramatisiere nicht. Ich spreche nur aus meiner bisherigen Erfahrung, wie alle anderen hier auch. Du willst einfach diese Erfahrung nicht aktzeptieren und bleibst lieber bei deinen theoretischen Vorstellungen.
Mitleid schrieb:
Nebenbei: Der Fragesteller hat Ruby gelernt. Sollte er sich jetzt wirklich diese reine OOP-Welt durch c++ versauen?! Hoffentlich beeinflusst der c++-Wirrwarr nicht seine Fähigkeiten und sprengt seine Birne.

Du hast anscheinend nicht verstanden, worum es beim "C zu C++ Wechsel" Problem geht.
Du kannst kein Ruby in C++ programmieren, der Kompiler wird das nie fressen. Ein C Code dagegen ohne Probleme, auch wenn er noch so schlecht ist, noch so undefiniertes Verhalten auslöst usw. usf.Grüssli
-
Dravere schrieb:
Du hast anscheinend nicht verstanden, worum es beim "C zu C++ Wechsel" Problem geht.
Jetzt mal nicht albern werden.
Was unerfahrene Programmierer wie du, nexus und einige andere nicht verstehen, ist die Nichtigkeit dieses von euch beschriebenen "Problems".
Nachdem ich den ersten Kontakt zu c++ mindestens 10 Jahre vor euch hatte und nochmal 10-13 Jahre vorher zu programmieren angefangen habe, d.h. sozusagen die gesamte Entwicklung hin zur Etablierung von OOP live miterlebt habe, kann ich mich über eure Aussagen nur wundern.
Liegt vielleicht daran, dass ihr mit den ganzen Standards aufgewachsen seid und euch diese Flexibilität, die wir noch an den Tag legen mussten, nicht natürlich erscheint. Wer weiß?
Jedenfalls entschuldigst du, dass ich eure "Erfahrungen" nicht so recht ernst nehmen kann. Dass es mich sogar amüsiert, wenn ihr Ratschläge über guten Stil, gutes c++ usw. aus Büchern einfach nachplappert, ohne jemals in einer Firma gearbeitet und wirklich Software produziert zu haben.
Wobei das ja nicht so schlimm ist. Schlimmer sind so Aussagen wie die vom "Regsitrierten Troll" die da behaupten man wird jahrelang von "C mit Klassen"-Müll verfolgt usw. als gäbe es dafür irgendeine Gesetzmäßigkeit.
-
Mitleid schrieb:
wird jahrelang von "C mit Klassen"-Müll verfolgt usw. als gäbe es dafür irgendeine Gesetzmäßigkeit.
Das Forum hier als Indiz für die Häufigkeit hierfür reicht dir wohl nich?
Aber offensichtlich scheinst du Resistent gegen andere Meinungen oder Argumente zu sein...
bb
-
Mitleid schrieb:
Was unerfahrene Programmierer wie du, nexus und einige andere nicht verstehen, ist die Nichtigkeit dieses von euch beschriebenen "Problems".
Wenn du schon damit anfängst, ad hominem zu argumentieren: Das sind verdiente Forenmitglieder, die hier teilweise seit Jahren durch die dickste Newbie-Scheiße waten und trotzdem jedem noch so ignoranten Möchtegern-C++-Programmierer bereitwillig helfen, die immer gleichen idiotischen "Probleme" zu lösen. Während du irgendein Niemand bist, der sich nur groß aufspielt und simpelste Zusammenhänge abstreitet, die sonst jeder sofort erkennt.
Der OP wird sich wohl selbst ein Bild machen, wessen Aussagen er mehr Glauben schenkt.
-
@Mitleid,
Oh ja, gib es uns! Ich liebe diese Argumentation:
"ICH PROGRAMMIERE SEIT 50 JAHREN, DESHALB BIN ICH BESSER ALS IHR!!!"Ganz ehrlich, darauf habe ich nur eine Antwort:
Alteisen sollte man frühzeitig auf den Schrottplatz bringen, bevor es einem komplett wegrostet und man nichts mehr hat.
Grüssli
-
unskilled schrieb:
Das Forum hier als Indiz für die Häufigkeit hierfür reicht dir wohl nich?
Häufigkeit von was? printf()-Funktionen in HalloWelt-Applikationen?
unskilled schrieb:
Aber offensichtlich scheinst du Resistent gegen andere Meinungen oder Argumente zu sein...
Nicht wenn sie fundiert sind, was hier nicht der Fall ist.
Registrierter Troll schrieb:
Das sind verdiente Forenmitglieder, die hier teilweise seit Jahren durch die dickste Newbie-Scheiße waten und trotzdem jedem noch so ignoranten Möchtegern-C++-Programmierer bereitwillig helfen, die immer gleichen idiotischen "Probleme" zu lösen.
Ich habe nicht an ihren Verdiensten um dieses Forum gezweifelt. Ich habe lediglich auf den Vorwurf reagiert, ich würde das Problem nich verstehen und ich solle doch ihre "Erfahrung" berücksichtigen. Und diese Erfahrung ist halt recht beschränkt (noch).

Die Zusammenhänge von denen du sprichst sind schlicht nicht vorhanden. Ich meine, habt ihr euch mal zurückgelehnt und reflektiert ein wenig was ihr hier behauptet?
C-Vorkenntnisse sollen negativ für das Erlernen von c++ sein und einem sogar jahrelang an vernünftiger c++-Programmierung hindern.
Aha.
Mein Meinung dazu ist wohl klar und JA, ich hoffe der Threadstarter kann sich nun ein besseres eigenes Bild machen, was das Thema angeht.
@Dravere
Ich sagte doch: Nicht albern werden.
Aber, es stimmt. Ich habe einen Vorsprung vor dir aus dem einfachen Grund weil ich schon länger dabei bin. Und manchmal hast du dich auch schon artig bedankt als ich dir die eine oder andere Frage (unter einem anderen nickname, bin nämlich hier auch schon eine Weile dabei) beantwortet habe.

-
Mitleid schrieb:
C-Vorkenntnisse sollen negativ für das Erlernen von c++ sein und einem sogar jahrelang an vernünftiger c++-Programmierung hindern.
Das ist dramatisiert.

Ich habe schon Leute gesehen, denen hat das wirklich was geholfen. Bei der Mehrzahl war das allerdings nicht der Fall. Und weil es der Mehrzahl eher geschadet hat, weil sie danach die Sprachen nicht sauber getrennt haben, mache ich meine Empfehlungen so, wie es der Mehrzahl helfen tut.Mitleid schrieb:
Ich sagte doch: Nicht albern werden.

Dann sage ich nur ebenfalls

Mitleid schrieb:
Aber, es stimmt. Ich habe einen Vorsprung vor dir aus dem einfachen Grund weil ich schon länger dabei bin. Und manchmal hast du dich auch schon artig bedankt als ich dir die eine oder andere Frage (unter einem anderen nickname, bin nämlich hier auch schon eine Weile dabei) beantwortet habe.

1. Weil du schon länger programmierst, hast du in allen Bereich einen Vorsprung? Wo ist da die Logik? Zudem, die Zeit sagt überhaupt nichts über die Erfahrung eines Programmierers aus. Ich habe schon Leute getroffen, die sind so lange am Programmieren und haben weniger Wissen als gewisse Anfänger hier. Und die sind schon lange beruflich am Programmieren.
Gerade auch zum Teil ältere Leute, welche einfach nicht mehr mitkommen und immer noch an ihren alten Ideen festhängen
2. Es geht hier nicht mal unbedingt um das Programmieren. Es geht hier um Anfängerhilfe. Ich persönlich schöpfe hier meiner Erfahrungen aus:
- Meine Anfänge (ich habe mit so einem Mischmasch angefangen), allerdings weil ich kein gutes C++ Buch hatte.
- Universität und Mitstudenten, die haben zuerst C beigebracht bekommen und später sehr einfaches C++. Grauenhaft was dabei herauskommt.
- Hilfeforen (Mehrzahl). Hier bekommen die Leute noch kompetente Hilfe, wie zum Beispiel von dir (;)), aber in anderen Foren zum Teil ... ich glaube nicht an Gott, kann aber wirklich nur sagen: Oh mein Gott.
- Ein, zwei Kollegen, welche auch das Problem "durchlebt" haben.3. Man sollte Unregistrierte sperren
:p
Oder: ANGSTHASE, ZEIG DICH!
Grüssli
-
Mitleid schrieb:
unskilled schrieb:
Das Forum hier als Indiz für die Häufigkeit hierfür reicht dir wohl nich?
Häufigkeit von was? printf()-Funktionen in HalloWelt-Applikationen?
Wie wärs mit:
- printf + (s)scanf
- char* gefrickel
- keine oder sehr eingeschränkte kenntnisse über die std-lib (in C musste man sich das selbst schreiben, also schreibt man es in C++ auch wieder selbst)
- falsche header(!)
- 100de von zeilen in einer funktionen
- malloc, realloc und free - auch gern mal mit new/delete gemischt...
- den rückgabewert von new auf 0 prüfen
- makros statt konstanten - ober überhaupt oft makros, wo keine nötig wären...
- C mit Klassen -> vor allem ist der konstruktor für die meisten ein Fremdwort...
- templates in *.cpp und *.h trennen
- idR. sind exceptions ein fremdwort, weil man doch auch alles über rückgabewerte machen kann - das ging auch zuvor immer
- memcpy, ... auf instanzen von klassen
- ...
und dann kommen zusätzlich dazu noch die üblichen Anfänger-Fehler hinzu...
bb
-
Dravere schrieb:
3. Man sollte Unregistrierte sperren
:pDann gibts keine süßen Trolle mehr

Ich bin eig. auf beiden Seiten.
C kann als Einsprung für C++ nicht mal sooo Schaden. Man versteht Funktionen, wie man mit ihnen um zu gehen hat, ein wenig was über Strukturen, Pointern, Variablen und ein wenig Programmierverständnis. Dann aber, finde ich, sollte man auf C++ umsteigen. Denn sollte man damit zu lange programmieren und vorallem zu dem Punkt kommen, wofür C bekannt ist, wirds kritisch und man eignet sich diesen Stil an, der für C++ ein Chaos ist und einfach nur schlecht ist.
-
FreakY<3Cpp schrieb:
C kann als Einsprung für C++ nicht mal sooo Schaden. Man versteht Funktionen, wie man mit ihnen um zu gehen hat, ein wenig was über Strukturen, Pointern, Variablen und ein wenig Programmierverständnis.
Das kann man auch mit C++ ohne die C-Bibliotheken etc. zu verwenden. Und ich empfinde es auch nicht als Nachteil bereits die string-Klasse anfangs zu verwenden (Ohne darauf einzugehen das es sich um eine Klasse handelt), und dann zu zeigen was hier eigentlich passiert (Sprich: von mir aus auch char*).
-
asc schrieb:
...
Ja na klar, dass ist mir bewusst. Aber ich habe mich jetzt speziell zu dem Threadschreiber geäußert. Er meinte, es gäbe nur Kurse für C. Würde er sie machen und wollte dann C++ machen, wäre es natürlich nicht groß von Nachteil. Natürlich würde es noch sinnvoller sein, wenn er sich gleich ein C++ bestellt. Aber in dem Kurs, wenn der Lehrer nicht ein totaler Trottel ist, kann er vielleicht noch ein wenig Hintergrundwissen bekommen, welches nicht in jedem C++ Buch steht, sofern der Lehrer wie ich grad meinte was drauf hat und schon länger im Geschäft ist.
-
Man kann zunächst C und später C++ lernen ohne beide Sprachen zu vermischen. Die Gefahr zu sehr im C-Stil zu programmieren, wenn man zuerst mit C programmiert hat, ist allerdings groß. C als Teilmenge von C++ gestattet es dem Programmierer im C-Stil zu programmieren ohne das der Compiler sich beschwert. So kann man alte Angewohnheiten nur schwer ablegen.
Umgekehrt ist das nicht möglich. Wer zuerst C++ gelernt hat und dann seine Kenntnisse in C vertieft muss auf C zurückgreifen, weil ein reiner C-Compiler nunmal keine C++ Syntax anerkennt.
C++ ist eine sehr komplexe Sprache, C ist eine verhältnismässig einfache Sprache. Die Einfachheit bezieht sich auf die Sprache, nicht auf die Programme die man mit C erstellen kann.
Ich empfehle ebenfalls sich zunächst mit C++ auseinanderzusetzen. "C++ Lernen und professionell anwenden" eignet sich dafür sehr gut, weil es konsequent in ANSI99 C++ lehrt und mit über 900 Seiten sehr umfassend ist. Eine zusätzliche STL Referenz ist ratsam.
Anschließend kann man sich ein knappes C-Buch raussuchen, der Umstieg fällt dann nicht allzu schwer.
Mit C++ ist man ohnehin eine ganze Weile beschäftigt. Und wenn man schließlich glaubt man kann in C++ programmieren, hauen einem Bücher von Scott Meyers oder Sutter nochmal einen Knüppel zwischen die Beine und man kommt sich vor, wie ein blutiger Anfänger.
