C++ lernen anhand von C?



  • wenn du die C-Kurse irgendwie als gute note noch einbringen kannst, dann staube sie ab. aber nimm nicht alles so ernst und wisse, dass das ziel die objektorientierte programmierung ist.
    http://www.juergendankert.de/



  • bgdnoy schrieb:

    Wäre mal interessant zu wissen, warum auf deiner Uni kein C++ gelehrt wird. Schon gefragt?

    Keine Ahnung, in einem Kurs wird entweder Ruby oder Java gelernt, in dem anderen Kursen C. C++ leider gar nichts und ich überleg' halt, ob ich den C-Kurs einfach noch mitnehmen soll. Aber wenn das beim Erlernen von C++ eher ein Nachteil ist macht's vielleicht keinen Sinn. Außerdem würde ich dann schon eine dritte Programmiersprache anfangen und kann keine bisher wirklich gut.
    Ruby halbwegs, C++ gerade erst angefangen...
    Werd' mich sonst wohl durch C++ Bücher schlagen müssen, aber hätte schon gerne Unterricht gehabt...



  • C zu können ist selbstverständlich kein Nachteil, wenn du c++ lernen willst. Alle hier geäußerten Bedenken halte ich für Märchen. Es wird dir nicht schaden mit verschiedenen Paradigmen in Berührung zu kommen.

    Ein guter objektorientierter Entwurf ist übrigens unabhängig von der jeweiligen Programmiersprache und ein Wissenschaft für sich. D.h. es könnte dir passieren, dass du auf c verzichtest aber trotzdem grausame objektorientierte Konzepte entwirfst.

    Ich schließe mich daher Volkards Rat an. Wenn du die Zeit und die Lust hast C zu lernen, dann mach es. C selbst ist ja auch recht häufig im Einsatz, daher könnte es dir nochmal nützlich sein, obwohl solche UNI-Kurse meist nur Grundlagen vermitteln.



  • Mitleid schrieb:

    C zu können ist selbstverständlich kein Nachteil, wenn du c++ lernen willst.

    würde ich nicht sagen. es hängt echt vom schüler ab. manche werden von C und einer gewissen frickelsubkultur dermaßen verdorben, daß sie mehr als ein ganzes leben brauchen würden, um produktiv zu werden. anderen wiederum würde eine deftige portion C absolut guttun, um von ihrem bauklötzchenprogrammieren loszukommen und endlich produktiv zu werden. höhö.

    Alle hier geäußerten Bedenken halte ich für Märchen.

    ich leider nicht. eher sind alle bedenken berechtigt und durch viele fälle belegt. 😞

    Es wird dir nicht schaden mit verschiedenen Paradigmen in Berührung zu kommen.

    👍 👍

    Ein guter objektorientierter Entwurf ist übrigens unabhängig von der jeweiligen Programmiersprache und ein Wissenschaft für sich.

    naja, auch da habe ich meine zweifel. unter mißachtung der zielsprache kann man stets sehr gute entwürfe bauen, aber meist werden sie noch ein klein bißchen besser, wenn man an die sprache und die programmierer denkt.

    D.h. es könnte dir passieren, dass du auf c verzichtest aber trotzdem grausame objektorientierte Konzepte entwirfst.
    

    jup. da gibt es wohl millionen beispiele. hihi.

    die gute beratung, wer in welcher reihenfolge welche programiersprachen lernen sollte, ist eine wissenschaft für sich und kann gar nicht vonstatten gehen, ohne den schüler gut zu kennen. wir können Barcelona gegenüber nur ratschläge geben, die vorwiegend auf kristallkugellesen wie wortlaut-der-frage, zeichensetzung, nettigkeit, und so basieren und hoffen, daß er in ein paar jahren in diesem thread berichtet, was er gemacht hat und was er meint, wäre für ihn optimal gewesen, damit wir die kristallkugeln weiter justieren können.



  • Das sehe ich etwas anders. Wenn ich mir überlege, was man alles durcharbeiten muss (seien es Themen zur Programmiersprache selbst oder zu Modellierung, Softwareentwicklung, Projektplanung,usw. ...) um von sich behaupten zu können man ist produktiv oder man hat begriffen warum ein Entwurf gut oder schlecht ist, dann kann mir doch keiner ernsthaft erzählen wollen, dass 2 Semester C irgendwie einen schlechten Einfluss auf das alles haben.

    Ich bitte euch Leute, das sind doch Ammenmärchen. Das seht ihr wahrscheinlich bei C-Programmierern, die erst mit c++ anfangen oder sich dem Thema eigentlich verweigern wollen. Wer als C-Programmierer aber ernsthaft an das Thema c++ und OOP geht hat keinen größeren Aufwand, nur weil er C kann. Das ist doch Quatsch.



  • volkard schrieb:

    anderen wiederum würde eine deftige portion C absolut guttun, um von ihrem bauklötzchenprogrammieren loszukommen und endlich produktiv zu werden. höhö.

    made my day 😃



  • Hey! Ich programmiere auch Bauklötzchen! Was spricht denn dagegen? 😞 😞



  • Mitleid schrieb:

    C zu können ist selbstverständlich kein Nachteil, wenn du c++ lernen willst. Alle hier geäußerten Bedenken halte ich für Märchen. Es wird dir nicht schaden mit verschiedenen Paradigmen in Berührung zu kommen.

    Es ist kein Märchen, wobei dies von Fall zu Fall unterschiedlich sein kann. Wahr ist jedenfalls, das ich in der freien Wildbahn häufig auf "C++"-Entwickler gestoßen bin die zu stark auf C fixiert waren (Die berühmten C-mit-Klassen Programmierer, die gerne mit solchen Antipattern wie "Gottklassen" usw. arbeiten...).

    Nichts gegen C-Kenntnisse, aber es bleibt einfach die Gefahr dort stehen zu bleiben (Und C programmiert man nunmal anders als C++). Eine andere Erkenntnis war die, das wenn man prozedurale Programmierung gewöhnt ist, der Umstieg auf die OO-Programmierung teilweise sehr schwierig ist (Selbst erlebt, an anderen festgestellt, und zudem Neulinge gesehen die gleich mit OO angefangen haben und damit kein Problem hatten).

    Und die Generische Programmierung ist dann noch ein weiterer Punkt...

    Mitleid schrieb:

    Ein guter objektorientierter Entwurf ist übrigens unabhängig von der jeweiligen Programmiersprache...

    Das sehe ich nicht so. Du kannst zwar gewisse Konzepte der OO auch in nicht-OO Sprachen umsetzen, die Sprachunterstützung erleichtert dies aber ungemein.

    Mitleid schrieb:

    D.h. es könnte dir passieren, dass du auf c verzichtest aber trotzdem grausame objektorientierte Konzepte entwirfst.

    Das gilt aber für jedes Konzept. man kann auch genauso leicht grottenschlechte prozedurale Programme schreiben.



  • Mitleid schrieb:

    Ein guter objektorientierter Entwurf ist übrigens unabhängig von der jeweiligen Programmiersprache...

    Da stimme ich dir voll und ganz zu. Es gibt da nur ein Problem (was vermutlich das ist worauf asc und volkard hinaus wollten): Der beste objektorientierte Entwurf ist und bleibt genau das: Ein Entwurf, d.h. ein theoretisches Modell. Da es nicht "Die Perfekte Objektorientierte Programmiersprache" gibt, wird die Umsetzung von der Sprache abhängig sein und vom Entwurf abweichen. Dabei gibts zwei Arten von Abweichungen: zum Einen die erzwungenen Abweichungen, wo der Sprache die Mittel fehlen, um Teile des objektorientierten Entwurfs umzusetzen. Zum anderen die optionalen Abweichungen, wo die Sprache Mittel aus anderen Berechnungsmodellen (d.h. Programmierparadigmen) hat, so dass Teile des objektorientierten Entwurfs durch besser geeignete deklarative, funktionale, generische oder sonstwie geartete Entwurfsmuster ersetzt werden können.



  • Mein Hauptbedenken ist eigentlich, mit C schon die dritte Programmiersprache anzufangen, aber noch keine bis zum "Ende" durchgearbeitet zu haben... aber ich schau' mal, vielleicht fang' ich ja auch noch C an :p



  • Barcelona schrieb:

    Mein Hauptbedenken ist eigentlich, mit C schon die dritte Programmiersprache anzufangen, aber noch keine bis zum "Ende" durchgearbeitet zu haben... aber ich schau' mal, vielleicht fang' ich ja auch noch C an :p

    es gibt kein "ende". bleibe einfach offen, und nimm mit, was dich interessiert.



  • asc schrieb:

    Mitleid schrieb:

    C zu können ist selbstverständlich kein Nachteil, wenn du c++ lernen willst. Alle hier geäußerten Bedenken halte ich für Märchen. Es wird dir nicht schaden mit verschiedenen Paradigmen in Berührung zu kommen.

    Es ist kein Märchen, wobei dies von Fall zu Fall unterschiedlich sein kann. Wahr ist jedenfalls, das ich in der freien Wildbahn häufig auf "C++"-Entwickler gestoßen bin die zu stark auf C fixiert waren (Die berühmten C-mit-Klassen Programmierer, die gerne mit solchen Antipattern wie "Gottklassen" usw. arbeiten...).

    Kannst du belegen, dass die Leute ohne C-Kenntnisse besseres C++ gemacht hätten? Ja, eine rhetorische Frage.



  • Tim schrieb:

    asc schrieb:

    Es ist kein Märchen, wobei dies von Fall zu Fall unterschiedlich sein kann. Wahr ist jedenfalls, das ich in der freien Wildbahn häufig auf "C++"-Entwickler gestoßen bin die zu stark auf C fixiert waren (Die berühmten C-mit-Klassen Programmierer, die gerne mit solchen Antipattern wie "Gottklassen" usw. arbeiten...).

    Kannst du belegen, dass die Leute ohne C-Kenntnisse besseres C++ gemacht hätten? Ja, eine rhetorische Frage.

    Ich kann nicht belegen das diese Leute ohne C-Kenntnisse bessere C++ Entwickler wären. Aber die Codequalität derer, die C++ ohne C-Kenntnisse gelernt hatten (und sich wenn erst nachträglich gewisse C-Kenntnisse angeeignet haben) empfand ich in der Regel als durchweg besser.

    Wobei dazu auch zu sagen ist, das die Projekte an denen ich gearbeitet habe allesamt mittlere bis größere Projekte in der Anwendungsentwicklung waren (Alles Szenarien in denen ich C für eher ungeeignet halte, und tendenziell eher zu Hochsprachen greifen würde).

    cu André



  • Mitleid schrieb:

    C zu können ist selbstverständlich kein Nachteil, wenn du c++ lernen willst.

    SelbstverständlichTM ist es einer. Die malloc -, new char[]- , strcpy - und memcpy -Helden hier im Forum sind größtenteils deswegen miese C++-Programmierer oder auf dem Weg dazu, weil sie sich an Altlasten aus C klammern, die in C++ leider immer noch vorhanden sind. Da hört C++ im wesentlichen bei C89 plus 3 neue Keywords plus neue Scope-Regeln auf.

    Ich habe im Job viele Leute erlebt, die sich mit voller Überzeugung als C++-Experten bezeichneten, aber tatsächlich astreines C mit class und massenhaft new/delete programmiert und noch nie was von string , vector oder map gehört haben. Die konnten halt C und haben nie mehr den Sprung zu C++ geschafft. Das muss nicht bei jedem so sein, die Gefahr ist aber groß.

    Wenn man C++ lernen will, dann sollte man auch C++ lernen. Mit C anzufangen ist ein Umweg, der oft mehr Schaden anrichtet als er Vorteile bringt.



  • Registrierter Troll schrieb:

    Falls du beide Sprachen können willst, machs lieber anders rum: lern erst ordentliches C++ und dann C.

    Es gibt keinen Grund C zu lernen wenn man schon C++ kann.



  • C++Fan 2009 schrieb:

    Registrierter Troll schrieb:

    Falls du beide Sprachen können willst, machs lieber anders rum: lern erst ordentliches C++ und dann C.

    Es gibt keinen Grund C zu lernen wenn man schon C++ kann.

    Sagen wir: du kannst dir keinen Grund vorstellen. Es mag durchaus Gründe geben.



  • C++Fan 2009 schrieb:

    Registrierter Troll schrieb:

    Falls du beide Sprachen können willst, machs lieber anders rum: lern erst ordentliches C++ und dann C.

    Es gibt keinen Grund C zu lernen wenn man schon C++ kann.

    Sicher gibt es den. Z.B. einfach, weil man in ein Projekt kommt, in dem man C verwenden muss. Hängt alles immer vom Anwendungsgebiet ab...



  • C++Fan 2009 schrieb:

    Es gibt keinen Grund C zu lernen wenn man schon C++ kann.

    Quatsch. Die Welt besteht nicht nur aus Hobby-Programmierern, die sich ihre Projekte, Sprachen und Tools je nach persönlichem Geschmack selbst aussuchen können.



  • Registrierter Troll schrieb:

    C++Fan 2009 schrieb:

    Es gibt keinen Grund C zu lernen wenn man schon C++ kann.

    Quatsch. Die Welt besteht nicht nur aus Hobby-Programmierern, die sich ihre Projekte, Sprachen und Tools je nach persönlichem Geschmack selbst aussuchen können.

    Aber ein Profi kann eine Sprache auch on-demand lernen! :p



  • So Gründe wie "ich habe im Job viele Leute erlebt" oder "in der freien Wildbahn häufig auf ... gestoßen ... die ..." sind doch wenig überzeugend.

    Ihr müsst euch einfach überlegen, was alles an Literatur und Arbeit dazugehört um c++ einigermaßen zu beherrschen. Wir reden da von tausenden Seiten die durchgeackert werden müssen. Und selbst dann steht man, sobald man einen größeren eigenen Entwurf hinlegen muss, relativ hilflos da. Dann kommen nämlich noch Bücher zu Objektmodellierung, Entwurfsmuster, Software-Technik usw. usw. dazu. Und dann noch die Beschäftigung mit individuellen Geschichten, seien es Frameworks, Themen wie verteilte Anwendungen, Sicherheits-Themen, usw.

    Die Arbeit muss man halt zu leisten bereit sein. Und dann noch die Praxis, die nötig ist, bis man wirklich von sich behaupten kann, man hat den Durchblick und liefert gute Qualität.

    Deshalb ist es für mich kein Argument zu sagen man sollte besser kein C lernen, nur weil auf dem Anfängerforum hier Leute noch char-Arrays statt std::string verwenden und weil jeder irgendwelche Leute kennt, die nicht bereit waren die nötige Arbeit zu leisten um sich zu entwickeln. Denen standen mit Sicherheit nicht ihre C-Kenntnisse im Weg.

    pumuckl schrieb:

    Der beste objektorientierte Entwurf ist und bleibt genau das: Ein Entwurf, d.h. ein theoretisches Modell.

    Der Weg von einem guten Entwurf in einer Modellierungssprache zu lauffähigem Code ist manchmal nur ein Mausklick. Das wird sich in Zukunft mit Sicherheit noch verstärken. Unsere indischen Freunde kosten halt auch viel Geld. 😉

    asc schrieb:

    Das sehe ich nicht so. Du kannst zwar gewisse Konzepte der OO auch in nicht-OO Sprachen umsetzen, die Sprachunterstützung erleichtert dies aber ungemein.

    So habe ich es nicht gemeint. Ich hätte vielleicht "unabhängig von der jeweiligen objektorientierten Sprache" schreiben sollen. Was ich meinte ist, selbst wenn man std::string statt char-Arrays verwendet, kann einem ein Entwurf trotzdem um die Ohren fliegen, weil einfach mehr dazugehört als konsequent Objekte zu verwenden. Und die Techniken, die man erlernen muss um da etwas vernünftiges hinzubekommen sind nicht abhängig von einer bestimmten Programmiersprache.

    Registrierter Troll schrieb:

    Wenn man C++ lernen will, dann sollte man auch C++ lernen. Mit C anzufangen ist ein Umweg, der oft mehr Schaden anrichtet als er Vorteile bringt.

    Was zu beweisen wäre. Ich kann mir nicht vorstellen, dass das stimmt. Argumente siehe oben in diesem Post.


Anmelden zum Antworten